+
`
+ },
+ select : (modalID, selectID, title, label, options) => {
+ return `
+
+
+
+
+
+ ${label}
+
+ ${options}
+
+
+
+
+
+
`
}
}
@@ -102,6 +181,18 @@ module.exports = {
return templates.confirmation(modalID, title)
},
+ moveToTrashConfirmHtml : (fileType) => {
+ let modalID = "moveToTrashConfirmModal"
+ let title = `Move this ${fileType} to trash?`
+
+ return templates.confirmation(modalID, title)
+ },
+ emptyTrashConfirmHtml : () => {
+ let modalID = "emptyTrashConfirmModal"
+ let title = "Are you sure you want to permanently erase the items in the Trash?"
+
+ return templates.confirmation(modalID, title)
+ },
operationInfoModalHtml : (page) => {
let modalID = "operationInfoModal"
let title = "Help"
@@ -109,10 +200,85 @@ module.exports = {
return templates.message(modalID, title, message)
},
+ newProjectModalHtml : () => {
+ let modalID = "newProjectModal"
+ let inputID = "projectNameInput"
+ let title = "New Project"
+ let label = "Project Name"
+ let value = ""
+
+ return templates.input(modalID, inputID, title, label, value)
+ },
+ newWorkflowGroupModalHtml : () => {
+ let modalID = "newWorkflowGroupModal"
+ let inputID = "workflowGroupNameInput"
+ let title = "New Workflow Group"
+ let label = "Workflow Group Name"
+ let value = ""
+
+ return templates.input(modalID, inputID, title, label, value)
+ },
+ newProjectModelHtml : () => {
+ let modalID = "newProjectModelModal"
+ let inputID = "modelPathInput"
+ let title = "Add Existing Model to Project"
+ let label = "Path to the Model"
+ let value = ""
+
+ return templates.input(modalID, inputID, title, label, value)
+ },
+ addExistingWorkflowToProjectHtml : () => {
+ let modalID = "newProjectWorkflowModal"
+ let inputID = "workflowPathInput"
+ let title = "Add Existing Workflow to Workflow Group"
+ let label = "Path to the workflow"
+ let value = ""
+
+ return templates.input(modalID, inputID, title, label, value)
+ },
+ addExistingWorkflowToProjectSuccessHtml : (message) => {
+ let modalID = "newProjectModelSuccessModal"
+ let title = "Success!"
+
+ return templates.message(modalID, title, message)
+ },
+ addExistingWorkflowToProjectErrorHtml : (title, message) => {
+ let modalID = "newProjectModelErrorModal"
+
+ return templates.message(modalID, title, message)
+ },
+ newProjectModelSuccessHtml : (message) => {
+ let modalID = "newProjectModelSuccessModal"
+ let title = "Success!"
+
+ return templates.message(modalID, title, message)
+ },
+ newProjectModelErrorHtml : (title, message) => {
+ let modalID = "newProjectModelErrorModal"
+
+ return templates.message(modalID, title, message)
+ },
+ newProjectOrWorkflowGroupErrorHtml : (title, error) => {
+ let modalID = "newProjectOrWorkflowGroupModal"
+
+ return templates.message(modalID, title, error)
+ },
+ newWorkflowGroupSuccessHtml: (message) => {
+ let modalID = "newWorkflowGroupSuccessModal"
+ let title = "Success!"
+
+ return templates.message(modalID, title, message)
+ },
+ newProjectModelWarningHtml : (message) => {
+ let modalID = "newProjectModelWarningModal"
+ let title = "Warnings"
+
+ return templates.confirmation_with_message(modalID, title, message)
+ },
renderCreateModalHtml : (isModel, isSpatial) => {
var title = 'Directory';
if(isModel){
- title = isSpatial ? 'Spatial Model' : 'Non-Spatial Model';
+ title = isSpatial ? 'Spatial Model' : 'Model';
}
title = "New " + title
let modalID = "newModalModel"
@@ -137,7 +303,13 @@ module.exports = {
},
uploadFileErrorsHtml : (file, type, statusMessage, errors) => {
let modalID = "sbmlToModelModal"
- let title = `Errors uploading ${file} as a ${type} file`
+ let types = {"mdl":"model file", "sbml":"sbml file", "smdl":"spatial model file", "zip":"zip archive"}
+ if(type === "file") {
+ type = types[file.split('.').pop()]
+ }else{
+ type += " file"
+ }
+ let title = `Errors uploading ${file} as a ${type}`
for(var i = 0; i < errors.length; i++) {
errors[i] = "
Error : " + errors[i]
}
@@ -163,13 +335,23 @@ module.exports = {
return templates.message(modalID, title, message)
},
+ wkflModelPathErrorHtml : () => {
+ let modalID = "wkflModelPathErrorModal"
+ let title = "Premission Denied"
+ let message = "Models for workflow in a project must also be in the same project."
+
+ return templates.message(modalID, title, message)
+ },
annotationModalHtml : (type, name, annotation) => {
let modalID = `${type}AnnotationModal`
let inputID = `${type}AnnotationInput`
let title = `Annotation for ${name}`
let label = "Annotation:"
+ if(!annotation) {
+ annotation = ""
+ }
- return templates.input(modalID, inputID, title, label, annotation)
+ return templates.input_long(modalID, inputID, title, label, annotation)
},
modelSaveErrorHtml : (title, error) => {
let modalID = "modelSaveErrorModal"
@@ -181,6 +363,48 @@ module.exports = {
return templates.message(modalID, title, error)
},
+ newProjectWorkflowHtml : (label, options) => {
+ let modalID = "newProjectWorkflowModal"
+ let selectID = "select"
+ let title = "New Workflow"
+ options = options.map(function (name) {
+ return `
${name} `
+ })
+ options = options.join(" ")
+
+ return templates.select(modalID, selectID, title, label, options)
+ },
+ projectExportSuccessHtml : (fileType, message) => {
+ let modalID = "projectExportSuccessModal"
+ let title = `Successfully Exported the ${fileType}`
+
+ return templates.message(modalID, title, message)
+ },
+ projectExportErrorHtml : (title, message) => {
+ let modalID = "projectExportErrorModal"
+
+ return templates.message(modalID, title, message)
+ },
+ existingCreatorConfirmationHtml : (title) => {
+ let modalID = "existingCreatorConfirmationModal"
+
+ return templates.confirmation(modalID, title)
+ },
+ addMetaDataHtml: (title) => {
+ let modalID = "addMetaDataModal"
+
+ return templates.confirmation(modalID, title)
+ },
+ noModelsMessageHtml: (title, message) => {
+ let modalID = "noModelsMessageModal"
+
+ return templates.message(modalID, title, message)
+ },
+ noWorkflowGroupMessageHtml: (title, message) => {
+ let modalID = "noWorkflowGroupMessageModal"
+
+ return templates.message(modalID, title, message)
+ },
renderDefaultModeModalHtml : () => {
let concentrationDesciption = `Species will only be represented using continuous (floating point) values.`;
let populationDescription = `Population - Species will only be represented using discrete (integer count) values.`;
diff --git a/client/models/creator.js b/client/models/creator.js
new file mode 100644
index 0000000000..48b899cf16
--- /dev/null
+++ b/client/models/creator.js
@@ -0,0 +1,14 @@
+//models
+var State = require('ampersand-state');
+
+module.exports = State.extend({
+ props: {
+ fname: 'string',
+ lname: 'string',
+ email: 'string',
+ organization: 'string'
+ },
+ initialize: function(attrs, options) {
+ State.prototype.initialize.apply(this, arguments)
+ }
+});
\ No newline at end of file
diff --git a/client/models/model.js b/client/models/model.js
index e3d47d3a6b..afa1640508 100644
--- a/client/models/model.js
+++ b/client/models/model.js
@@ -21,7 +21,8 @@ module.exports = Model.extend({
props: {
is_spatial: 'boolean',
defaultID: 'number',
- defaultMode: 'string'
+ defaultMode: 'string',
+ annotation: 'string'
},
collections: {
species: Species,
@@ -58,14 +59,11 @@ module.exports = Model.extend({
saveModel: function () {
var self = this;
this.species.map(function (specie) {
- self.species.trigger('update-species', specie.compID, specie, false);
+ self.species.trigger('update-species', specie.compID, specie, false, false);
});
this.parameters.map(function (parameter) {
self.parameters.trigger('update-parameters', parameter.compID, parameter);
});
- if(!isPreview){
- this.simulationSettings.letUsChooseForUse()
- }
this.save();
},
});
diff --git a/client/models/models.js b/client/models/models.js
index e067014705..2fe24c9801 100644
--- a/client/models/models.js
+++ b/client/models/models.js
@@ -4,12 +4,5 @@ var Model = require('./model');
var path = require('path');
module.exports = RestCollection.extend({
- model: Model,
- url: function () {
- return path.join(
- app.getApiPath(),
- 'models',
- String(app.me.name)
- )
- }
+ model: Model
});
diff --git a/client/models/parameter.js b/client/models/parameter.js
index 2a008962bd..1db4e83019 100644
--- a/client/models/parameter.js
+++ b/client/models/parameter.js
@@ -6,7 +6,7 @@ module.exports = State.extend({
props: {
compID: 'number',
name: 'string',
- expression: 'string',
+ expression: 'any',
annotation: 'string'
},
session: {
diff --git a/client/models/parameters.js b/client/models/parameters.js
index ba2655bc58..c8e48ac625 100644
--- a/client/models/parameters.js
+++ b/client/models/parameters.js
@@ -12,7 +12,7 @@ module.exports = Collection.extend({
var parameter = this.add({
compID: id,
name: name,
- expression: '0.0',
+ expression: 0.0,
annotation: "",
});
},
diff --git a/client/models/plots.js b/client/models/plots.js
new file mode 100644
index 0000000000..3f7e990f71
--- /dev/null
+++ b/client/models/plots.js
@@ -0,0 +1,13 @@
+//models
+var State = require('ampersand-state');
+
+module.exports = State.extend({
+ props: {
+ key: 'string',
+ title: 'string',
+ xaxis: 'string',
+ yaxis: 'string',
+ stamp: 'number',
+ species: 'object'
+ }
+});
\ No newline at end of file
diff --git a/client/models/project.js b/client/models/project.js
new file mode 100644
index 0000000000..329adc2757
--- /dev/null
+++ b/client/models/project.js
@@ -0,0 +1,24 @@
+var path = require('path');
+//Support Files
+var app = require('../app.js');
+//Collections
+var ModelsCollection = require('./models');
+var WorkflowGroupsCollection = require('./workflow-groups');
+//Models
+var Model = require('ampersand-model');
+
+module.exports = Model.extend({
+ url: function () {
+ return path.join(app.getApiPath(), "project/load-project")+"?path="+this.directory;
+ },
+ collections: {
+ models: ModelsCollection,
+ workflowGroups: WorkflowGroupsCollection
+ },
+ session: {
+ directory: 'string',
+ parentDir: 'string',
+ plot: 'object',
+ annotation: 'string'
+ }
+})
\ No newline at end of file
diff --git a/client/models/workflow-group.js b/client/models/workflow-group.js
new file mode 100644
index 0000000000..ce59a2cf68
--- /dev/null
+++ b/client/models/workflow-group.js
@@ -0,0 +1,13 @@
+//collections
+var WorkflowCollection = require('./workflows');
+//models
+var State = require('ampersand-state');
+
+module.exports = State.extend({
+ collections: {
+ workflows: WorkflowCollection
+ },
+ session: {
+ name: 'string'
+ }
+});
\ No newline at end of file
diff --git a/client/models/workflow-groups.js b/client/models/workflow-groups.js
new file mode 100644
index 0000000000..134e8e561c
--- /dev/null
+++ b/client/models/workflow-groups.js
@@ -0,0 +1,8 @@
+//collections
+var Collection = require('ampersand-collection');
+//models
+var WorkflowGroup = require('./workflow-group');
+
+module.exports = Collection.extend({
+ model: WorkflowGroup
+});
\ No newline at end of file
diff --git a/client/models/workflow.js b/client/models/workflow.js
new file mode 100644
index 0000000000..b3c8749d06
--- /dev/null
+++ b/client/models/workflow.js
@@ -0,0 +1,16 @@
+//collections
+//models
+var State = require('ampersand-state');
+
+module.exports = State.extend({
+ props: {
+ path: 'string',
+ annotation: 'string',
+ outputs: 'object',
+ type: 'string'
+ },
+ session: {
+ name: 'string',
+ status: 'string'
+ }
+});
\ No newline at end of file
diff --git a/client/models/workflows.js b/client/models/workflows.js
new file mode 100644
index 0000000000..d6aa302d5d
--- /dev/null
+++ b/client/models/workflows.js
@@ -0,0 +1,8 @@
+//collections
+var Collection = require('ampersand-collection');
+//models
+var Workflow = require('./workflow');
+
+module.exports = Collection.extend({
+ model: Workflow
+});
\ No newline at end of file
diff --git a/client/pages/file-browser.js b/client/pages/file-browser.js
index 881e53ce7b..965bac54cf 100644
--- a/client/pages/file-browser.js
+++ b/client/pages/file-browser.js
@@ -13,116 +13,6 @@ let template = require('../templates/pages/fileBrowser.pug');
import initPage from './page.js';
-let ajaxData = {
- "url" : function (node) {
- if(node.parent === null){
- return path.join(app.getApiPath(), "file/browser-list")+"?path=none"
- }
- return path.join(app.getApiPath(), "file/browser-list")+"?path="+ node.original._path
- },
- "dataType" : "json",
- "data" : function (node) {
- return { 'id' : node.id}
- },
-}
-
-let treeSettings = {
- 'plugins': [
- 'types',
- 'wholerow',
- 'changed',
- 'contextmenu',
- 'dnd',
- ],
- 'core': {
- 'multiple' : false,
- 'animation': 0,
- 'check_callback': function (op, node, par, pos, more) {
- if(op === 'move_node' && node && node.type && node.type === "workflow" && node.original && node.original._status && node.original._status === "running"){
- return false
- }
- if(op === 'move_node' && more && more.ref && more.ref.type && !(more.ref.type == 'folder' || more.ref.type == 'root')){
- return false
- }
- if(op === 'move_node' && more && more.ref && more.ref.type && more.ref.type === 'folder'){
- if(!more.ref.state.loaded){
- return false
- }
- var exists = false
- var BreakException = {}
- try{
- more.ref.children.forEach(function (child) {
- var child_node = $('#models-jstree').jstree().get_node(child)
- exists = child_node.text === node.text
- if(exists){
- throw BreakException;
- }
- })
- }catch{
- return false;
- }
- }
- if(op === 'move_node' && more && (pos != 0 || more.pos !== "i") && !more.core){
- return false
- }
- if(op === 'move_node' && more && more.core) {
- var newDir = par.type !== "root" ? par.original._path : ""
- var file = node.original._path.split('/').pop()
- var oldPath = node.original._path
- let queryStr = "?srcPath="+oldPath+"&dstPath="+path.join(newDir, file)
- var endpoint = path.join(app.getApiPath(), "file/move")+queryStr
- xhr({uri: endpoint}, function(err, response, body) {
- if(response.statusCode < 400) {
- node.original._path = path.join(newDir, file)
- }else{
- body = JSON.parse(body)
- if(par.type === 'root'){
- $('#models-jstree').jstree().refresh()
- }else{
- $('#models-jstree').jstree().refresh_node(par);
- }
- }
- });
- }
- return true
- },
- 'themes': {
- 'stripes': true,
- 'variant': 'large'
- },
- 'data': ajaxData,
- },
- 'types' : {
- 'root' : {
- "icon": "jstree-icon jstree-folder"
- },
- 'folder' : {
- "icon": "jstree-icon jstree-folder"
- },
- 'spatial' : {
- "icon": "jstree-icon jstree-file"
- },
- 'nonspatial' : {
- "icon": "jstree-icon jstree-file"
- },
- 'workflow' : {
- "icon": "jstree-icon jstree-file"
- },
- 'notebook' : {
- "icon": "jstree-icon jstree-file"
- },
- 'mesh' : {
- "icon": "jstree-icon jstree-file"
- },
- 'sbml-model' : {
- "icon": "jstree-icon jstree-file"
- },
- 'other' : {
- "icon": "jstree-icon jstree-file"
- },
- },
-}
-
let FileBrowser = PageView.extend({
pageTitle: 'StochSS | File Browser',
template: template,
@@ -130,12 +20,105 @@ let FileBrowser = PageView.extend({
'click [data-hook=refresh-jstree]' : 'refreshJSTree',
'click [data-hook=options-for-node]' : 'showContextMenuForNode',
'click [data-hook=new-directory]' : 'handleCreateDirectoryClick',
+ 'click [data-hook=new-project]' : 'handleCreateProjectClick',
'click [data-hook=new-model]' : 'handleCreateModelClick',
'click [data-hook=upload-file-btn]' : 'handleUploadFileClick',
'click [data-hook=file-browser-help]' : function () {
let modal = $(modals.operationInfoModalHtml('file-browser')).modal();
},
},
+ initialize: function (attrs, options) {
+ PageView.prototype.initialize.apply(this, arguments)
+ var self = this
+ this.root = "none"
+ this.ajaxData = {
+ "url" : function (node) {
+ if(node.parent === null){
+ return path.join(app.getApiPath(), "file/browser-list")+"?path="+self.root
+ }
+ return path.join(app.getApiPath(), "file/browser-list")+"?path="+ node.original._path
+ },
+ "dataType" : "json",
+ "data" : function (node) {
+ return { 'id' : node.id}
+ },
+ }
+ this.treeSettings = {
+ 'plugins': ['types', 'wholerow', 'changed', 'contextmenu', 'dnd'],
+ 'core': {'multiple' : false, 'animation': 0,
+ 'check_callback': function (op, node, par, pos, more) {
+ if(op === "rename_node" && self.validateName(pos, true) !== ""){
+ document.querySelector("#renameSpecialCharError").style.display = "block"
+ setTimeout(function () {
+ document.querySelector("#renameSpecialCharError").style.display = "none"
+ }, 5000)
+ return false
+ }
+ if(op === 'move_node' && node && node.type && node.type === "workflow" && node.original && node.original._status && node.original._status === "running"){
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.type && !(more.ref.type == 'folder' || more.ref.type == 'root')){
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.type && more.ref.type === 'folder'){
+ if(!more.ref.state.loaded){
+ return false
+ }
+ var exists = false
+ var BreakException = {}
+ try{
+ more.ref.children.forEach(function (child) {
+ var child_node = $('#models-jstree').jstree().get_node(child)
+ exists = child_node.text === node.text
+ if(exists){
+ throw BreakException;
+ }
+ })
+ }catch{
+ return false;
+ }
+ }
+ if(op === 'move_node' && more && (pos != 0 || more.pos !== "i") && !more.core){
+ return false
+ }
+ if(op === 'move_node' && more && more.core) {
+ var newDir = par.type !== "root" ? par.original._path : ""
+ var file = node.original._path.split('/').pop()
+ var oldPath = node.original._path
+ let queryStr = "?srcPath="+oldPath+"&dstPath="+path.join(newDir, file)
+ var endpoint = path.join(app.getApiPath(), "file/move")+queryStr
+ xhr({uri: endpoint}, function(err, response, body) {
+ if(response.statusCode < 400) {
+ node.original._path = path.join(newDir, file)
+ if(node.type === "folder") {
+ $('#models-jstree').jstree().refresh_node(node);
+ }
+ }else{
+ body = JSON.parse(body)
+ $('#models-jstree').jstree().refresh()
+ }
+ });
+ }
+ return true
+ },
+ 'themes': {'stripes': true, 'variant': 'large'},
+ 'data': this.ajaxData,
+ },
+ 'types' : {
+ 'root' : {"icon": "jstree-icon jstree-folder"},
+ 'folder' : {"icon": "jstree-icon jstree-folder"},
+ 'spatial' : {"icon": "jstree-icon jstree-file"},
+ 'nonspatial' : {"icon": "jstree-icon jstree-file"},
+ 'project' : {"icon": "jstree-icon jstree-file"},
+ 'workflow-group' : {"icon": "jstree-icon jstree-file"},
+ 'workflow' : {"icon": "jstree-icon jstree-file"},
+ 'notebook' : {"icon": "jstree-icon jstree-file"},
+ 'mesh' : {"icon": "jstree-icon jstree-file"},
+ 'sbml-model' : {"icon": "jstree-icon jstree-file"},
+ 'other' : {"icon": "jstree-icon jstree-file"},
+ },
+ }
+ },
render: function () {
var self = this;
this.nodeForContextMenu = "";
@@ -147,10 +130,14 @@ let FileBrowser = PageView.extend({
window.location.reload()
}
});
- this.setupJstree();
- setTimeout(function () {
- self.refreshInitialJSTree();
- }, 3000);
+ this.setupJstree(function () {
+ setTimeout(function () {
+ self.refreshInitialJSTree();
+ }, 3000);
+ });
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
},
refreshJSTree: function () {
this.jstreeIsLoaded = false
@@ -202,21 +189,49 @@ let FileBrowser = PageView.extend({
let uploadBtn = document.querySelector('#uploadFileModal .upload-modal-btn');
let fileInput = document.querySelector('#uploadFileModal #fileForUpload');
let input = document.querySelector('#uploadFileModal #fileNameInput');
+ let fileCharErrMsg = document.querySelector('#uploadFileModal #fileSpecCharError')
+ let nameEndErrMsg = document.querySelector('#uploadFileModal #fileNameInputEndCharError')
+ let nameCharErrMsg = document.querySelector('#uploadFileModal #fileNameInputSpecCharError')
+ let nameUsageMsg = document.querySelector('#uploadFileModal #fileNameUsageMessage')
fileInput.addEventListener('change', function (e) {
- if(fileInput.files.length){
+ let fileErr = !fileInput.files.length ? "" : self.validateName(fileInput.files[0].name)
+ let nameErr = self.validateName(input.value)
+ if(!fileInput.files.length) {
+ uploadBtn.disabled = true
+ fileCharErrMsg.style.display = 'none'
+ }else if(fileErr === "" || (Boolean(input.value) && nameErr === "")){
uploadBtn.disabled = false
+ fileCharErrMsg.style.display = 'none'
}else{
uploadBtn.disabled = true
+ fileCharErrMsg.style.display = 'block'
}
})
+ input.addEventListener("input", function (e) {
+ let fileErr = !fileInput.files.length ? "" : self.validateName(fileInput.files[0].name)
+ let nameErr = self.validateName(input.value)
+ if(!fileInput.files.length) {
+ uploadBtn.disabled = true
+ fileCharErrMsg.style.display = 'none'
+ }else if(fileErr === "" || (Boolean(input.value) && nameErr === "")){
+ uploadBtn.disabled = false
+ fileCharErrMsg.style.display = 'none'
+ }else{
+ uploadBtn.disabled = true
+ fileCharErrMsg.style.display = 'block'
+ }
+ nameCharErrMsg.style.display = nameErr === "both" || nameErr === "special" ? "block" : "none"
+ nameEndErrMsg.style.display = nameErr === "both" || nameErr === "forward" ? "block" : "none"
+ nameUsageMsg.style.display = nameErr !== "" ? "block" : "none"
+ });
uploadBtn.addEventListener('click', function (e) {
let file = fileInput.files[0]
var fileinfo = {"type":type,"name":"","path":"/"}
if(o && o.original){
fileinfo.path = o.original._path
}
- if(Boolean(input.value)){
- fileinfo.name = input.value
+ if(Boolean(input.value) && self.validateName(input.value) === ""){
+ fileinfo.name = input.value.trim()
}
let formData = new FormData()
formData.append("datafile", file)
@@ -240,6 +255,8 @@ let FileBrowser = PageView.extend({
if(resp.errors.length > 0){
let errorModal = $(modals.uploadFileErrorsHtml(file.name, type, resp.message, resp.errors)).modal();
}
+ }else{
+ let zipErrorModal = $(modals.projectExportErrorHtml(resp.Reason, resp.Message)).modal()
}
}
req.send(formData)
@@ -254,6 +271,8 @@ let FileBrowser = PageView.extend({
fileType = "spatial model"
else if(fileType === "sbml-model")
fileType = "sbml model"
+ else if(fileType === "other")
+ fileType = "file"
var self = this
if(document.querySelector('#deleteFileModal')) {
document.querySelector('#deleteFileModal').remove()
@@ -267,6 +286,12 @@ let FileBrowser = PageView.extend({
var node = $('#models-jstree').jstree().get_node(o.parent);
if(node.type === "root"){
self.refreshJSTree();
+ let actionsBtn = $(self.queryByHook("options-for-node"))
+ if(actionsBtn.text().endsWith(o.text)) {
+ actionsBtn.text("Actions")
+ actionsBtn.prop("disabled", true)
+ self.nodeForContextMenu = ""
+ }
}else{
$('#models-jstree').jstree().refresh_node(node);
}
@@ -532,7 +557,141 @@ let FileBrowser = PageView.extend({
targetPath = o.original._path
}
var endpoint = path.join(app.getBasePath(), "/files", targetPath);
- window.location.href = endpoint
+ window.open(endpoint)
+ },
+ validateName(input, rename = false) {
+ var error = ""
+ if(input.endsWith('/')) {
+ error = 'forward'
+ }
+ var invalidChars = "`~!@#$%^&*=+[{]}\"|:;'<,>?\\"
+ if(rename) {
+ invalidChars += "/"
+ }
+ for(var i = 0; i < input.length; i++) {
+ if(invalidChars.includes(input.charAt(i))) {
+ error = error === "" || error === "special" ? "special" : "both"
+ }
+ }
+ return error
+ },
+ newProjectOrWorkflowGroup: function (o, isProject) {
+ var self = this
+ if(document.querySelector("#newProjectModal")) {
+ document.querySelector("#newProjectModal").remove()
+ }
+ if(document.querySelector("#newWorkflowGroupModal")) {
+ document.querySelector("#newWorkflowGroupModal").remove()
+ }
+ var modal = ""
+ var okBtn = ""
+ var input = ""
+ if(isProject) {
+ modal = $(modals.newProjectModalHtml()).modal();
+ okBtn = document.querySelector('#newProjectModal .ok-model-btn');
+ input = document.querySelector('#newProjectModal #projectNameInput');
+ }else{
+ modal = $(modals.newWorkflowGroupModalHtml()).modal();
+ okBtn = document.querySelector('#newWorkflowGroupModal .ok-model-btn');
+ input = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInput');
+ }
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = ""
+ var charErrMsg = ""
+ if(isProject){
+ endErrMsg = document.querySelector('#newProjectModal #projectNameInputEndCharError')
+ charErrMsg = document.querySelector('#newProjectModal #projectNameInputSpecCharError')
+ }else{
+ endErrMsg = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInputEndCharError')
+ charErrMsg = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInputSpecCharError')
+ }
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== "" || input.value.trim() === ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ var parentPath = ""
+ if(o && o.original && o.original.type !== "root") {
+ parentPath = o.original._path
+ }
+ var endpoint = ""
+ if(isProject){
+ var projectName = input.value.trim() + ".proj"
+ var projectPath = path.join(parentPath, projectName)
+ endpoint = path.join(app.getApiPath(), "project/new-project")+"?path="+projectPath
+ }else{
+ var workflowGroupName = input.value.trim() + ".wkgp"
+ var workflowGroupPath = path.join(parentPath, workflowGroupName)
+ endpoint = path.join(app.getApiPath(), "project/new-workflow-group")+"?path="+workflowGroupPath
+ }
+ xhr({uri: endpoint,json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ if(isProject) {
+ if(o){//directory was created with context menu option
+ var node = $('#models-jstree').jstree().get_node(o);
+ if(node.type === "root"){
+ self.refreshJSTree()
+ }else{
+ $('#models-jstree').jstree().refresh_node(node);
+ }
+ }else{//directory was created with create directory button
+ self.refreshJSTree()
+ }
+ }else{
+ let successModal = $(modals.newWorkflowGroupSuccessHtml(body.message)).modal()
+ }
+ }else{
+ let errorModel = $(modals.newProjectOrWorkflowGroupErrorHtml(body.Reason, body.Message)).modal()
+ }
+ modal.modal('hide')
+ })
+ }
+ })
+ },
+ addExistingModel: function (o) {
+ var self = this
+ if(document.querySelector('#newProjectModelModal')){
+ document.querySelector('#newProjectModelModal').remove()
+ }
+ let modal = $(modals.newProjectModelHtml()).modal()
+ let okBtn = document.querySelector('#newProjectModelModal .ok-model-btn')
+ let input = document.querySelector('#newProjectModelModal #modelPathInput')
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newProjectModelModal #modelPathInputEndCharError')
+ var charErrMsg = document.querySelector('#newProjectModelModal #modelPathInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ let queryString = "?path="+o.original._path+"&mdlPath="+input.value.trim()
+ let endpoint = path.join(app.getApiPath(), 'project/add-existing-model') + queryString
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ let successModal = $(modals.newProjectModelSuccessHtml(body.message)).modal()
+ }else{
+ let errorModal = $(modals.newProjectModelErrorHtml(body.Reason, body.Message)).modal()
+ }
+ });
+ modal.modal('hide')
+ }
+ });
},
newModelOrDirectory: function (o, isModel, isSpatial) {
var self = this
@@ -548,19 +707,46 @@ let FileBrowser = PageView.extend({
okBtn.click();
}
});
- let modelName;
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newModalModel #modelNameInputEndCharError')
+ var charErrMsg = document.querySelector('#newModalModel #modelNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== "" || input.value.trim() === ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
okBtn.addEventListener('click', function (e) {
if (Boolean(input.value)) {
+ modal.modal('hide')
var parentPath = ""
if(o && o.original && o.original.type !== "root"){
parentPath = o.original._path
}
if(isModel) {
- let modelName = input.value + '.mdl';
- var modelPath = path.join(app.getBasePath(), app.routePrefix, 'models/edit')+"?path="+path.join(parentPath, modelName);
- window.location.href = modelPath;
+ let modelName = o && o.type === "project" ? input.value.trim().split("/").pop() + '.mdl' : input.value.trim() + '.mdl';
+ let message = modelName.split(".")[0] !== input.value.trim() ?
+ "Warning: Models are saved directly in StochSS Projects and cannot be saved to the "+input.value.trim().split("/")[0]+" directory in the project.
Your model will be saved directly in your project.
" : ""
+ let modelPath = path.join(parentPath, modelName)
+ if(message){
+ let warningModal = $(modals.newProjectModelWarningHtml(message)).modal()
+ let yesBtn = document.querySelector('#newProjectModelWarningModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {window.location.href = endpoint;})
+ }else{
+ let queryString = "?path="+modelPath+"&message="+message;
+ let existEP = path.join(app.getApiPath(), "model/exists")+queryString
+ xhr({uri: existEP, json: true}, function (err, response, body) {
+ if(body.exists) {
+ let title = "Model Already Exists"
+ let message = "A model already exists with that name"
+ let errorModel = $(modals.newProjectOrWorkflowGroupErrorHtml(title, message)).modal()
+ }else{
+ let endpoint = path.join(app.getBasePath(), "stochss/models/edit")+queryString
+ window.location.href = endpoint
+ }
+ })
+ }
}else{
- let dirName = input.value;
+ let dirName = input.value.trim();
let endpoint = path.join(app.getApiPath(), "directory/create")+"?path="+path.join(parentPath, dirName);
xhr({uri:endpoint}, function (err, response, body) {
if(response.statusCode < 400){
@@ -579,7 +765,6 @@ let FileBrowser = PageView.extend({
let errorModal = $(modals.newDirectoryErrorHtml(body.Reason, body.Message)).modal()
}
});
- modal.modal('hide')
}
}
});
@@ -587,6 +772,9 @@ let FileBrowser = PageView.extend({
handleCreateDirectoryClick: function (e) {
this.newModelOrDirectory(undefined, false, false);
},
+ handleCreateProjectClick: function (e) {
+ this.newProjectOrWorkflowGroup(undefined, true)
+ },
handleCreateModelClick: function (e) {
let isSpatial = false
this.newModelOrDirectory(undefined, true, isSpatial);
@@ -611,8 +799,15 @@ let FileBrowser = PageView.extend({
setupJstree: function () {
var self = this;
$.jstree.defaults.contextmenu.items = (o, cb) => {
+ let optionsButton = $(self.queryByHook("options-for-node"))
+ if(!self.nodeForContextMenu){
+ optionsButton.prop('disabled', false)
+ }
+ optionsButton.text("Actions for " + o.original.text)
+ self.nodeForContextMenu = o;
let nodeType = o.original.type
- let asZip = (nodeType === "workflow" || nodeType === "folder" || nodeType === "other" || nodeType === "mesh")
+ let zipTypes = ["workflow", "folder", "other", "mesh", "project", "workflow-group"]
+ let asZip = zipTypes.includes(nodeType)
// common to all type except root
let common = {
"Download" : {
@@ -639,7 +834,7 @@ let FileBrowser = PageView.extend({
},
"Duplicate" : {
"label" : (nodeType === "workflow") ? "Duplicate as new" : "Duplicate",
- "_disabled" : false,
+ "_disabled" : (nodeType === "project"),
"separator_before" : false,
"separator_after" : false,
"action" : function (data) {
@@ -681,6 +876,15 @@ let FileBrowser = PageView.extend({
self.newModelOrDirectory(o, false, false);
}
},
+ "New Project" : {
+ "label" : "New Project",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.newProjectOrWorkflowGroup(o, true)
+ }
+ },
"New_model" : {
"label" : "New Model",
"_disabled" : false,
@@ -842,6 +1046,8 @@ let FileBrowser = PageView.extend({
"action" : function (data) {
if(nodeType === "workflow"){
window.location.href = path.join(app.getBasePath(), "stochss/workflow/edit")+"?path="+o.original._path+"&type=none";
+ }else if(nodeType === "project"){
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+o.original._path
}else{
if(nodeType === "notebook") {
var identifier = "notebooks"
@@ -855,6 +1061,26 @@ let FileBrowser = PageView.extend({
}
}
}
+ let project = {
+ "Add Model" : {
+ "label" : "Add Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "submenu" : {
+ "New Model" : folder.New_model,
+ "Existing Model" : {
+ "label" : "Existing Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.addExistingModel(o)
+ }
+ }
+ }
+ }
+ }
// specific to workflows
let workflow = {
"Convert to Notebook" : {
@@ -943,6 +1169,9 @@ let FileBrowser = PageView.extend({
if (o.type === 'nonspatial') {
return $.extend(model, modelConvert, common)
}
+ if (o.type === 'project'){
+ return $.extend(open, project, common)
+ }
if (o.type === 'workflow') {
return $.extend(open, workflow, common)
}
@@ -959,7 +1188,7 @@ let FileBrowser = PageView.extend({
$(document).on('dnd_start.vakata', function (data, element, helper, event) {
$('#models-jstree').jstree().load_all()
});
- $('#models-jstree').jstree(treeSettings).bind("loaded.jstree", function (event, data) {
+ $('#models-jstree').jstree(this.treeSettings).bind("loaded.jstree", function (event, data) {
self.jstreeIsLoaded = true
}).bind("refresh.jstree", function (event, data) {
self.jstreeIsLoaded = true
@@ -991,6 +1220,8 @@ let FileBrowser = PageView.extend({
}else if(file.endsWith('.sbml')){
var openPath = path.join(app.getBasePath(), "edit", _path)
window.open(openPath, '_blank')
+ }else if(file.endsWith('.proj')){
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+_path;
}else if(file.endsWith('.wkfl')){
window.location.href = path.join(app.getBasePath(), "stochss/workflow/edit")+"?path="+_path+"&type=none";
}else if(node.type === "folder" && $('#models-jstree').jstree().is_open(node) && $('#models-jstree').jstree().is_loaded(node)){
diff --git a/client/pages/model-editor.js b/client/pages/model-editor.js
index acd60e5dd5..28e018607b 100644
--- a/client/pages/model-editor.js
+++ b/client/pages/model-editor.js
@@ -1,5 +1,6 @@
var _ = require('underscore');
var $ = require('jquery');
+let path = require('path');
//support files
var app = require('../app');
var modals = require('../modals')
@@ -28,23 +29,33 @@ let ModelEditor = PageView.extend({
'click [data-hook=edit-model-help]' : function () {
let modal = $(modals.operationInfoModalHtml('model-editor')).modal();
},
+ 'click [data-hook=project-breadcrumb-link]' : 'handleProjectBreadcrumbClick'
},
initialize: function (attrs, options) {
PageView.prototype.initialize.apply(this, arguments);
var self = this;
- var directory = (new URLSearchParams(window.location.search)).get('path');
+ let urlParams = new URLSearchParams(window.location.search)
+ var directory = urlParams.get('path');
var modelFile = directory.split('/').pop();
- var name = decodeURI(modelFile.split('.')[0]);
+ var name = this.getFileName(decodeURI(modelFile));
var isSpatial = modelFile.split('.').pop().startsWith('s');
this.model = new Model({
name: name,
directory: directory,
is_spatial: isSpatial,
isPreview: true,
- for: 'edit',
+ for: "edit",
});
+ if(directory.includes('.proj')) {
+ this.projectPath = path.dirname(directory)
+ this.projectName = this.projectPath.split('/').pop().split('.')[0]
+ }
this.model.fetch({
success: function (model, response, options) {
+ if(directory.includes('.proj')) {
+ self.queryByHook("project-breadcrumb-links").style.display = "block"
+ self.queryByHook("model-name-header").style.display = "none"
+ }
self.renderSubviews();
if(!self.model.is_spatial){
self.queryByHook('mesh-editor-container').style.display = "none";
@@ -72,6 +83,24 @@ let ModelEditor = PageView.extend({
},
updateValid: function () {
},
+ getFileName: function (file) {
+ if(file.endsWith('/')) {
+ file.slice(0, -1)
+ }
+ if(file.includes('/')) {
+ file = file.split('/').pop()
+ }
+ if(!file.includes('.')) {
+ return file
+ }
+ return file.split('.').slice(0, -1).join('.')
+ },
+ handleProjectBreadcrumbClick: function () {
+ this.modelStateButtons.saveModel(_.bind(function (e) {
+ let endpoint = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+this.projectPath
+ window.location.href = endpoint
+ }, this))
+ },
updateSpeciesInUse: function () {
var species = this.model.species;
var reactions = this.model.reactions;
@@ -116,7 +145,9 @@ let ModelEditor = PageView.extend({
});
}
reactions.forEach(function (reaction) {
- updateInUse(reaction.rate);
+ if(reaction.reactionType !== "custom-propensity"){
+ updateInUse(reaction.rate);
+ }
});
events.forEach(function (event) {
event.eventAssignments.forEach(function (assignment) {
@@ -152,7 +183,7 @@ let ModelEditor = PageView.extend({
parent: this,
model: this.model.modelSettings,
});
- var modelStateButtons = new ModelStateButtonsView({
+ this.modelStateButtons = new ModelStateButtonsView({
model: this.model
});
this.registerRenderSubview(meshEditor, 'mesh-editor-container');
@@ -162,7 +193,7 @@ let ModelEditor = PageView.extend({
this.registerRenderSubview(reactionsEditor, 'reactions-editor-container');
this.registerRenderSubview(sbmlComponentView, 'sbml-component-container');
this.registerRenderSubview(modelSettings, 'model-settings-container');
- this.registerRenderSubview(modelStateButtons, 'model-state-buttons-container');
+ this.registerRenderSubview(this.modelStateButtons, 'model-state-buttons-container');
$(document).ready(function () {
$('[data-toggle="tooltip"]').tooltip();
$('[data-toggle="tooltip"]').click(function () {
@@ -170,6 +201,9 @@ let ModelEditor = PageView.extend({
});
});
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
},
registerRenderSubview: function (view, hook) {
this.registerSubview(view);
diff --git a/client/pages/project-browser.js b/client/pages/project-browser.js
new file mode 100644
index 0000000000..4178d8578b
--- /dev/null
+++ b/client/pages/project-browser.js
@@ -0,0 +1,101 @@
+let $ = require('jquery');
+let path = require('path');
+let xhr = require('xhr');
+//support files
+let app = require('../app');
+let modals = require('../modals');
+//models
+let Project = require('../models/project');
+//collections
+let Collection = require('ampersand-collection');
+//views
+var PageView = require('./base');
+let EditProjectView = require('../views/edit-project');
+//templates
+var template = require('../templates/pages/projectBrowser.pug');
+
+import initPage from './page.js';
+
+let projectBrowser = PageView.extend({
+ template: template,
+ events: {
+ 'click [data-hook=new-project-btn]' : 'handleNewProjectClick'
+ },
+ initialize: function (attrs, options) {
+ PageView.prototype.initialize.apply(this, arguments)
+ let self = this
+ let endpoint = path.join(app.getApiPath(), "project/load-browser")
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ self.projects = body.projects
+ self.renderProjectsView()
+ }
+ });
+ },
+ render: function (attrs, options) {
+ PageView.prototype.render.apply(this, arguments)
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
+ },
+ renderProjectsView: function () {
+ if(this.projectsView) {
+ this.projectsView.remove()
+ }
+ let projects = new Collection(this.projects, {model: Project, comparator: 'parentDir'})
+ this.projectsView = this.renderCollection(projects, EditProjectView, this.queryByHook("projects-view-container"))
+ },
+ validateName(input) {
+ var error = ""
+ if(input.endsWith('/')) {
+ error = 'forward'
+ }
+ let invalidChars = "`~!@#$%^&*=+[{]}\"|:;'<,>?\\"
+ for(var i = 0; i < input.length; i++) {
+ if(invalidChars.includes(input.charAt(i))) {
+ error = error === "" || error === "special" ? "special" : "both"
+ }
+ }
+ return error
+ },
+ handleNewProjectClick: function (e) {
+ let self = this
+ if(document.querySelector("#newProjectModal")) {
+ document.querySelector("#newProjectModal").remove()
+ }
+ let modal = $(modals.newProjectModalHtml()).modal()
+ let input = document.querySelector("#newProjectModal #projectNameInput")
+ input.focus()
+ let okBtn = document.querySelector("#newProjectModal .ok-model-btn")
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newProjectModal #projectNameInputEndCharError')
+ var charErrMsg = document.querySelector('#newProjectModal #projectNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ modal.modal('hide')
+ let projectPath = input.value.trim() + ".proj"
+ let endpoint = path.join(app.getApiPath(), "project/new-project")+"?path="+projectPath
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+body.path
+ }else{
+ let errorModel = $(modals.newProjectOrWorkflowGroupErrorHtml(body.Reason, body.Message)).modal()
+ }
+ })
+ }
+ });
+ }
+});
+
+initPage(projectBrowser);
\ No newline at end of file
diff --git a/client/pages/project-manager.js b/client/pages/project-manager.js
new file mode 100644
index 0000000000..e7c3a2da1a
--- /dev/null
+++ b/client/pages/project-manager.js
@@ -0,0 +1,481 @@
+var $ = require('jquery');
+var xhr = require('xhr');
+var path = require('path');
+//support files
+var app = require('../app');
+var modals = require('../modals');
+//views
+var PageView = require('./base');
+var PlotsView = require('../views/plots-view');
+var EditModelsView = require('../views/edit-models-view');
+var EditWorkflowGroupsView = require('../views/edit-workflow-groups-view');
+var ProjectViewer = require('../views/project-viewer');
+var FileBrowser = require('../views/file-browser-view');
+var MetaDataView = require('../views/meta-data');
+//models
+var Project = require('../models/project');
+var Plot = require('../models/plots');
+//templates
+var template = require('../templates/pages/projectManager.pug');
+
+import initPage from './page.js'
+
+let ProjectManager = PageView.extend({
+ template: template,
+ events: {
+ 'click [data-hook=new-model]' : 'handleNewModelClick',
+ 'click [data-hook=new-workflow-group]' : 'handleNewWorkflowGroupClick',
+ 'click [data-hook=existing-model]' : 'handleExistingModelClick',
+ 'click [data-hook=export-project-as-zip]' : 'handleExportZipClick',
+ 'click [data-hook=export-project-as-combine]' : 'handleExportCombineClick',
+ 'click [data-hook=empty-project-trash]' : 'handleEmptyTrashClick',
+ 'click [data-hook=collapse-most-recent-plot-btn]' : 'changeCollapseButtonText',
+ 'click [data-hook=project-manager-advanced-btn]' : 'changeCollapseButtonText',
+ 'click [data-hook=collapse-annotation-container]' : 'changeCollapseButtonText',
+ 'change [data-hook=annotation-text-container]' : 'updateAnnotation',
+ 'click [data-hook=upload-file-btn]' : 'handleUploadModelClick',
+ 'click [data-hook=edit-annotation-btn]' : 'handleEditAnnotationClick'
+ },
+ initialize: function (attrs, options) {
+ PageView.prototype.initialize.apply(this, arguments)
+ let self = this
+ this.url = decodeURI(document.URL)
+ let urlParams = new URLSearchParams(window.location.search)
+ this.projectPath = urlParams.get('path')
+ this.projectName = this.getFileName(this.projectPath)
+ this.model = new Project({
+ directory: self.projectPath
+ });
+ this.model.fetch({
+ success: function (model, response, options) {
+ if(response.trash_empty) {
+ $(self.queryByHook('empty-project-trash')).prop('disabled', true)
+ }
+ self.renderSubviews()
+ }
+ });
+ },
+ update: function (target) {
+ let self = this
+ this.model.fetch({
+ success: function (model, response, options) {
+ self.renderProjectViewer()
+ $(self.queryByHook('empty-project-trash')).prop('disabled', response.trash_empty)
+ if(target === "model-editor" || target === "workflows-editor" || target === "trash") {
+ self.projectFileBrowser.refreshJSTree()
+ }else if(target === "workflow-group-editor"){
+ self.projectFileBrowser.refreshJSTree()
+ self.renderEditModelsView()
+ }else if(target === "file-browser") {
+ self.renderEditModelsView()
+ self.renderEditWorkflowGroupsView()
+ }else{
+ self.renderEditModelsView()
+ self.renderEditWorkflowGroupsView()
+ self.projectFileBrowser.refreshJSTree()
+ }
+ }
+ });
+ },
+ getFileName: function (file) {
+ if(file.endsWith('/')) {
+ file.slice(0, -1)
+ }
+ if(file.includes('/')) {
+ file = file.split('/').pop()
+ }
+ if(!file.includes('.')) {
+ return file
+ }
+ return file.split('.').slice(0, -1).join('.')
+ },
+ renderSubviews: function () {
+ this.renderProjectViewer();
+ this.renderProjectFileBrowser();
+ this.renderRecentPlotView();
+ this.renderEditModelsView();
+ this.renderEditWorkflowGroupsView();
+ if(this.model.annotation){
+ $(this.queryByHook('annotation-text-container')).text(this.model.annotation)
+ $(this.queryByHook("collapse-annotation-container")).collapse('show')
+ }else{
+ $(this.queryByHook('edit-annotation-btn')).text('Add Notes')
+ }
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
+ },
+ renderRecentPlotView: function () {
+ if(this.recentPlotView) {
+ this.recentPlotView.remove()
+ }
+ if(this.model.plot) {
+ var plot = new Plot(this.model.plot.output)
+ var expName = path.dirname(this.model.plot.path).split('/').pop().split('.')[0]
+ var wkflName = this.model.plot.path.split('/').pop().split('.')[0]
+ this.recentPlotView = new PlotsView({
+ model: plot,
+ path: this.model.plot.path,
+ heading: expName + " - " + wkflName
+ });
+ this.registerRenderSubview(this.recentPlotView, "project-most-recent-plot");
+ }else{
+ let message = "Their are no saved plots in the workflows of this project"
+ $(this.queryByHook("project-most-recent-plot")).text(message)
+ }
+ },
+ renderEditModelsView: function () {
+ if(this.editModelsView) {
+ this.editModelsView.remove()
+ }
+ this.editModelsView = new EditModelsView({
+ collection: this.model.models
+ });
+ this.registerRenderSubview(this.editModelsView, "edit-models-container")
+ },
+ renderEditWorkflowGroupsView: function () {
+ if(this.editWorkflowGroupsView) {
+ this.editWorkflowGroupsView.remove()
+ }
+ this.editWorkflowGroupsView = new EditWorkflowGroupsView({
+ collection: this.model.workflowGroups
+ });
+ this.registerRenderSubview(this.editWorkflowGroupsView, "edit-workflow-groups-container")
+ },
+ renderProjectViewer: function () {
+ if(this.projectViewer) {
+ this.projectViewer.remove()
+ }
+ this.projectViewer = new ProjectViewer({
+ model: this.model,
+ name: this.projectName
+ });
+ this.registerRenderSubview(this.projectViewer, "project-viewer")
+ },
+ renderProjectFileBrowser: function () {
+ let self = this
+ if(this.projectFileBrowser) {
+ this.projectFileBrowser.remove()
+ }
+ this.projectFileBrowser = new FileBrowser({
+ root: self.projectPath
+ })
+ this.registerRenderSubview(this.projectFileBrowser, "file-browser")
+ },
+ renderMetaDataView: function (target, files, download) {
+ if(this.metaDataView) {
+ this.metaDataView.remove()
+ }
+ this.metaDataView = new MetaDataView({
+ parent: this,
+ projectName: this.model.directory,
+ files: files,
+ path: target,
+ download: download
+ });
+ this.registerRenderSubview(this.metaDataView, "project-meta-data-container")
+ $(this.queryByHook("project-meta-data-container")).collapse("show")
+ },
+ registerRenderSubview: function (view, hook) {
+ this.registerSubview(view);
+ this.renderSubview(view, this.queryByHook(hook));
+ },
+ handleEditAnnotationClick: function (e) {
+ let buttonTxt = e.target.innerText;
+ if(buttonTxt.startsWith("Add")){
+ $(this.queryByHook('collapse-annotation-container')).collapse('show')
+ $(this.queryByHook('edit-annotation-btn')).text('Edit Notes')
+ }else if(!$("#annotation-text").attr('class').includes('show')){
+ $("#annotation-text").collapse('show')
+ $(this.queryByHook("collapse-annotation-text")).text('-')
+ }
+ document.querySelector("#annotation").focus()
+ },
+ updateAnnotation: function (e) {
+ this.model.annotation = e.target.value.trim();
+ if(this.model.annotation === ""){
+ $(this.queryByHook('edit-annotation-btn')).text('Add Notes')
+ $(this.queryByHook("collapse-annotation-container")).collapse('hide')
+ }
+ let endpoint = path.join(app.getApiPath(), "project/save-annotation")+"?path="+this.model.directory
+ xhr({uri: endpoint, json: true, method: "post", data: {'annotation': this.model.annotation}}, function (err, response, body) {
+ console.log("Saved project notes")
+ })
+ },
+ handleNewModelClick: function () {
+ this.addNewModel(false)
+ },
+ handleNewWorkflowGroupClick: function () {
+ this.addNewWorkflowGroup()
+ },
+ handleExistingModelClick: function () {
+ this.addExistingModel()
+ },
+ handleExportZipClick: function () {
+ let self = this
+ let queryStr = "?path="+this.projectPath+"&action=generate"
+ let endpoint = path.join(app.getApiPath(), "file/download-zip")+queryStr
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ var downloadEP = path.join(app.getBasePath(), "/files", body.Path);
+ window.open(downloadEP)
+ }
+ })
+ },
+ handleExportCombineClick: function () {
+ this.exportAsCombine(this.projectPath, true)
+ },
+ handleEmptyTrashClick: function () {
+ let self = this;
+ if(document.querySelector("#emptyTrashConfirmModal")) {
+ document.querySelector("#emptyTrashConfirmModal").remove()
+ }
+ let modal = $(modals.emptyTrashConfirmHtml()).modal();
+ let yesBtn = document.querySelector('#emptyTrashConfirmModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {
+ modal.modal('hide')
+ let endpoint = path.join(app.getApiPath(), "project/empty-trash")+"?path="+path.join(self.projectPath, "trash")
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ $(self.queryByHook('empty-project-trash')).prop('disabled', true)
+ self.update("trash")
+ console.log(body)
+ }else{
+ console.log(body)
+ }
+ });
+ });
+ },
+ handleUploadModelClick: function (e) {
+ let self = this
+ let type = e.target.dataset.type
+ if(document.querySelector('#uploadFileModal')) {
+ document.querySelector('#uploadFileModal').remove()
+ }
+ let modal = $(modals.uploadFileHtml(type)).modal();
+ let uploadBtn = document.querySelector('#uploadFileModal .upload-modal-btn');
+ let fileInput = document.querySelector('#uploadFileModal #fileForUpload');
+ let input = document.querySelector('#uploadFileModal #fileNameInput');
+ fileInput.addEventListener('change', function (e) {
+ if(fileInput.files.length){
+ uploadBtn.disabled = false
+ }else{
+ uploadBtn.disabled = true
+ }
+ })
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#uploadFileModal #fileNameInputEndCharError')
+ var charErrMsg = document.querySelector('#uploadFileModal #fileNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ uploadBtn.addEventListener('click', function (e) {
+ let file = fileInput.files[0]
+ var fileinfo = {"type":type,"name":"","path":self.projectPath}
+ if(Boolean(input.value) && self.validateName(input.value) === ""){
+ fileinfo.name = input.value
+ }
+ let formData = new FormData()
+ formData.append("datafile", file)
+ formData.append("fileinfo", JSON.stringify(fileinfo))
+ let endpoint = path.join(app.getApiPath(), 'file/upload');
+ let req = new XMLHttpRequest();
+ req.open("POST", endpoint)
+ req.onload = function (e) {
+ var resp = JSON.parse(req.response)
+ if(req.status < 400) {
+ if(resp.errors.length > 0){
+ let errorModal = $(modals.uploadFileErrorsHtml(file.name, type, resp.message, resp.errors)).modal();
+ }else{
+ self.update("model-editor")
+ }
+ }
+ }
+ req.send(formData)
+ modal.modal('hide')
+ })
+ },
+ addNewModel: function (isSpatial) {
+ let self = this
+ let isModel = true
+ if(document.querySelector('#newModalModel')) {
+ document.querySelector('#newModalModel').remove()
+ }
+ let modal = $(modals.renderCreateModalHtml(isModel, isSpatial)).modal();
+ let okBtn = document.querySelector('#newModalModel .ok-model-btn');
+ let input = document.querySelector('#newModalModel #modelNameInput');
+ okBtn.addEventListener('click', function (e) {
+ if (Boolean(input.value)) {
+ let modelName = input.value.split("/").pop() + '.mdl';
+ let message = modelName.split(".")[0] !== input.value ?
+ "Warning: Models are saved directly in StochSS Projects and cannot be saved to the "+input.value.split("/")[0]+" directory in the project.
Your model will be saved directly in your project.
" : ""
+ let modelPath = path.join(self.projectPath, modelName)
+ let endpoint = path.join(app.getBasePath(), app.routePrefix, 'models/edit')+"?path="+modelPath+"&message="+message
+ if(message){
+ modal.modal('hide')
+ let warningModal = $(modals.newProjectModelWarningHtml(message)).modal()
+ let yesBtn = document.querySelector('#newProjectModelWarningModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {window.location.href = endpoint;})
+ }else{
+ window.location.href = endpoint;
+ }
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newModalModel #modelNameInputEndCharError')
+ var charErrMsg = document.querySelector('#newModalModel #modelNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ },
+ validateName(input) {
+ var error = ""
+ if(input.endsWith('/')) {
+ error = 'forward'
+ }
+ let invalidChars = "`~!@#$%^&*=+[{]}\"|:;'<,>?\\"
+ for(var i = 0; i < input.length; i++) {
+ if(invalidChars.includes(input.charAt(i))) {
+ error = error === "" || error === "special" ? "special" : "both"
+ }
+ }
+ return error
+ },
+ addNewWorkflowGroup: function (cb) {
+ let self = this
+ if(document.querySelector("#newWorkflowGroupModal")) {
+ document.querySelector("#newWorkflowGroupModal").remove()
+ }
+ let modal = $(modals.newWorkflowGroupModalHtml()).modal();
+ let okBtn = document.querySelector('#newWorkflowGroupModal .ok-model-btn');
+ let input = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInput');
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInputEndCharError')
+ var charErrMsg = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ let workflowGroupName = input.value + ".wkgp"
+ let workflowGroupPath = path.join(self.projectPath, workflowGroupName)
+ let endpoint = path.join(app.getApiPath(), "project/new-workflow-group")+"?path="+workflowGroupPath
+ xhr({uri: endpoint,json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ if(cb) {
+ cb(workflowGroupName)
+ }else{
+ self.update("workflow-group")
+ }
+ }else{
+ let errorModel = $(modals.newProjectOrWorkflowGroupErrorHtml(body.Reason, body.Message)).modal()
+ }
+ modal.modal('hide')
+ });
+ }
+ });
+ },
+ addExistingModel: function () {
+ let self = this
+ if(document.querySelector('#newProjectModelModal')){
+ document.querySelector('#newProjectModelModal').remove()
+ }
+ let modal = $(modals.newProjectModelHtml()).modal()
+ let okBtn = document.querySelector('#newProjectModelModal .ok-model-btn')
+ let input = document.querySelector('#newProjectModelModal #modelPathInput')
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newProjectModelModal #modelPathInputEndCharError')
+ var charErrMsg = document.querySelector('#newProjectModelModal #modelPathInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ let queryString = "?path="+self.projectPath+"&mdlPath="+input.value
+ let endpoint = path.join(app.getApiPath(), 'project/add-existing-model') + queryString
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ let successModal = $(modals.newProjectModelSuccessHtml(body.message)).modal()
+ }else{
+ let errorModal = $(modals.newProjectModelErrorHtml(body.Reason, body.Message)).modal()
+ }
+ });
+ modal.modal('hide')
+ self.update("existing-model")
+ }
+ });
+ },
+ exportAsCombine: function(target, download) {
+ let self = this
+ if(document.querySelector("#addMetaDataModal")) {
+ document.querySelector("#addMetaDataModal").remove()
+ }
+ let modal = $(modals.addMetaDataHtml("Do you wish to add/update the meta-data for this archive?")).modal()
+ let yesBtn = document.querySelector("#addMetaDataModal .yes-modal-btn")
+ let noBtn = document.querySelector("#addMetaDataModal .no-modal-btn")
+ yesBtn.addEventListener('click', function (e) {
+ modal.modal('hide')
+ var files = []
+ if(target === self.projectPath){
+ files = self.model.workflowGroups.map(function (workflowGroup) {return workflowGroup.name+".wkgp"})
+ files.unshift(self.model.directory)
+ }else{
+ files = [self.model.directory, target.split('/').pop()]
+ }
+ self.renderMetaDataView(target, files, download)
+ });
+ noBtn.addEventListener('click', function (e) {
+ let queryString = "?path="+target+"&projectPath="+self.projectPath
+ let endpoint = path.join(app.getApiPath(), "project/export-combine")+queryString
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ if(download) {
+ let downloadEP = path.join(app.getBasePath(), "/files", body.file_path);
+ window.open(downloadEP)
+ }else{
+ let modal = $(modals.projectExportSuccessHtml(body.file_type, body.message)).modal()
+ }
+ }else{
+ let modal = $(modals.projectExportErrorHtml(body.Reason, body.Message))
+ }
+ });
+ });
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let isBtn = $(this.queryByHook(source)).attr("class").includes("btn")
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(isBtn && !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+});
+
+initPage(ProjectManager)
\ No newline at end of file
diff --git a/client/pages/users-home.js b/client/pages/users-home.js
new file mode 100644
index 0000000000..1d4747bddc
--- /dev/null
+++ b/client/pages/users-home.js
@@ -0,0 +1,174 @@
+let $ = require('jquery');
+let xhr = require('xhr');
+let path = require('path');
+//support files
+let app = require('../app');
+let modals = require('../modals');
+//views
+let PageView = require('./base');
+//templates
+let template = require('../templates/pages/usersHome.pug');
+
+import initPage from './page.js';
+
+let usersHomePage = PageView.extend({
+ template: template,
+ events: {
+ 'click [data-hook=new-model-btn]' : 'handleNewModelClick',
+ 'click [data-hook=new-project-btn]' : 'handleNewProjectClick',
+ 'click [data-hook=browse-projects-btn]' : 'handleBrowseProjectsClick',
+ 'click [data-hook=browse-files-btn]' : 'handleBrowseFilesClick',
+ 'click [data-hook=quickstart-btn]' : 'handleQuickstartClick'
+ },
+ initialize: function (attrs, options) {
+ PageView.prototype.initialize.apply(this, arguments)
+ let urlParams = new URLSearchParams(window.location.search)
+ if(urlParams.has("open")){
+ let uploadPath = urlParams.get("open")
+ let endpoint = path.join(app.getApiPath(), 'file/upload-from-link')+"?path="+uploadPath
+ let self = this
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ self.responsePath = body.responsePath
+ self.getUploadResponse()
+ }
+ })
+ }
+ },
+ render: function (attrs, options) {
+ PageView.prototype.render.apply(this, arguments);
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
+ },
+ getUploadResponse: function () {
+ let self = this
+ setTimeout(function () {
+ let endpoint = path.join(app.getApiPath(), 'file/upload-from-link')+"?path="+self.responsePath+"&cmd=read"
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode >= 400 || Object.keys(body).includes("reason")) {
+ let model = $(modals.projectExportErrorHtml(body.reason, body.message)).modal()
+ }else if(body.done) {
+ if(body.file_path.endsWith(".proj")){
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+body.file_path
+ }
+ }else{
+ self.getUploadResponse()
+ }
+ })
+ }, 1000)
+ },
+ validateName(input) {
+ var error = ""
+ if(input.endsWith('/')) {
+ error = 'forward'
+ }
+ let invalidChars = "`~!@#$%^&*=+[{]}\"|:;'<,>?\\"
+ for(var i = 0; i < input.length; i++) {
+ if(invalidChars.includes(input.charAt(i))) {
+ error = error === "" || error === "special" ? "special" : "both"
+ }
+ }
+ return error
+ },
+ handleNewModelClick: function (e) {
+ let self = this
+ if(document.querySelector("#newModalModel")) {
+ document.querySelector("#newModalModel").remove()
+ }
+ let modal = $(modals.renderCreateModalHtml(true, false)).modal()
+ let okBtn = document.querySelector("#newModalModel .ok-model-btn")
+ let input = document.querySelector("#newModalModel #modelNameInput")
+ input.focus()
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newModalModel #modelNameInputEndCharError')
+ var charErrMsg = document.querySelector('#newModalModel #modelNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== "" || input.value.trim() === ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)){
+ modal.modal('hide')
+ let modelPath = input.value + '.mdl'
+ let queryString = "?path="+modelPath
+ let existEP = path.join(app.getApiPath(), "model/exists")+queryString
+ xhr({uri: existEP, json: true}, function (err, response, body) {
+ if(body.exists) {
+ let title = "Model Already Exists"
+ let message = "A model already exists with that name"
+ let errorModel = $(modals.newProjectOrWorkflowGroupErrorHtml(title, message)).modal()
+ }else{
+ let endpoint = path.join(app.getBasePath(), "stochss/models/edit")+queryString
+ self.navToPage(endpoint)
+ }
+ })
+ }
+ });
+ },
+ handleNewProjectClick: function (e) {
+ let self = this
+ if(document.querySelector("#newProjectModal")) {
+ document.querySelector("#newProjectModal").remove()
+ }
+ let modal = $(modals.newProjectModalHtml()).modal()
+ let okBtn = document.querySelector("#newProjectModal .ok-model-btn")
+ let input = document.querySelector("#newProjectModal #projectNameInput")
+ input.focus()
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newProjectModal #projectNameInputEndCharError')
+ var charErrMsg = document.querySelector('#newProjectModal #projectNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== "" || input.value.trim() === ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ modal.modal('hide')
+ let projectPath = input.value + ".proj"
+ let queryString = "?path="+projectPath
+ let endpoint = path.join(app.getApiPath(), "project/new-project")+queryString
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ let projectQS = "?path="+body.path
+ let projectEP = path.join(app.getBasePath(), "stochss/project/manager")+projectQS
+ self.navToPage(projectEP)
+ }else{
+ let errorModel = $(modals.newProjectOrWorkflowGroupErrorHtml(body.Reason, body.Message)).modal()
+ }
+ });
+ }
+ });
+ },
+ handleBrowseProjectsClick: function (e) {
+ let endpoint = path.join(app.getBasePath(), "stochss/project/browser")
+ this.navToPage(endpoint)
+ },
+ handleBrowseFilesClick: function (e) {
+ let endpoint = path.join(app.getBasePath(), "stochss/files")
+ this.navToPage(endpoint)
+ },
+ handleQuickstartClick: function (e) {
+ let endpoint = path.join(app.getBasePath(), "stochss/quickstart")
+ this.navToPage(endpoint)
+ },
+ navToPage: function (endpoint) {
+ window.location.href = endpoint
+ }
+});
+
+initPage(usersHomePage);
\ No newline at end of file
diff --git a/client/pages/workflow-manager.js b/client/pages/workflow-manager.js
index b73f321dd7..facee01c89 100644
--- a/client/pages/workflow-manager.js
+++ b/client/pages/workflow-manager.js
@@ -14,6 +14,7 @@ var WorkflowResultsView = require('../views/workflow-results');
var ModelViewer = require('../views/model-viewer');
var InfoView = require('../views/workflow-info');
var InputView = require('../views/input');
+var SelectView = require('ampersand-select-view');
//models
var Model = require('../models/model')
//templates
@@ -25,10 +26,14 @@ let WorkflowManager = PageView.extend({
template: template,
events: {
'change [data-hook=workflow-name]' : 'setWorkflowName',
+ 'input [data-hook=workflow-name' : 'validateWorkflowName',
'change [data-hook=model-path]' : 'updateWkflModel',
+ 'input [data-hook=model-path]' : 'validateModelPath',
'click [data-hook=edit-workflow-help]' : function () {
let modal = $(modals.operationInfoModalHtml('wkfl-manager')).modal();
},
+ 'click [data-hook=project-breadcrumb]' : 'handleReturnToProjectClick',
+ 'click [data-hook=return-to-project-btn]' : 'handleReturnToProjectClick'
},
initialize: function (attrs, options) {
PageView.prototype.initialize.apply(this, arguments);
@@ -40,9 +45,12 @@ let WorkflowManager = PageView.extend({
this.url = decodeURI(document.URL)
let urlParams = new URLSearchParams(window.location.search)
let type = urlParams.get('type');
- let wkflPath = urlParams.get('path');
+ this.urlPathParam = urlParams.get('path');
var stamp = this.getCurrentDate();
- let queryStr = "?stamp="+stamp+"&type="+type+"&path="+wkflPath
+ var queryStr = "?stamp="+stamp+"&type="+type+"&path="+this.urlPathParam
+ if(urlParams.has('parentPath')) {
+ queryStr += ("&parentPath=" + urlParams.get('parentPath'))
+ }
var endpoint = path.join(app.getApiPath(), "workflow/load-workflow")+queryStr
xhr({uri: endpoint, json: true}, function (err, resp, body) {
if(resp.statusCode < 400) {
@@ -59,6 +67,13 @@ let WorkflowManager = PageView.extend({
self.wkflPath = path.join(self.wkflParPath, self.wkflDirectory)
self.buildWkflModel(body)
self.renderSubviews();
+ if(self.wkflPath.includes('.proj')) {
+ self.projectPath = path.dirname(self.wkflParPath)
+ $(self.queryByHook('project-breadcrumb')).text(self.projectPath.split('/').pop().split('.')[0])
+ $(self.queryByHook('workflow-breadcrumb')).text(self.workflowName)
+ self.queryByHook("project-breadcrumb-links").style.display = "block"
+ self.queryByHook("return-to-project-btn").style.display = "inline-block"
+ }
}
});
},
@@ -70,8 +85,12 @@ let WorkflowManager = PageView.extend({
this.model.is_spatial = this.modelDirectory.endsWith(".smdl")
this.model.isPreview = false
this.model.for = "wkfl"
- if(!model)
+ if(!model) {
+ this.modelLoadError = true
this.wkflModelNotFound(data.error)
+ }else{
+ this.modelLoadError = false
+ }
},
wkflModelNotFound: function (error) {
let modal = $(modals.modelNotFoundHtml(error.Reason, error.Message)).modal()
@@ -110,13 +129,20 @@ let WorkflowManager = PageView.extend({
this.renderWkflNameInputView();
this.renderMdlPathInputView();
this.renderWorkflowEditor();
- this.renderWorkflowStatusView();
- this.renderResultsView();
- this.renderInfoView();
- this.renderModelViewer();
+ if(this.status !== "new" && this.status !== "ready") {
+ this.renderWorkflowStatusView();
+ this.renderModelViewer();
+ }
+ if(this.status === "error" || this.status === "complete") {
+ this.renderResultsView();
+ this.renderInfoView();
+ }
if(this.status === 'running'){
this.getWorkflowStatus();
}
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
},
registerRenderSubview: function (view, hook) {
this.registerSubview(view);
@@ -181,6 +207,7 @@ let WorkflowManager = PageView.extend({
this.workflowResultsView.remove();
}
var resultsView = new WorkflowResultsView({
+ parent: this,
trajectories: this.settings.simulationSettings.realizations,
status: this.status,
species: this.model.species,
@@ -229,36 +256,112 @@ let WorkflowManager = PageView.extend({
}
});
},
+ validateName(input, rename = false) {
+ var error = ""
+ if(input.endsWith('/')) {
+ error = 'forward'
+ }
+ var invalidChars = "`~!@#$%^&*=+[{]}\"|:;'<,>?\\"
+ if(rename) {
+ invalidChars += "/"
+ }
+ for(var i = 0; i < input.length; i++) {
+ if(invalidChars.includes(input.charAt(i))) {
+ error = error === "" || error === "special" ? "special" : "both"
+ }
+ }
+ return error
+ },
+ validateWorkflowName: function (e) {
+ if(this.validateName(e.target.value, true) !== ""){
+ document.querySelector("#workflowNameSpecialCharError").style.display = "block"
+ }else{
+ document.querySelector("#workflowNameSpecialCharError").style.display = "none"
+ }
+ },
+ validateModelPath: function (e) {
+ if(this.validateName(e.target.value) !== ""){
+ document.querySelector("#modelPathSpecialCharError").style.display = "block"
+ }else{
+ document.querySelector("#modelPathSpecialCharError").style.display = "none"
+ }
+ },
setWorkflowName: function(e) {
var newWorkflowName = e.target.value.trim();
- if(newWorkflowName.endsWith(this.workflowDate)){
- this.workflowName = newWorkflowName
+ if(this.validateName(newWorkflowName) === "") {
+ if(newWorkflowName.endsWith(this.workflowDate)){
+ this.workflowName = newWorkflowName
+ }else{
+ this.workflowName = newWorkflowName + this.workflowDate
+ e.target.value = this.workflowName
+ }
+ $(this.queryByHook('workflow-breadcrumb')).text(this.workflowName)
+ this.wkflDirectory = this.workflowName + ".wkfl"
+ this.wkflPath = path.join(this.wkflParPath, this.wkflDirectory)
}else{
- this.workflowName = newWorkflowName + this.workflowDate
e.target.value = this.workflowName
+ setTimeout(function (e) {
+ document.querySelector("#workflowNameSpecialCharError").style.display = "none"
+ }, 5000)
}
- this.wkflDirectory = this.workflowName + ".wkfl"
- this.wkflPath = path.join(this.wkflParPath, this.wkflDirectory)
},
updateWkflModel: function (e) {
- let self = this;
- this.model.fetch({
- json: true,
- success: function (model, response, options) {
- self.renderWorkflowEditor()
- },
- error: function (model, response, options) {
- self.wkflModelNotFound(response.body)
+ if(this.validateName(e.target.value) === "") {
+ let self = this;
+ let parPath = path.dirname(self.modelDirectory)
+ if(parPath.endsWith(".proj") && parPath !== path.dirname(e.target.value)) {
+ self.model.directory = self.modelDirectory
+ $(self.queryByHook("model-path")).find('input').val(self.modelDirectory)
+ let mdlPathErr = $(modals.wkflModelPathErrorHtml()).modal()
+ }else{
+ self.modelDirectory = e.target.value
+ this.model.directory = e.target.value
+ this.model.fetch({
+ json: true,
+ success: function (model, response, options) {
+ self.modelLoadError = false
+ self.renderWorkflowEditor()
+ },
+ error: function (model, response, options) {
+ self.modelLoadError = true
+ self.renderWorkflowEditor()
+ self.wkflModelNotFound(response.body)
+ }
+ });
}
- });
+ }else{
+ e.target.value = this.modelDirectory
+ setTimeout(function (e) {
+ document.querySelector("#modelPathSpecialCharError").style.display = "none"
+ }, 5000)
+ }
},
reloadWkfl: function () {
let self = this;
- if(self.status === 'new')
- window.location.href = self.url.replace(self.modelDirectory.split('/').pop(), self.wkflDirectory)
+ if(self.status === 'new') {
+ // Need to refactor this
+ let mdlParPath = path.dirname(this.modelDirectory)
+ if(mdlParPath !== "."){
+ let replaceText = this.wkflPath.split(mdlParPath+'/').slice(1).join(mdlParPath)
+ this.url = this.url.replace(this.modelDirectory.split('/').pop(), replaceText)
+ }else{
+ this.url = this.url.replace(this.modelDirectory, this.wkflPath)
+ }
+ window.location.href = this.url
+ }
else
window.location.reload()
},
+ handleReturnToProjectClick: function(e) {
+ let self = this
+ if((this.status === 'ready' || this.status === 'new') && !this.modelLoadError){
+ this.workflowEditorView.workflowStateButtons.clickSaveHandler(e, function (e) {
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+self.projectPath
+ })
+ }else{
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+self.projectPath
+ }
+ }
});
initPage(WorkflowManager);
diff --git a/client/pages/workflow-selection.js b/client/pages/workflow-selection.js
index 528cae2a74..014e88840e 100644
--- a/client/pages/workflow-selection.js
+++ b/client/pages/workflow-selection.js
@@ -21,11 +21,24 @@ let workflowSelection = PageView.extend({
"click [data-hook=twod-parameter-sweep]" : "notebookWorkflow",
"click [data-hook=sciope-model-exploration]" : "notebookWorkflow",
"click [data-hook=model-inference]" : "notebookWorkflow",
+ "click [data-hook=stochss-es]" : "handleEnsembleSimulationClick",
+ "click [data-hook=stochss-ps]" : "handleParameterSweepClick"
},
initialize: function (attrs, options) {
PageView.prototype.initialize.apply(this, arguments);
var self = this
- this.modelDir = (new URLSearchParams(window.location.search)).get('path');
+ let urlParams = new URLSearchParams(window.location.search)
+ this.modelDir = urlParams.get('path');
+ if(urlParams.has('parentPath')){
+ this.parentPath = urlParams.get('parentPath')
+ }else{
+ this.parentPath = path.dirname(this.modelDir)
+ }
+ if(this.modelDir.includes(".proj")) {
+ this.projectPath = path.dirname(this.modelDir)
+ this.projectName = this.projectPath.split('/').pop().split('.')[0]
+ this.workflowGroupName = this.parentPath.split('/').pop().split('.')[0]
+ }
this.tooltips = Tooltips.workflowSelection
$(document).ready(function () {
$('[data-toggle="tooltip"]').tooltip();
@@ -34,7 +47,7 @@ let workflowSelection = PageView.extend({
});
});
- this.modelFile = this.modelDir.split('/').pop().split('.').shift();
+ this.modelFile = this.getFileName(this.modelDir)
var isSpatial = this.modelDir.endsWith('.smdl');
this.model = new Model({
name: this.modelFile,
@@ -45,26 +58,64 @@ let workflowSelection = PageView.extend({
});
this.model.fetch({
success: function (model, response, options) {
+ if(self.modelDir.includes(".proj")) {
+ self.queryByHook("workflow-selection-breadcrumb-links").style.display = "block"
+ }
self.validateWorkflows()
}
});
},
+ getFileName: function (file) {
+ if(file.endsWith('/')) {
+ file.slice(0, -1)
+ }
+ if(file.includes('/')) {
+ file = file.split('/').pop()
+ }
+ if(!file.includes('.')) {
+ return file
+ }
+ return file.split('.').slice(0, -1).join('.')
+ },
validateWorkflows: function () {
- if(this.model.parameters.length < 1 || this.model.species.length < 1){
- $(this.queryByHook('oned-parameter-sweep')).addClass('disabled')
- $(this.queryByHook('twod-parameter-sweep')).addClass('disabled')
- $(this.queryByHook('sciope-model-exploration')).addClass('disabled')
+ let modelInvalid = this.checkForErrors()
+ if(this.model.species.length < 1 || (this.model.reactions.length < 1 && this.model.eventsCollection.length < 1 && this.model.rules.length < 1) || modelInvalid){
+ $(this.queryByHook('stochss-es')).prop('disabled', true)
+ $(this.queryByHook('stochss-ps')).prop('disabled', true)
+ $(this.queryByHook('ensemble-simulation')).prop('disabled', true)
+ $(this.queryByHook('model-inference')).prop('disabled', true)
+ $(this.queryByHook('oned-parameter-sweep')).prop('disabled', true)
+ $(this.queryByHook('twod-parameter-sweep')).prop('disabled', true)
+ $(this.queryByHook('sciope-model-exploration')).prop('disabled', true)
+ if(modelInvalid) {
+ let endpoint = path.join(app.getBasePath(), "stochss/models/edit")+'?path='+this.model.directory
+ $(this.queryByHook('invalid-model-message')).html('Errors were detected in you model
click here to fix your model ')
+ }
+ $(this.queryByHook('invalid-model-message')).css('display', 'block')
+ }else if(this.model.parameters.length < 1){
+ $(this.queryByHook('oned-parameter-sweep')).prop('disabled', true)
+ $(this.queryByHook('twod-parameter-sweep')).prop('disabled', true)
+ $(this.queryByHook('stochss-ps')).prop('disabled', true)
+ $(this.queryByHook('psweep-workflow-message')).css('display', 'block')
}else if(this.model.parameters.length < 2){
- $(this.queryByHook('twod-parameter-sweep')).addClass('disabled')
+ $(this.queryByHook('twod-parameter-sweep')).prop('disabled', true)
+ $(this.queryByHook('psweep-workflow-message')).text('2D Parameter Sweep workflows require at least two parameters')
+ $(this.queryByHook('psweep-workflow-message')).css('display', 'block')
}
},
+ checkForErrors: function (e) {
+ let invalidParams = this.model.parameters.filter(function (parameter) {
+ if(typeof parameter.expression === "string") return true
+ })
+ if(invalidParams.length) {return true}
+ },
notebookWorkflow: function (e) {
var type = e.target.dataset.type;
- console.log(type)
this.toNotebook(type);
},
toNotebook: function (type) {
- var endpoint = path.join(app.getApiPath(), "/workflow/notebook")+"?type="+type+"&path="+this.modelDir
+ let queryString = "?type="+type+"&path="+this.modelDir+"&parentPath="+this.parentPath
+ var endpoint = path.join(app.getApiPath(), "/workflow/notebook")+queryString
xhr({uri:endpoint, json:true}, function (err, response, body) {
if(response.statusCode < 400){
var notebookPath = path.join(app.getBasePath(), "notebooks", body.FilePath)
@@ -72,6 +123,17 @@ let workflowSelection = PageView.extend({
}
});
},
+ handleEnsembleSimulationClick: function (e) {
+ this.launchStochssWorkflow("gillespy")
+ },
+ handleParameterSweepClick: function (e) {
+ this.launchStochssWorkflow("parameterSweep")
+ },
+ launchStochssWorkflow: function (type) {
+ let queryString = "?type=" + type + "&path=" + this.modelDir + "&parentPath=" + this.parentPath
+ let endpoint = path.join(app.getBasePath(), "stochss/workflow/edit")+queryString
+ window.location.href = endpoint
+ }
});
initPage(workflowSelection);
diff --git a/client/styles/styles.css b/client/styles/styles.css
index 45cfc54c13..0177c3797d 100644
--- a/client/styles/styles.css
+++ b/client/styles/styles.css
@@ -1,5 +1,5 @@
body {
-
+ min-width: 650px
}
img.quickstart {
@@ -26,7 +26,11 @@ img.quickstart {
}
.inline{
- display: inline-block !important;
+ display: inline-block;
+}
+
+.table {
+ table-layout: fixed;
}
span {
@@ -35,6 +39,8 @@ span {
select {
margin-left: 10px;
+ width: auto;
+ max-width: 100%;
}
label {
@@ -51,6 +57,26 @@ button.custom {
margin: 0.25rem;
}
+div.head {
+ border-bottom: 2px solid #dee2e6;
+}
+
+a.active-link:not([href]):not([tabindex]) {
+ color: #007bff;
+ text-decoration: none;
+ background-color: transparent;
+}
+
+a.active-link:not([href]):not([tabindex]):hover {
+ color: #0056b3;
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+a.active-link:not([href]):not([tabindex]):focus {
+ color: rgba(0, 0, 0, 0.9);
+}
+
a.disabled {
pointer-events: none;
cursor: default;
@@ -64,6 +90,10 @@ a.disabled {
padding: 0.5rem 0.25rem 0.5rem 1rem;
}
+.dropdown-toggle {
+ white-space: normal;
+}
+
.dropdown-menu li:hover {
cursor: pointer;
}
@@ -72,6 +102,26 @@ a.disabled {
width: 8rem;
}
+.invalid-feedback.wkfl-name {
+ margin-top: 0;
+ margin-left: 8rem;
+ margin-bottom: 1rem;
+}
+
+.invalid-feedback.mdl-path {
+ margin-top: 0;
+ margin-left: 6rem;
+ margin-bottom: 1rem;
+}
+
+.invalid-feedback.warning {
+ color: #ffc107 !important;
+}
+
+button.name {
+ width: 75%;
+}
+
.form-input {
width: 100%;
}
@@ -244,8 +294,21 @@ input[type="file"]::-ms-browse {
font-size: 12px;
}
-.modal-content.info {
- width: 150%;
+.modal-title {
+ width: 95%;
+ word-break: break-word !important;
+ overflow-wrap: break-word !important;
+}
+
+.modal-dialog {
+ width: 75%;
+ min-width: 487.5px;
+ max-width: 750px;
+}
+
+.modal-content {
+ min-width: 487.5px;
+ max-width: 750px;
}
.modal-content.default-species {
@@ -263,6 +326,23 @@ input[type="file"]::-ms-browse {
border-right-color: #007bff;
}
+.spinner-border.workflow-plot {
+ /*display: inline-block;*/
+ margin-bottom: 45px;
+}
+
+.spinner-border.status {
+ vertical-align: middle;
+ position: relative;
+ display: inline-block;
+ margin: 5px;
+ left: 0;
+ width: 30px;
+ height: 30px;
+ border: 4px solid rgba(0, 0, 0, 0.125);
+ border-right-color: #007bff;
+}
+
.errors {
display: none;
}
@@ -348,6 +428,14 @@ span.checkbox {
padding-bottom: 10px;
}
+.verticle-space-2 {
+ padding-bottom: 20px
+}
+
+.verticle-space-3 {
+ padding-bottom: 30px
+}
+
.horizontal-space {
padding-left: 5px;
padding-right: 5px;
@@ -370,8 +458,10 @@ span.checkbox {
}
.logo img {
- width: 40em;
- margin-left: -8em;
+ width: 95%;
+ max-height: 176px;
+ max-width: 40em;
+ margin-left: -13.5%;
}
.try-stochss-btn {
@@ -381,6 +471,14 @@ span.checkbox {
border-radius: 1.5rem;
}
+.user-home-btn {
+ padding: 1rem 1rem;
+ font-size: 1.5rem;
+ line-height: 1;
+ border-radius: 1.5rem;
+ width: 100%
+}
+
.home-list {
line-height: 2;
}
@@ -404,3 +502,50 @@ span.checkbox {
/*h-offset v-offset blur spread color*/
box-shadow: 6px 6px 10px 1px rgba(0, 0, 0, .2), 2.25px 2.25px 14px 2px rgba(0, 0, 0, .1), 3.75px 3.75px 5px -3px rgba(0, 0, 0, .4)
}
+
+.no-gutters-padding {
+ padding-right: 0px;
+ padding-left: 0px;
+}
+
+.dropbtn {
+ border: none;
+ background-color: inherit;
+}
+
+.dropdown {
+ background-color: inherit;
+}
+
+.dropdown-content {
+ display: none;
+ position: absolute;
+ background-color: rgb(248, 249, 250);
+ min-width: 160px;
+ box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+ z-index: 1;
+}
+
+.dropdown:hover .dropdown-content {
+ display: block;
+}
+
+#models-jstree-view .jstree-anchor {
+ white-space: normal;
+ word-break: break-word;
+ height: auto;
+}
+
+#models-jstree-view .jstree-default .jstree-anchor {
+ height: auto;
+}
+
+#models-jstree .jstree-anchor {
+ white-space: normal;
+ word-break: break-word;
+ height: auto;
+}
+
+#models-jstree .jstree-default .jstree-anchor {
+ height: auto;
+}
diff --git a/client/templates/body.pug b/client/templates/body.pug
index 7c3de43fa6..206fa084af 100644
--- a/client/templates/body.pug
+++ b/client/templates/body.pug
@@ -1,9 +1,12 @@
body
- nav.navbar.navbar-expand-lg.p-1.navbar-light.bg-light.fixed-top
+ nav.navbar.navbar-expand-md.p-1.navbar-light.bg-light.fixed-top
a.navbar-brand(href="/hub/spawn")
img(style="height: 38px;margin-left: -1.2em;" src="static/stochss-logo.png")
- div#navbar.collapse.navbar-collapse.justify-content-end
+ button.navbar-toggler(type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation")
+ span.navbar-toggler-icon
+
+ div#navbar.collapse.navbar-collapse.justify-content-end(role="navigation")
ul.navbar-nav.float-right
li.nav-item: a.nav-link(href="http://www.stochss.org", target="_blank")
| About
@@ -11,14 +14,18 @@ body
li.nav-item: a.nav-link(href="https://docs.google.com/forms/d/12tAH4f8CJ-3F-lK44Q9uQHFio_mGoK0oY829q5lD7i4/viewform?embedded=true", target="_blank")
| Register
- li.nav-item: a.nav-link(href="http://www.stochss.org/?page_id=476", target="_blank")
+ li.nav-item: a.nav-link(href="http://www.stochss.org/documentation", target="_blank")
| Documentation
- li.nav-item: a.nav-link(href="mailto:stochss-users@googlegroups.com")
- | Contact
+ li.nav-item: a.nav-link(href="https://forms.gle/hpGJ1ruxR7wTT43h8" target="_blank")
+ | Submit Feedback
- li.nav-item: a.nav-link(href="https://github.com/StochSS/stochss/issues/new", target="_blank")
- | Report Issue
+ li.nav-item
+ div.dropdown
+ button.dropdown-toggle.nav-item.nav-link.dropbtn Contact
+ div.dropdown-content
+ a.nav-link(href="https://gitter.im/StochSS/community#", target="_blank") Community Chat
+ a.nav-link(href="https://github.com/StochSS/stochss/issues/new", target="_blank") Report Issue
li.nav-item: a.nav-link(href="/logout")
| Sign Out
@@ -29,15 +36,19 @@ body
nav.sidebar.d-md-block
div.sidebar-sticky.tools
ul.nav.flex-column
- li.nav-item: h5.icon-flask Tools
+ li.nav-item: a.nav-link(href="stochss/home", title="Users Home Page")
+ | Home
+
+ li.nav-item: a.nav-link(href="stochss/project/browser", title="Explore your StochSS projects")
+ | Projects
- li.nav-item: a.nav-link(href="stochss/models", title="Explore your StochSS models")
- | Browser
+ li.nav-item: a.nav-link(href="stochss/files", title="Explore your StochSS files")
+ | Files
li.nav-item: a.nav-link(target="_blank", href="tree", title="Browse your files in a Jupyter interface")
| Jupyter
li.nav-item: a.nav-link(href="stochss/quickstart", title="Quickstart")
- | Quickstart
+ | Tutorial
main.col-md-10.body(role="main"): div.container-fluid(data-hook="page-container")
diff --git a/client/templates/head.pug b/client/templates/head.pug
index df74956cc0..1c592483bd 100644
--- a/client/templates/head.pug
+++ b/client/templates/head.pug
@@ -1,6 +1,6 @@
head
meta(charset="utf-8")
- title StochSS: Stochastic Simlation Service
+ title StochSS: Stochastic Simulation Service
meta(name="viewport", content="width=device-width, initial-scale=1.0")
meta(name="description", content="")
meta(name="author", content="")
diff --git a/client/templates/includes/creatorList.pug b/client/templates/includes/creatorList.pug
new file mode 100644
index 0000000000..fcf0f2119e
--- /dev/null
+++ b/client/templates/includes/creatorList.pug
@@ -0,0 +1,11 @@
+tr
+
+ td: div(data-hook="given-name-container")=this.model.fname
+
+ td: div(data-hook="family-name-container")=this.model.lname
+
+ td: div(data-hook="email-container")=this.model.email
+
+ td: div(data-hook="organization-container")=this.model.organization
+
+ td: button.btn.btn-outline-secondary.box-shadow(data-hook="remove-creator-btn") X
\ No newline at end of file
diff --git a/client/templates/includes/editCustomStoichSpecie.pug b/client/templates/includes/editCustomStoichSpecie.pug
index 96b2305592..5f0d1a6d7f 100644
--- a/client/templates/includes/editCustomStoichSpecie.pug
+++ b/client/templates/includes/editCustomStoichSpecie.pug
@@ -1,9 +1,10 @@
div
- label.select
- button.btn.btn-outline-secondary(class='btn-sm', data-hook='increment') +
- span.custom(data-hook="ratio")
+ div.inline
button.btn.btn-outline-secondary(class='btn-sm', data-hook='decrement') -
- select(data-hook="select-stoich-specie")
- span.message.message-below.message-error(data-hook="message-container")
- p(data-hook="message-text")
- button.btn.btn-outline-secondary.custom(class='btn-sm', data-hook='remove') X
\ No newline at end of file
+ span.custom(data-hook="ratio")
+ div.inline
+ button.btn.btn-outline-secondary(class='btn-sm', data-hook='increment') +
+ select(data-hook="select-stoich-specie")
+ span.message.message-below.message-error(data-hook="message-container")
+ p(data-hook="message-text")
+ button.btn.btn-outline-secondary.custom(class='btn-sm', data-hook='remove') X
\ No newline at end of file
diff --git a/client/templates/includes/editModelView.pug b/client/templates/includes/editModelView.pug
new file mode 100644
index 0000000000..fc9ab3e849
--- /dev/null
+++ b/client/templates/includes/editModelView.pug
@@ -0,0 +1,36 @@
+- var workflowGroups = this.workflowGroupOptions;
+div
+
+ div.ml-1.row
+
+ div.col-md-5: button.btn.btn-outline-secondary.box-shadow.text-break(data-hook="project-model-edit" style="width: 100%;")=this.model.name
+
+ div.col-md-4
+
+ button.btn.btn-outline-secondary.inline.box-shadow(
+ id="new-workflow-btn",
+ data-hook="new-workflow-btn",
+ type="button",
+ ) New Workflow Using Model
+
+ div.col-md-2
+
+ button.btn.btn-outline-secondary.btn-sm.box-shadow(data-hook="edit-model-annotation-btn") Edit Notes
+
+ div.col-md-1: button.btn.btn-outline-secondary.box-shadow(data-hook="project-model-remove")
+
+ div.mx-5.mt-4.collapse(data-hook="collapse-annotation-container"+this.model.name.replace(/ /g,""))
+
+ div.col-md-1.inline.align-top
+
+ div.row
+
+ div: h5="Notes: "
+
+ div: button.btn.btn-outline-collapse(data-toggle="collapse" data-target="#annotation-text"+this.model.name.replace(/ /g,"") data-hook="collapse-annotation-text") -
+
+ div.collapse.show.col-md-11.inline(id="annotation-text"+this.model.name.replace(/ /g,""))
+
+ div: textarea(id="annotation"+this.model.name.replace(/ /g,"") data-hook="annotation" rows="7" style="width: 100%;")=this.model.annotation
+
+ hr
\ No newline at end of file
diff --git a/client/templates/includes/editModelsView.pug b/client/templates/includes/editModelsView.pug
new file mode 100644
index 0000000000..c96de731c0
--- /dev/null
+++ b/client/templates/includes/editModelsView.pug
@@ -0,0 +1,9 @@
+div#edit-project-models
+
+ div
+
+ h3.inline Models
+
+ div.mx-1.row.head
+
+ div.mt-3(id="project-models-list" data-hook="project-models-list")
\ No newline at end of file
diff --git a/client/templates/includes/editProject.pug b/client/templates/includes/editProject.pug
new file mode 100644
index 0000000000..de5a7934bc
--- /dev/null
+++ b/client/templates/includes/editProject.pug
@@ -0,0 +1,7 @@
+tr
+
+ td: button.btn.btn-outline-secondary.box-shadow.name(id="open-project-btn" data-hook="open-project-btn")=this.projectName
+
+ td: div=this.location
+
+ td: button.btn.btn-outline-secondary.box-shadow(id="remove-project-btn" data-hook="remove-project-btn")
\ No newline at end of file
diff --git a/client/templates/includes/editWorkflowGroupView.pug b/client/templates/includes/editWorkflowGroupView.pug
new file mode 100644
index 0000000000..a968850cca
--- /dev/null
+++ b/client/templates/includes/editWorkflowGroupView.pug
@@ -0,0 +1,20 @@
+div
+
+ div.ml-1.row.verticle-space(style="display: none;")
+
+ div.col-md-11
+
+ h4.inline=this.model.name
+
+ button.btn.btn-outline-collapse(data-hook="project-workflow-group-view") +
+
+ div.col-md-1: button.btn.btn-outline-secondary.box-shadow(data-hook="project-workflow-group-remove")
+
+ div
+
+ if(this.model.name === "WorkflowGroup1")
+ div.verticle-space(data-hook="project-workflows-container")
+ else
+ div.verticle-space(data-hook="project-workflows-container" style="display: none;")
+
+ hr(style="display: none;")
\ No newline at end of file
diff --git a/client/templates/includes/editWorkflowGroupsView.pug b/client/templates/includes/editWorkflowGroupsView.pug
new file mode 100644
index 0000000000..b77400e518
--- /dev/null
+++ b/client/templates/includes/editWorkflowGroupsView.pug
@@ -0,0 +1,9 @@
+div#edit-project-workflow-groups
+
+ div
+
+ h3.inline Workflows
+
+ div.mx-1.row
+
+ div(id="project-workflow-groups-list" data-hook="project-workflow-groups-list")
\ No newline at end of file
diff --git a/client/templates/includes/editWorkflowView.pug b/client/templates/includes/editWorkflowView.pug
new file mode 100644
index 0000000000..7bc36e88d2
--- /dev/null
+++ b/client/templates/includes/editWorkflowView.pug
@@ -0,0 +1,35 @@
+div
+
+ div.ml-1.row
+
+ div.col-md-5: button.btn.btn-outline-secondary.box-shadow.text-break(data-hook="project-workflow-open" style="width: 100%")=this.model.name
+
+ div.col-md-4
+
+ div(data-hook="project-workflow-type")="Type: "+this.model.type
+
+ div(data-hook="project-workflow-status")="Status: "+this.model.status
+
+ div.col-md-2
+
+ div(data-hook="annotation-container")
+
+ button.btn.btn-outline-secondary.btn-sm.box-shadow(data-hook="edit-workflow-annotation-btn") Edit Notes
+
+ div.col-md-1: button.btn.btn-outline-secondary.box-shadow(data-hook="project-workflow-remove")
+
+ div.mx-5.mt-2.collapse(data-hook="collapse-annotation-container"+this.model.name.replace(/ /g,""))
+
+ div.col-md-1.inline.align-top
+
+ div.row
+
+ div: h5="Notes: "
+
+ div: button.btn.btn-outline-collapse(data-toggle="collapse" data-target="#annotation-text"+this.model.name.replace(/ /g,"") data-hook="collapse-annotation-text") -
+
+ div.collapse.show.col-md-11.inline(id="annotation-text"+this.model.name.replace(/ /g,""))
+
+ div: textarea(id="annotation"+this.model.name.replace(/ /g,"") data-hook="annotation" rows="7" style="width: 100%;")=this.model.annotation
+
+ hr
\ No newline at end of file
diff --git a/client/templates/includes/editWorkflowsView.pug b/client/templates/includes/editWorkflowsView.pug
new file mode 100644
index 0000000000..a7cd96aa58
--- /dev/null
+++ b/client/templates/includes/editWorkflowsView.pug
@@ -0,0 +1,23 @@
+div#edit-project-workflows
+
+ div.mx-1.row.head
+
+ div.mt-3(id="project-workflows-list" data-hook="project-workflows-list")
+
+ div
+
+ button.btn.btn-outline-primary.dropdown-toggle.box-shadow(
+ id="add-workflow-btn",
+ data-hook="add-workflow-btn",
+ data-toggle="dropdown",
+ aria-haspopup="true",
+ aria-expanded="false",
+ type="button"
+ ) Add Workflow
+
+ ul.dropdown-menu(aria-labelledby="add-workflow-btn")
+ li.dropdown-item(id="project-workflow-group-new-workflow" data-hook="project-workflow-group-new-workflow") New Workflow
+ li.dropdown-divider
+ li.dropdown-item(id="project-workflow-group-add-workflow" data-hook="project-workflow-group-add-workflow") Existing Workflow
+
+
\ No newline at end of file
diff --git a/client/templates/includes/fileBrowserView.pug b/client/templates/includes/fileBrowserView.pug
new file mode 100644
index 0000000000..a0dbad0555
--- /dev/null
+++ b/client/templates/includes/fileBrowserView.pug
@@ -0,0 +1,43 @@
+div#browse-files.card.card-body
+
+ div
+
+ h3.inline Browse Files
+ div.inline
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-browse-files", id="collapse-browse-files-btn" data-hook="collapse-browse-files") +
+
+ div.collapse(id="collapse-browse-files")
+
+ div.alert-warning(class="collapse", id="extension-warning" data-hook="extension-warning") You should avoid changing the file extension unless you know what you are doing!
+
+ div.alert-warning(class="collapse", id="rename-warning" data-hook="rename-warning") MESSAGE
+
+ div.alert-danger(id="renameSpecialCharError" style="display: none;") Names can only include the following characters: (0-9), (a-z), (A-Z) and (., -, _, (, or ))
+
+ div#models-jstree-view
+
+ div
+
+ button.btn.btn-primary.inline.box-shadow(
+ id="project-browse-files-add-btn"
+ data-hook="new-file-directory",
+ data-toggle="dropdown",
+ aria-haspopup="true",
+ aria-expanded="false",
+ type="button"
+ )
+
+
+ ul.dropdown-menu(aria-labelledby="project-browse-files-add-btn")
+ li.dropdown-item(id="new-directory" data-hook="new-directory") Create Directory
+ li.dropdown-item(id="browser-new-workflow-group" data-hook="browser-new-workflow-group") Create Workflow Group
+ li.dropdown-item(id="browser-new-model" data-hook="browser-new-model") Create Model
+ li.dropdown-divider
+ li.dropdown-item(id="browser-existing-model" data-hook="browser-existing-model") Add Existing Model
+ li.dropdown-divider
+ li.dropdown-item(id="upload-file-btn" data-hook="upload-file-btn", data-type="model") Upload StochSS Model
+ li.dropdown-item(id="upload-file-btn" data-hook="upload-file-btn", data-type="sbml") Upload SBML Model
+ li.dropdown-item(id="upload-file-btn" data-hook="upload-file-btn", data-type="file") Upload File
+
+ button.btn.btn-primary.box-shadow(id="options-for-node" data-hook="options-for-node" disabled) Actions
+
+ button.btn.btn-primary.inline.box-shadow(id="refresh-jstree" data-hook="refresh-jstree") Refresh
\ No newline at end of file
diff --git a/client/templates/includes/gillespyResults.pug b/client/templates/includes/gillespyResults.pug
index 4de69b6b4f..18798bfb5c 100644
--- a/client/templates/includes/gillespyResults.pug
+++ b/client/templates/includes/gillespyResults.pug
@@ -3,11 +3,11 @@ div#workflow-results.card.card-body
div
h3.inline Results
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-results", data-hook="collapse", disabled) +
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-results", id="collapse" data-hook="collapse", disabled) +
div.collapse(id="collapse-results", data-hook="workflow-results")
- div.collapse(data-hook="edit-plot-args")
+ div.collapse(id="edit-plot-args" data-hook="edit-plot-args")
table.table
thead
@@ -18,21 +18,23 @@ div#workflow-results.card.card-body
tbody
tr
- td: div(data-hook="title")
- td: div(data-hook="xaxis")
- td: div(data-hook="yaxis")
+ td: div(id="title" data-hook="title")
+ td: div(id="xaxis" data-hook="xaxis")
+ td: div(id="yaxis" data-hook="yaxis")
div.card.card-body
div
h5.inline Plot Trajectories
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-trajectories", data-hook="collapse-trajectories") -
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-trajectories", id="collapse-trajectories-btn" data-hook="collapse-trajectories") -
div.collapse(class="show", id="collapse-trajectories")
- div(data-hook="trajectories")
+ div(id="trajectories" data-hook="trajectories")
+ div.spinner-border.workflow-plot(id="trajectories" data-hook="plot-spinner")
button.btn.btn-primary.box-shadow(id="trajectories" data-hook="plot") Edit Plot
+ button.btn.btn-primary.box-shadow(id="trajectories" data-hook="save-plot" disabled) Save Plot to Project Viewer
button.btn.btn-primary.box-shadow(id="trajectories" data-hook="download-png-custom" disabled) Download PNG
button.btn.btn-primary.box-shadow(id="trajectories" data-hook="download-json" disabled) Download JSON
- button.btn.btn-primary.box-shadow(data-hook="download-results-csv") Download Results as .csv
+ button.btn.btn-primary.box-shadow(id="download-results-csv" data-hook="download-results-csv") Download Results as .csv
\ No newline at end of file
diff --git a/client/templates/includes/gillespyResultsEnsemble.pug b/client/templates/includes/gillespyResultsEnsemble.pug
index 870c2c59e1..0ef1e9fe04 100644
--- a/client/templates/includes/gillespyResultsEnsemble.pug
+++ b/client/templates/includes/gillespyResultsEnsemble.pug
@@ -3,11 +3,11 @@ div#workflow-results-ensemble.card.card-body
div
h3.inline Results
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-results", data-hook="collapse", disabled) +
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-results", id="collapse" data-hook="collapse", disabled) +
div.collapse(id="collapse-results", data-hook="workflow-results")
- div.collapse(data-hook="edit-plot-args")
+ div.collapse(id="edit-plot-args" data-hook="edit-plot-args")
table.table
thead
@@ -18,20 +18,22 @@ div#workflow-results-ensemble.card.card-body
tbody
tr
- td: div(data-hook="title")
- td: div(data-hook="xaxis")
- td: div(data-hook="yaxis")
+ td: div(id="title" data-hook="title")
+ td: div(id="xaxis" data-hook="xaxis")
+ td: div(id="yaxis" data-hook="yaxis")
div.card.card-body
div
h5.inline Plot Standard Deviation Range
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-stddevrange", data-hook="collapse-stddevrange") -
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-stddevrange", id="collapse-stddevrange-btn" data-hook="collapse-stddevrange") -
div.collapse(class="show", id="collapse-stddevrange")
- div(data-hook="stddevran")
+ div(id="stddevran" data-hook="stddevran")
+ div.spinner-border.workflow-plot(id="stddevran" data-hook="plot-spinner")
button.btn.btn-primary.box-shadow(id="stddevran" data-hook="plot") Edit Plot
+ button.btn.btn-primary.box-shadow(id="stddevran" data-hook="save-plot") Save Plot to Project Viewer
button.btn.btn-primary.box-shadow(id="stddevran" data-hook="download-png-custom" disabled) Download PNG
button.btn.btn-primary.box-shadow(id="stddevran" data-hook="download-json" disabled) Download JSON
@@ -39,13 +41,15 @@ div#workflow-results-ensemble.card.card-body
div
h5.inline Plot Trajectories
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-trajectories", data-hook="collapse-trajectories") +
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-trajectories", id="collapse-trajectories-btn" data-hook="collapse-trajectories") +
div.collapse(id="collapse-trajectories")
- div(data-hook="trajectories")
- button.btn.btn-primary.box-shadow(id="trajectories" data-hook="plot") Plot
- button.btn.btn-primary.box-shadow(data-hook="plot-multiple", disabled) Multiple Plots
+ div(id="trajectories" data-hook="trajectories")
+ div.spinner-border.workflow-plot(id="trajectories" data-hook="plot-spinner")
+ button.btn.btn-primary.box-shadow(id="trajectories" data-hook="plot") Edit Plot
+ button.btn.btn-primary.box-shadow(id="trajectories" data-hook="save-plot" disabled) Save Plot to Project Viewer
+ button.btn.btn-primary.box-shadow(id="plot-multiple" data-hook="plot-multiple", disabled) Multiple Plots
button.btn.btn-primary.box-shadow(id="trajectories" data-hook="download-png-custom" disabled) Download PNG
button.btn.btn-primary.box-shadow(id="trajectories" data-hook="download-json" disabled) Download JSON
@@ -53,12 +57,14 @@ div#workflow-results-ensemble.card.card-body
div
h5.inline Plot Standard Deviation
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-stddev", data-hook="collapse-stddev") +
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-stddev", id="collapse-stddev-btn" data-hook="collapse-stddev") +
div.collapse(id="collapse-stddev")
- div(data-hook="stddev")
- button.btn.btn-primary.box-shadow(id="stddev" data-hook="plot") Plot
+ div(id="stddev" data-hook="stddev")
+ div.spinner-border.workflow-plot(id="stddev" data-hook="plot-spinner")
+ button.btn.btn-primary.box-shadow(id="stddev" data-hook="plot") Edit Plot
+ button.btn.btn-primary.box-shadow(id="stddev" data-hook="save-plot" disabled) Save Plot to Project Viewer
button.btn.btn-primary.box-shadow(id="stddev" data-hook="download-png-custom" disabled) Download PNG
button.btn.btn-primary.box-shadow(id="stddev" data-hook="download-json" disabled) Download JSON
@@ -66,13 +72,15 @@ div#workflow-results-ensemble.card.card-body
div
h5.inline Plot Trajectory Mean
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-trajmean", data-hook="collapse-trajmean") +
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-trajmean", id="collapse-trajmean-btn" data-hook="collapse-trajmean") +
div.collapse(id="collapse-trajmean")
- div(data-hook="avg")
- button.btn.btn-primary.box-shadow(id="avg" data-hook="plot") Plot
+ div(id="avg" data-hook="avg")
+ div.spinner-border.workflow-plot(id="avg" data-hook="plot-spinner")
+ button.btn.btn-primary.box-shadow(id="avg" data-hook="plot") Edit Plot
+ button.btn.btn-primary.box-shadow(id="avg" data-hook="save-plot" disabled) Save Plot to Project Viewer
button.btn.btn-primary.box-shadow(id="avg" data-hook="download-png-custom" disabled) Download PNG
button.btn.btn-primary.box-shadow(id="avg" data-hook="download-json" disabled) Download JSON
- button.btn.btn-primary.box-shadow(data-hook="download-results-csv") Download Results as .csv
\ No newline at end of file
+ button.btn.btn-primary.box-shadow(id="download-results-csv" data-hook="download-results-csv") Download Results as .csv
\ No newline at end of file
diff --git a/client/templates/includes/metaData.pug b/client/templates/includes/metaData.pug
new file mode 100644
index 0000000000..ce6f62be4f
--- /dev/null
+++ b/client/templates/includes/metaData.pug
@@ -0,0 +1,57 @@
+div#project-meta-data.card.card-body
+
+ h3 Metadata
+
+ div(id="file-select-view" data-hook="file-select-view")
+
+ div
+
+ span(for="description-input-view") Description:
+
+ textarea(id="description-input-view" data-hook="description-input-view" rows="5" style="width: 100%;")
+
+ table.table
+
+ thead
+
+ tr
+
+ th(scope="col") Given Name
+
+ th(scope="col") Family Name
+
+ th(scope="col") E-Mail
+
+ th(scope="col") Organization
+
+ th(scpoe="col") Remove
+
+ tbody(id="list-of-creators" data-hook="list-of-creators")
+
+ hr
+
+ p Add a new creator or update an existing creators information by selecting the appropriate 'creator' option and entering their information below.
+
+ div(id="creator-select-view" data-hook="creator-select-view")
+
+ div.inline
+
+ div.inline(id="given-name-input-view" data-hook="given-name-input-view")
+
+ div.inline(id="family-name-input-view" data-hook="family-name-input-view")
+
+ div.inline(id="email-input-view" data-hook="email-input-view")
+
+ div.inline(id="organization-input-view" data-hook="organization-input-view")
+
+ div
+
+ button.btn.btn-outline-secondary.box-shadow(id="add-creator-btn" data-hook="add-creator-btn" disabled) Add
+
+ hr
+
+ div.inline
+
+ button.btn.btn-primary.box-shadow(id="save-meta-data-button" data-hook="save-meta-data-button") Save
+
+ button.btn.btn-primary.box-shadow(id="submit-meta-data-button" data-hook="submit-meta-data-button") Submit
\ No newline at end of file
diff --git a/client/templates/includes/modelSettings.pug b/client/templates/includes/modelSettings.pug
index bcae80b64d..5c731e94b1 100644
--- a/client/templates/includes/modelSettings.pug
+++ b/client/templates/includes/modelSettings.pug
@@ -2,7 +2,7 @@ div#preview-settings.card.card-body
div
- h3.inline Preview Settings
+ h3.inline Model Settings
div.tooltip-icon(data-html="true" data-toggle="tooltip" title=this.tooltips.previewSettings)
@@ -20,7 +20,7 @@ div#preview-settings.card.card-body
th(scope="col")
div
- div.inline Time Units
+ div.inline Sample Frequency
div.tooltip-icon(data-html="true" data-toggle="tooltip" title=this.tooltips.timeUnits)
diff --git a/client/templates/includes/modelSettingsViewer.pug b/client/templates/includes/modelSettingsViewer.pug
index d2a8a5ecc4..4e7a260a05 100644
--- a/client/templates/includes/modelSettingsViewer.pug
+++ b/client/templates/includes/modelSettingsViewer.pug
@@ -15,7 +15,7 @@ div#model-settings-viewer.card.card-body
th(scope="col") End Simulation
- th(scope="col") Time Steps
+ th(scope="col") Sample Frequency
th(scope="col") Volume
diff --git a/client/templates/includes/modelStateButtons.pug b/client/templates/includes/modelStateButtons.pug
index 6f418866dd..f3d5c9ebc7 100644
--- a/client/templates/includes/modelStateButtons.pug
+++ b/client/templates/includes/modelStateButtons.pug
@@ -13,7 +13,9 @@ div.mdl-edit-btn
span Saved
button.btn.btn-primary.box-shadow(data-hook="run") Run Preview
+
+ button.btn.btn-primary.box-shadow(data-hook="new-workflow") New Workflow Using Model
- button.btn.btn-primary.box-shadow(data-hook="start-workflow") New Workflow
+ button.btn.btn-primary.box-shadow(data-hook="return-to-project-btn" style="display: none;") Return to Project
diff --git a/client/templates/includes/modelViewer.pug b/client/templates/includes/modelViewer.pug
index b6186121da..a40e0504e7 100644
--- a/client/templates/includes/modelViewer.pug
+++ b/client/templates/includes/modelViewer.pug
@@ -1,13 +1,11 @@
-div#model-viewer.card.card-body
+div.card.card-body
- div
+ div(id="model-viewer-header")
- h3.inline Model
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-model", data-hook="collapse-model" disabled) +
+ h3.inline="Review Model: "+this.model.name
+ button.btn.btn-outline-collapse(id=this.model.name, data-toggle="collapse", data-target="#collapse-model"+this.model.name.replace(/ /g, ''), data-hook="collapse-model") +
- div.collapse(id="collapse-model")
-
- div: h5=this.model.name
+ div.collapse(id="collapse-model"+this.model.name.replace(/ /g, ''))
div(data-hook="species-viewer-container")
diff --git a/client/templates/includes/modelsViewer.pug b/client/templates/includes/modelsViewer.pug
new file mode 100644
index 0000000000..3946f4979b
--- /dev/null
+++ b/client/templates/includes/modelsViewer.pug
@@ -0,0 +1,10 @@
+div#models-viewer.card.card-body
+
+ div
+
+ h3.inline Models
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-models", id="collapse-models-btn" data-hook="collapse-models") +
+
+ div.collapse(id="collapse-models")
+
+ div(id="model-container" data-hook="model-container")
\ No newline at end of file
diff --git a/client/templates/includes/parameterSweepResults.pug b/client/templates/includes/parameterSweepResults.pug
index 5ea02e5901..880ab203d7 100644
--- a/client/templates/includes/parameterSweepResults.pug
+++ b/client/templates/includes/parameterSweepResults.pug
@@ -3,11 +3,11 @@ div#workflow-results.card.card-body
div
h3.inline Results
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-results", data-hook="collapse", disabled) +
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-results", id="collapse" data-hook="collapse", disabled) +
div.collapse(id="collapse-results", data-hook="workflow-results")
- div.collapse(data-hook="edit-plot-args")
+ div.collapse(id="edit-plot-args" data-hook="edit-plot-args")
table.table
thead
@@ -18,9 +18,9 @@ div#workflow-results.card.card-body
tbody
tr
- td: div(data-hook="title")
- td: div(data-hook="xaxis")
- td: div(data-hook="yaxis")
+ td: div(id="title" data-hook="title")
+ td: div(id="xaxis" data-hook="xaxis")
+ td: div(id="yaxis" data-hook="yaxis")
div
@@ -40,7 +40,7 @@ div#workflow-results.card.card-body
div.inline(id="feature-extractor" data-hook="feature-extraction-list")
- div.horizontal-space.collapse(class="show" data-hook="ensemble-aggragator-container")
+ div.horizontal-space.collapse(class="show" id="ensemble-aggragator-container" data-hook="ensemble-aggragator-container")
span.inline(for="ensemble-aggragator") Ensemble Aggragator:
@@ -52,13 +52,15 @@ div#workflow-results.card.card-body
div
h5.inline Parameter Sweep
- button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-psweep", data-hook="collapse-psweep") -
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-psweep", id="collapse-psweep-btn" data-hook="collapse-psweep") -
div.collapse(class="show", id="collapse-psweep")
- div(data-hook="psweep")
+ div(id="psweep" data-hook="psweep")
+ div.spinner-border.workflow-plot(id="psweep" data-hook="plot-spinner")
button.btn.btn-primary.box-shadow(id="psweep" data-hook="plot") Edit Plot
+ button.btn.btn-primary.box-shadow(id="psweep" data-hook="save-plot" disabled) Save Plot to Project Viewer
button.btn.btn-primary.box-shadow(id="psweep" data-hook="download-png-custom" disabled) Download PNG
button.btn.btn-primary.box-shadow(id="psweep" data-hook="download-json" disabled) Download JSON
- button.btn.btn-primary.box-shadow(data-hook="download-results-csv") Download Results as .csv
\ No newline at end of file
+ button.btn.btn-primary.box-shadow(id="download-results-csv" data-hook="download-results-csv") Download Results as .csv
\ No newline at end of file
diff --git a/client/templates/includes/plotsView.pug b/client/templates/includes/plotsView.pug
new file mode 100644
index 0000000000..0d72e785bc
--- /dev/null
+++ b/client/templates/includes/plotsView.pug
@@ -0,0 +1,10 @@
+div.card.card-body
+
+ div
+
+ h5.inline=this.heading
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse"+this.model.key+this.model.stamp data-hook="collapse-plot")
+
+ div.collapse(class="show", id="collapse"+this.model.key+this.model.stamp)
+
+ div(data-hook=this.model.key+this.model.stamp)
\ No newline at end of file
diff --git a/client/templates/includes/projectViewer.pug b/client/templates/includes/projectViewer.pug
new file mode 100644
index 0000000000..4ae225f576
--- /dev/null
+++ b/client/templates/includes/projectViewer.pug
@@ -0,0 +1,12 @@
+div#project-viewer.card.card-body
+
+ div
+
+ h3.inline Project Viewer
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-project", data-hook="collapse-project") +
+
+ div.collapse(id="collapse-project")
+
+ div(id="models-collection-container" data-hook="models-collection-container")
+
+ div(id="workflow-groups-collection-container" data-hook="workflow-groups-collection-container")
\ No newline at end of file
diff --git a/client/templates/includes/reactionsEditor.pug b/client/templates/includes/reactionsEditor.pug
index e52fe3b257..6c2c9c0eff 100644
--- a/client/templates/includes/reactionsEditor.pug
+++ b/client/templates/includes/reactionsEditor.pug
@@ -16,7 +16,7 @@ div#reactions-editor.card.card-body
p
| For a species that is NOT consumed in the reaction but is part of a massaction reaction, add it as both a reactant and a product. Mass-action reactions
- | must also have a rate term added. Note that the inputrate represents the mass-action constant rate independent of volume.
+ | must also have a rate term added. Note that the input rate represents the mass-action constant rate independent of volume.
div.row
div.col-md-7.container-part: table.table
diff --git a/client/templates/includes/ruleEditor.pug b/client/templates/includes/ruleEditor.pug
index 268f9af8a6..c864f84192 100644
--- a/client/templates/includes/ruleEditor.pug
+++ b/client/templates/includes/ruleEditor.pug
@@ -34,7 +34,7 @@ div#rules-editor.card.card-body
th(scope="col")
div
- div.inline Expression
+ div.inline Formula
div.tooltip-icon(data-html="true" data-toggle="tooltip" title=this.tooltips.expression)
diff --git a/client/templates/includes/rulesViewer.pug b/client/templates/includes/rulesViewer.pug
index a99ec5a373..9624792313 100644
--- a/client/templates/includes/rulesViewer.pug
+++ b/client/templates/includes/rulesViewer.pug
@@ -13,6 +13,6 @@ div#rules-viewer.card.card-body
th.col-md-3-view(scope="col") Name
th.col-md-3-view(scope="col") Type
th.col-md-3-view(scope="col") Variable
- th.col-md-3-view(scope="col") Expression
+ th.col-md-3-view(scope="col") Formula
tbody(data-hook="rules-list")
\ No newline at end of file
diff --git a/client/templates/includes/workflowGroupViewer.pug b/client/templates/includes/workflowGroupViewer.pug
new file mode 100644
index 0000000000..cd0cdc6a0b
--- /dev/null
+++ b/client/templates/includes/workflowGroupViewer.pug
@@ -0,0 +1,10 @@
+div.card.card-body
+
+ div
+
+ h3.inline=this.model.name
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-workflow-group"+this.model.name data-hook="collapse-workflow-group") +
+
+ div.collapse(id="collapse-workflow-group"+this.model.name)
+
+ div(data-hook="workflows-viewer-container")
\ No newline at end of file
diff --git a/client/templates/includes/workflowGroupsViewer.pug b/client/templates/includes/workflowGroupsViewer.pug
new file mode 100644
index 0000000000..cd3f50d613
--- /dev/null
+++ b/client/templates/includes/workflowGroupsViewer.pug
@@ -0,0 +1,10 @@
+div#workflow-groups-viewer.card.card-body
+
+ div
+
+ h3.inline Workflow Groups
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-workflow-groups", id="collapse-workflow-groups-btn" data-hook="collapse-workflow-groups") +
+
+ div.collapse(id="collapse-workflow-groups")
+
+ div(id="workflow-group-container" data-hook="workflow-group-container")
\ No newline at end of file
diff --git a/client/templates/includes/workflowStatus.pug b/client/templates/includes/workflowStatus.pug
index 6907219e0b..4e0de7bf3b 100644
--- a/client/templates/includes/workflowStatus.pug
+++ b/client/templates/includes/workflowStatus.pug
@@ -18,8 +18,11 @@ div#workflow-status.card.card-body
tbody
tr
- td=this.startTime
- td=this.status
+ td: div=this.startTime
+ td
+ div
+ div.inline=this.status
+ div.inline.spinner-border.status(data-hook="running-spinner")
div(style="display: none;")
diff --git a/client/templates/includes/workflowViewer.pug b/client/templates/includes/workflowViewer.pug
new file mode 100644
index 0000000000..ca65d5d864
--- /dev/null
+++ b/client/templates/includes/workflowViewer.pug
@@ -0,0 +1,10 @@
+div.card.card-body
+
+ div
+
+ h3.inline=this.model.name
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-workflow"+this.model.name data-hook="collapse-workflow") +
+
+ div.collapse(id="collapse-workflow"+this.model.name)
+
+ div(data-hook="workflow-plots")
\ No newline at end of file
diff --git a/client/templates/includes/workflowsViewer.pug b/client/templates/includes/workflowsViewer.pug
new file mode 100644
index 0000000000..336994a46b
--- /dev/null
+++ b/client/templates/includes/workflowsViewer.pug
@@ -0,0 +1,10 @@
+div.card.card-body
+
+ div
+
+ h3.inline Workflows
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#collapse-workflows"+this.collection.parent.name data-hook="collapse-workflows") +
+
+ div.collapse(id="collapse-workflows"+this.collection.parent.name)
+
+ div(data-hook="workflow-container")
\ No newline at end of file
diff --git a/client/templates/pages/fileBrowser.pug b/client/templates/pages/fileBrowser.pug
index 9451fc80fd..500f7a3465 100644
--- a/client/templates/pages/fileBrowser.pug
+++ b/client/templates/pages/fileBrowser.pug
@@ -3,15 +3,18 @@ section.page
div
h2.inline File Browser
- button.big-tip.btn.information-btn.help(data-hook="file-browser-help")
+ button.big-tip.btn.information-btn.help(id="file-browser-help" data-hook="file-browser-help")
- div.alert-warning(class="collapse", data-hook="extension-warning") You should avoid changing the file extension unless you know what you are doing!
+ div.alert-warning(class="collapse", id="extension-warning" data-hook="extension-warning") You should avoid changing the file extension unless you know what you are doing!
- div.alert-warning(class="collapse", data-hook="rename-warning") MESSAGE
+ div.alert-warning(class="collapse", id="rename-warning" data-hook="rename-warning") MESSAGE
+
+ div.alert-danger(id="renameSpecialCharError" style="display: none;") Names can only include the following characters: (0-9), (a-z), (A-Z) and (., -, _, (, or ))
div#models-jstree
button.btn.btn-primary.inline.box-shadow(
+ id="new-file-directory",
data-hook="new-file-directory",
data-toggle="dropdown",
aria-haspopup="true",
@@ -19,14 +22,15 @@ section.page
type="button"
)
+
- ul.dropdown-menu(aria-labelledby="addReactionBtn")
- li.dropdown-item(data-hook="new-directory") Create Directory
- li.dropdown-item(data-hook="new-model") Create Model
+ ul.dropdown-menu(aria-labelledby="new-file-directory")
+ li.dropdown-item(id="new-directory" data-hook="new-directory") Create Directory
+ li.dropdown-item(id="new-project" data-hook="new-project") Create Project
+ li.dropdown-item(id="new-model" data-hook="new-model") Create Model
li.dropdown-divider
- li.dropdown-item(data-hook="upload-file-btn", data-type="model") Upload StochSS Model
- li.dropdown-item(data-hook="upload-file-btn", data-type="sbml") Upload SBML Model
- li.dropdown-item(data-hook="upload-file-btn", data-type="file") Upload File
+ li.dropdown-item(id="upload-file-btn" data-hook="upload-file-btn", data-type="model") Upload StochSS Model
+ li.dropdown-item(id="upload-file-btn" data-hook="upload-file-btn", data-type="sbml") Upload SBML Model
+ li.dropdown-item(id="upload-file-btn" data-hook="upload-file-btn", data-type="file") Upload File
- button.btn.btn-primary.box-shadow(data-hook="options-for-node" disabled) Actions
+ button.btn.btn-primary.box-shadow(id="options-for-node" data-hook="options-for-node" disabled) Actions
- button.btn.btn-primary.inline.box-shadow(data-hook="refresh-jstree") Refresh
\ No newline at end of file
+ button.btn.btn-primary.inline.box-shadow(id="refresh-jstree" data-hook="refresh-jstree") Refresh
\ No newline at end of file
diff --git a/client/templates/pages/home.pug b/client/templates/pages/home.pug
index 6a1c83228d..36f584d211 100644
--- a/client/templates/pages/home.pug
+++ b/client/templates/pages/home.pug
@@ -2,7 +2,7 @@ html
head
meta(charset="utf-8")
- title StochSS: Stochastic Simlation Service
+ title StochSS: Stochastic Simulation Service
meta(name="viewport", content="width=device-width, initial-scale=1.0")
meta(name="description", content="")
meta(name="author", content="")
@@ -14,10 +14,10 @@ html
img(src="/hub/static/stochss-logo.png")
div.centered
- h1.display-5 Welcome to the Stochastic Simulation Service!
+ h1.display-5 Welcome to StochSS Live!
p.home-p
- | StochSS 2.0 is an accessible platform for modeling biochemical systems.
+ | An accessible platform for modeling mathematical, biological, and biochemical systems.
div.row.home-highlights
div.col-md-2
@@ -55,4 +55,4 @@ html
div.collapse.show(data-hook="registration-form" id="registration-form")
- iframe(src="https://docs.google.com/forms/d/12tAH4f8CJ-3F-lK44Q9uQHFio_mGoK0oY829q5lD7i4/viewform?embedded=true" width="100%" height="800" frameborder="0")
\ No newline at end of file
+ iframe(src="https://docs.google.com/forms/d/12tAH4f8CJ-3F-lK44Q9uQHFio_mGoK0oY829q5lD7i4/viewform?embedded=true" width="100%" height="800" frameborder="0")
diff --git a/client/templates/pages/modelEditor.pug b/client/templates/pages/modelEditor.pug
index eb8e586226..b3a540bd22 100644
--- a/client/templates/pages/modelEditor.pug
+++ b/client/templates/pages/modelEditor.pug
@@ -5,7 +5,19 @@ section.page
button.big-tip.btn.information-btn.help(data-hook="edit-model-help")
- div: h5=this.model.name
+ div(data-hook="project-breadcrumb-links" style="display: none")
+ h5
+ nav(aria-label="breadcrumb")
+ ol.breadcrumb
+ li.breadcrumb-item
+ a.active-link(data-hook="project-breadcrumb-link")=this.projectName
+ li.breadcrumb-item.active(aria-current="page")=this.model.name
+
+ div(data-hook="model-name-header")
+ h5
+ nav(aria-label="breadcrumb")
+ ol.breadcrumb
+ li.breadcrumb-item.active(aria-current="page")=this.model.name
div(data-hook="mesh-editor-container")
diff --git a/client/templates/pages/projectBrowser.pug b/client/templates/pages/projectBrowser.pug
new file mode 100644
index 0000000000..fda8ef1435
--- /dev/null
+++ b/client/templates/pages/projectBrowser.pug
@@ -0,0 +1,9 @@
+section.page.col-md-10
+
+ h2 Project Browser
+
+ table.table
+
+ tbody(id="projects-view-container" data-hook="projects-view-container")
+
+ button.btn.btn-outline-primary.box-shadow(id="new-project-btn" data-hook="new-project-btn") New
\ No newline at end of file
diff --git a/client/templates/pages/projectManager.pug b/client/templates/pages/projectManager.pug
new file mode 100644
index 0000000000..fa945e6aef
--- /dev/null
+++ b/client/templates/pages/projectManager.pug
@@ -0,0 +1,99 @@
+section.page
+
+ div.verticle-space
+
+ h2.inline(id="page-title" data-hook="page-title")= "Project: "+this.projectName
+
+ div.col-md-12.col-lg-10.no-gutters-padding
+
+ if !this.annotation
+ div.verticle-space-2
+ button.btn.btn-outline-secondary.btn-sm.box-shadow(data-hook="edit-annotation-btn") Edit Notes
+ else
+ div
+ button.btn.btn-outline-secondary.btn-sm.box-shadow(data-hook="edit-annotation-btn") Edit Notes
+
+ div.mx-3.mt-2.collapse.verticle-space-2(data-hook="collapse-annotation-container")
+
+ div.col-md-1.inline.align-top
+
+ div.row
+
+ div: h5="Notes: "
+
+ div: button.btn.btn-outline-collapse(data-toggle="collapse" data-target="#annotation-text" data-hook="collapse-annotation-text") -
+
+ div.collapse.show.col-md-11.inline(id="annotation-text")
+
+ div: textarea(id="annotation" data-hook="annotation-text-container" rows="7" style="width: 100%;")
+
+ div(id="edit-models-container" data-hook="edit-models-container")
+
+ div.verticle-space-3
+
+ button.btn.btn-outline-primary.inline.dropdown-toggle.box-shadow(
+ id="project-manager-add-model-btn",
+ data-hook="add-element-btn",
+ data-toggle="dropdown",
+ aria-haspopup="true",
+ aria-expanded="false",
+ type="button"
+ ) Add Model
+
+ ul.dropdown-menu(aria-labelledby="project-manager-add-model-btn")
+ li.dropdown-item(id="new-model" data-hook="new-model") New Model
+ li.dropdown-divider
+ li.dropdown-item(id="existing-model" data-hook="existing-model") Existing Model
+ li.dropdown-divider
+ li.dropdown-item(id="upload-file-btn" data-hook="upload-file-btn", data-type="model") Upload StochSS Model (.mdl)
+
+ div.verticle-space(id="edit-workflow-groups-container" data-hook="edit-workflow-groups-container")
+
+ div.verticle-space-3(style="display: none;")
+
+ button.btn.btn-outline-primary.inline.box-shadow(id="new-workflow-group-btn" data-hook="new-workflow-group") Add New Workflow Group
+
+ div(style="display: none;")
+
+ div
+
+ h3.inline Most Recent Plot
+
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#project-most-recent-plot-container", data-hook="collapse-most-recent-plot-btn") -
+
+ div.collapse.show(id="project-most-recent-plot-container")
+
+ div(id="project-most-recent-plot" data-hook="project-most-recent-plot")
+
+ div(id="project-viewer" data-hook="project-viewer" style="display: none;")
+
+ div.card.card-body
+
+ div
+
+ h3.inline Advanced
+ button.btn.btn-outline-collapse(data-toggle="collapse", data-target="#project-manager-advanced", data-hook="project-manager-advanced-btn") +
+
+ div.collapse(id="project-manager-advanced" data-hook="project-manager-advanced")
+
+ div(id="project-manager-file-browser" data-hook="file-browser")
+
+ div
+
+ button.btn.btn-primary.inline.dropdown-toggle.box-shadow(
+ id="download-project-btn",
+ data-hook="download-project-btn",
+ data-toggle="dropdown",
+ aria-haspopup="true",
+ aria-expanded="false",
+ type="button"
+ ) Download
+
+ ul.dropdown-menu(aria-labelledby="download-project-btn")
+ li.dropdown-item(id="export-project-as-zip" data-hook="export-project-as-zip") as .zip
+ li.dropdown-item(id="export-project-as-combine" data-hook="export-project-as-combine") as COMBINE
+
+ button.btn.btn-primary.inline.box-shadow(id="empty-project-trash" data-hook="empty-project-trash") Empty Trash
+
+ div.collapse(id="project-meta-data-container" data-hook="project-meta-data-container")
+
\ No newline at end of file
diff --git a/client/templates/pages/quickstart.pug b/client/templates/pages/quickstart.pug
index 79c9eaaff1..d4099cfb51 100644
--- a/client/templates/pages/quickstart.pug
+++ b/client/templates/pages/quickstart.pug
@@ -5,30 +5,25 @@ section.page
div.col-md-10
- h2 Quickstart
+ h2 Tutorial
- p Welcome to the Stochastic Simulation Service! In this tutorial we'll take you through the process of creating, simulating, and analyzing a model of a biochemical system.
+ p Welcome to StochSS Live! In this tutorial we'll take you through the process of creating, simulating, and analyzing a model of a biochemical system.
h4 Help and Information
p As we move through the different parts of StochSS, watch for the blue
button by the top of each page, and the smaller blue
i tooltips in superscript throughout each page. Because StochSS supports a wide variety of features, it includes numerous “tooltips” providing helpful information. Click on the large
button at the top of the page for an overview of the page contents. Hovering over the blue
i icons will provide more info on an item.
- h4 Creating a Model
+ h4 Create a Project
- p We start our journey on the
file browser . To start, let's make a new project folder where we can keep files. You can access the root directory in two ways: either right-click on the root folder (named '/'), or click the blue + button below the file browser. To create the project folder, right-click on the root folder and click 'New Directory', or click on the blue + button and select 'Create Directory'. Let’s name the directory Quickstart. Click on the new directory so it’s selected, then click the 'Actions for Quickstart' button at the bottom of the browser.
+ p We start our journey on the
Project Browser . To start, let's make a new project where we can create models and run simulations. Click New and give your project a name. From here you’re taken to the Project Viewer.
- p Actions for a directory include renaming or duplicating the directory, as well as creating, uploading, or downloading files to the selected directory. As you've seen, you can access these options by right-clicking on a directory in the StochSS file browser, or by left-clicking the directory to select it and then clicking the 'Actions for (Name)' button below the browser.
+ h4 Create a Model
- p For now, choose the 'New Model' option, then 'Non-Spatial'.
-
- img.quickstart(style="width: 80%;", src="static/file-browser-new-model-dropdown.png")
-
- h4 Editing a Model
- p From here you’re taken to the model editor. Since you're creating a new model, you'll need to choose the default species "mode" for your model. StochSS supports deterministic ODE-based simulations (concentration) as well as discrete stochastic simulations (population). An exciting feature of StochSS is the ability to run "hybrid" simulations that utilize both deterministic and probabilistic algorithms during a simulation, thanks to the powerful
GillesPy2 library. If you’re unsure of which to choose, go ahead and select “Population.”
+ p Let’s create a new model by pressing the “Add Model” button and selecting “New Model” and give it a name. Since you're creating a new model you'll need to choose the default species "mode" for your model. StochSS supports deterministic ODE-based simulations (concentration) as well as discrete stochastic simulations (population). One exciting feature of StochSS is the ability to run "hybrid" simulations that utilize both deterministic and probabilistic algorithms during a simulation, thanks to the powerful
GillesPy2 library. If you’re unsure of which to choose, go ahead and select “Population.”
img.quickstart(style="width: 60%;", src="static/model-editor-select-default-species-mode.png")
- p Proceeding with the model editor, let’s recreate the Degradation model that’s in the Examples folder. This model contains one species, one parameter, and one reaction to represent protein decay. To start, add a new species called “protein” with an initial condition of 50, and make a parameter called “decayrate” with a value of 0.05. At this point we’re ready to create a reaction to apply the “decayrate” parameter to our “protein” species. Since we are modeling decay we’ll select the A → ∅ reaction type.
+ p Now we are ready to begin defining the model. Our model contains one species, one parameter, and one reaction to represent protein decay. To start, add a new species called “protein” with an initial condition of 50, and make a parameter called “decayrate” with a value of 0.05. At this point we’re ready to create a reaction to apply the “decayrate” parameter to our “protein” species. Since we are modeling decay we’ll select the A → ∅ reaction type.
img.quickstart(style="width: 100%;", src="static/model-editor-reaction-editor.png")
@@ -40,13 +35,13 @@ section.page
h4 Workflows
- p To run a full simulation and explore the results more thoroughly, you’ll need to create a StochSS Workflow. Click New Workflow at the bottom of the page to head to the Workflow Selection page. You can also create a new workflow from the browser window by right-clicking a Model (.mdl file) or selecting it and pressing the Actions for (Name) button. From here you’ll see several different options for exploring your model, but at the moment we’re interested in the Ensemble Simulation workflow.
+ p To run a full simulation and explore the results more fully, we’ll need to create a StochSS Workflow. Click the "Return to Project" button at the bottom of the page. Now click “Add Workflow” and select “New Workflow to head to the Workflow Selection page. From here you’ll see several different options for exploring your model, but at the moment we’re interested in the Ensemble Simulation workflow.
img.quickstart(style="width: 90%;", src="static/workflow-editor-ensemble-simulation.png")
- p From here you’ll choose a simulation algorithm and set configuration for your workflow. By default StochSS will choose a simulation style for you, but for this example let’s go with SSA (Stochastic Simulation Algorithm). In the “Stochastic Settings” section set trajectories to 10. This will create an “ensemble” of 10 different stochastic time series. Click the “Start Workflow” button when you’re ready. Your results should appear momentarily.
+ p At this point you’ll choose a simulation algorithm and set configuration for your workflow. By default StochSS will choose a simulation style for you, but for this example let’s go with SSA (Stochastic Simulation Algorithm). In the “Stochastic Settings” section set trajectories to 10. This will create an “ensemble” of 10 different stochastic time series. Click the “Start Workflow” button when you’re ready. Your results should appear momentarily.
img.quickstart(style="width: 90%;", src="static/workflow-results-std-deviation-plot.png")
- p Once your workflow is complete you can explore various graphs describing the simulation results, download the raw data, and download JSON files describing each graph that you can use with the
Plotly graphing library. You can also come back to your results later by accessing the .wkfl file in your quickstart project folder.
+ p Once your workflow is complete you can explore various graphs describing the simulation results, download the raw data, and download JSON files describing each graph that you can use with the
Plotly graphing library.
diff --git a/client/templates/pages/usersHome.pug b/client/templates/pages/usersHome.pug
new file mode 100644
index 0000000000..249b37f645
--- /dev/null
+++ b/client/templates/pages/usersHome.pug
@@ -0,0 +1,55 @@
+selction.page
+
+ div#home-wrapper.card.card-body.col-md-10
+
+ div.logo(id="stochss-logo" data-hook="stochss-logo")
+
+ img(src="/static/stochss-logo.png")
+
+ div.centered.verticle-space-2
+
+ h1.display-5 Welcome to the Stochastic Simulation Service!
+
+ div.row.verticle-space
+
+ div.col-md-0.col-lg-1.col-xl-2
+
+ div.col-md-6.col-lg-5.col-xl-4.inline.text-right
+ button.btn.btn-primary.box-shadow.user-home-btn(id="new-project-btn" data-hook="new-project-btn")
+ | Create a new project
+
+ div.col-md-6.col-lg-5.col-xl-4.inline.text-right
+ button.btn.btn-primary.box-shadow.user-home-btn(id="browse-projects-btn" data-hook="browse-projects-btn")
+ | Browse your projects
+
+ div.col-md-0.col-lg-1.col-xl-2
+
+ div.row.verticle-space-3(style="display: none;")
+
+ div.col-md-0.col-lg-1.col-xl-2
+
+ div.col-md-6.col-lg-5.col-xl-4.inline
+ button.btn.btn-primary.box-shadow.user-home-btn(id="new-model-btn" data-hook="new-model-btn")
+ | Create a new model
+
+ div.col-md-6.col-lg-5.col-xl-4.inline
+ button.btn.btn-primary.box-shadow.user-home-btn(id="browse-files-btn" data-hook="browse-files-btn")
+ | Browse all your files
+
+ div.col-md-0.col-lg-1.col-xl-2
+
+ div.head
+
+ div.verticle-space-3
+
+ div.centered.verticle-space-2
+ h5 Are you new to StochSS? Do you need some help? Learn more about StochSS with our tutorial.
+
+ div.row
+ div.col-md-2.col-lg-3.col-xl-4
+
+ div.col-md-8.col-lg-6.col-xl-4
+ button.btn.btn-primary.box-shadow.user-home-btn(id="quickstart-btn" data-hook="quickstart-btn")
+ | Click here for a tutorial
+
+ div.col-md-2.col-lg-3.col-xl-4
\ No newline at end of file
diff --git a/client/templates/pages/workflowManager.pug b/client/templates/pages/workflowManager.pug
index 15780ce145..6309d6c279 100644
--- a/client/templates/pages/workflowManager.pug
+++ b/client/templates/pages/workflowManager.pug
@@ -6,10 +6,22 @@ section.page
button.big-tip.btn.information-btn.help(data-hook="edit-workflow-help")
+ div(data-hook="project-breadcrumb-links" style="display: none")
+ h5
+ nav(aria-label="breadcrumb")
+ ol.breadcrumb
+ li.breadcrumb-item
+ a.active-link(data-hook="project-breadcrumb")
+ li.breadcrumb-item.active(aria-current="page" data-hook="workflow-breadcrumb")
+
div(data-hook="workflow-name")
+ div.invalid-feedback.wkfl-name(id="workflowNameSpecialCharError") Names can only include the following characters: (0-9), (a-z), (A-Z) and (., -, _, (, or ))
+
div(data-hook="model-path")
+ div.invalid-feedback.mdl-path(id="modelPathSpecialCharError") Names can only include the following characters: (0-9), (a-z), (A-Z) and (., -, _, (, or ))
+
div(data-hook="workflow-editor-container")
div(data-hook="workflow-status-container")
@@ -21,3 +33,5 @@ section.page
div(data-hook="model-viewer-container")
div(data-hook="computational-resources-container")
+
+ button.btn.btn-primary.box-shadow(data-hook="return-to-project-btn" style="display: none;") Return to Project
diff --git a/client/templates/pages/workflowSelection.pug b/client/templates/pages/workflowSelection.pug
index 37e788d3d4..c4de55d0b6 100644
--- a/client/templates/pages/workflowSelection.pug
+++ b/client/templates/pages/workflowSelection.pug
@@ -2,6 +2,19 @@ section.page.col-md-10
h3="Workflow Selection for " + this.modelFile
+ div(data-hook="workflow-selection-breadcrumb-links" style="display: none")
+ h5
+ nav(aria-label="breadcrumb")
+ ol.breadcrumb
+ li.breadcrumb-item
+ a(href="stochss/project/manager?path="+this.projectPath data-hook="project-breadcrumb")=this.projectName
+
+ div.alert-danger(data-hook="invalid-model-message" style="display: none;")
+ | You cannot create a workflow if your model does not have at least one Species and one Reaction, Event, or Rule
+
+ div.alert-info(data-hook="psweep-workflow-message" style="display: none;")
+ | Parameter Sweep workflows require at least one parameter
+
table.table
thead
tr
@@ -9,18 +22,14 @@ section.page.col-md-10
tbody
tr
td
- div
- li.nav-item: a.nav-link(href="stochss/workflow/edit?type=gillespy&path=" + this.modelDir)
- | Ensemble Simulation
-
- div.tooltip-icon(data-html="true" data-toggle="tooltip" title=this.tooltips.ensembleSimulation)
+ button.btn.btn-outline-primary.box-shadow.inline(id="stochss-es" data-hook="stochss-es") Ensemble Simulation
+ div.tooltip-icon.horizontal-space(data-html="true" data-toggle="tooltip" title=this.tooltips.ensembleSimulation)
+
td
- div
- li.nav-item: a.nav-link(href="stochss/workflow/edit?type=parameterSweep&path=" + this.modelDir)
- | Parameter Sweep
-
- div.tooltip-icon(data-html="true" data-toggle="tooltip" title=this.tooltips.parameterSweep)
+ button.btn.btn-outline-primary.box-shadow.inline(id="stochss-ps" data-hook="stochss-ps") Parameter Sweep
+
+ div.tooltip-icon.horizontal-space(data-html="true" data-toggle="tooltip" title=this.tooltips.parameterSweep)
table.table
thead
@@ -28,15 +37,16 @@ section.page.col-md-10
th(scope="col" colspan="4") Jupyter Notebook Workflows
tbody
tr
- td: li.nav-item: button.btn.information-btn.nav-link(data-hook="ensemble-simulation" data-type="gillespy")
+ td: button.btn.btn-outline-primary.box-shadow(id="ensemble-simulation" data-hook="ensemble-simulation" data-type="gillespy")
| Ensemble Simulation
- td: li.nav-item: button.btn.information-btn.nav-link(data-hook="oned-parameter-sweep" data-type="1d_parameter_sweep")
+ td: button.btn.btn-outline-primary.box-shadow(id="oned-parameter-sweep" data-hook="oned-parameter-sweep" data-type="1d_parameter_sweep")
| 1D Parameter Sweep
- td: li.nav-item: button.btn.information-btn.nav-link(data-hook="twod-parameter-sweep" data-type="2d_parameter_sweep")
+ td: button.btn.btn-outline-primary.box-shadow(id="twod-parameter-sweep" data-hook="twod-parameter-sweep" data-type="2d_parameter_sweep")
| 2D Parameter Sweep
tr
- td: li.nav-item: button.btn.information-btn.nav-link(data-hook="sciope-model-exploration" data-type="sciope_model_exploration")
+ td: button.btn.btn-outline-primary.box-shadow(id="sciope-model-exploration" data-hook="sciope-model-exploration" data-type="sciope_model_exploration")
| Sciope Model Exploration
- td: li.nav-item: button.btn.information-btn.nav-link(data-hook="model-inference" data-type="model_inference")
+ td: button.btn.btn-outline-primary.box-shadow(id="model-inference" data-hook="model-inference" data-type="model_inference")
| Sciope Model Inference
+ td: div
diff --git a/client/views/creator-listing.js b/client/views/creator-listing.js
new file mode 100644
index 0000000000..720102e158
--- /dev/null
+++ b/client/views/creator-listing.js
@@ -0,0 +1,20 @@
+//views
+var View = require('ampersand-view');
+//templates
+var template = require('../templates/includes/creatorList.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=remove-creator-btn]' : 'removeCreator'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments);
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments);
+ },
+ removeCreator: function (e) {
+ this.model.collection.remove(this.model)
+ }
+});
\ No newline at end of file
diff --git a/client/views/edit-advanced-specie.js b/client/views/edit-advanced-specie.js
index df186b9595..6fcefbcbb4 100644
--- a/client/views/edit-advanced-specie.js
+++ b/client/views/edit-advanced-specie.js
@@ -48,7 +48,7 @@ module.exports = View.extend({
var value = e.target.selectedOptions.item(0).text
var modeDict = {"Concentration":"continuous","Population":"discrete","Hybrid Concentration/Population":"dynamic"}
this.model.mode = modeDict[value]
- this.model.collection.trigger('update-species', this.model.compID, this.model, false);
+ this.model.collection.trigger('update-species', this.model.compID, this.model, false, false);
this.toggleSwitchingSettings();
},
setSwitchingType: function (e) {
diff --git a/client/views/edit-event-assignment.js b/client/views/edit-event-assignment.js
index 5099b8234e..0540c8eef8 100644
--- a/client/views/edit-event-assignment.js
+++ b/client/views/edit-event-assignment.js
@@ -37,6 +37,7 @@ module.exports = View.extend({
removeAssignment: function () {
this.remove();
this.collection.removeEventAssignment(this.model)
+ this.collection.parent.collection.trigger('change')
},
getOptions: function () {
var species = this.model.collection.parent.collection.parent.species;
diff --git a/client/views/edit-function-definition.js b/client/views/edit-function-definition.js
index 24e98004ce..484a0e9570 100644
--- a/client/views/edit-function-definition.js
+++ b/client/views/edit-function-definition.js
@@ -17,6 +17,9 @@ module.exports = View.extend({
},
render: function () {
View.prototype.render.apply(this, arguments);
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
},
editAnnotation: function () {
var self = this;
@@ -35,7 +38,7 @@ module.exports = View.extend({
}
});
okBtn.addEventListener('click', function (e) {
- self.model.annotation = input.value;
+ self.model.annotation = input.value.trim();
self.parent.renderEdirFunctionDefinitionView();
modal.modal('hide');
});
diff --git a/client/views/edit-model-view.js b/client/views/edit-model-view.js
new file mode 100644
index 0000000000..cdcca8ec82
--- /dev/null
+++ b/client/views/edit-model-view.js
@@ -0,0 +1,122 @@
+var $ = require('jquery');
+var _ = require('underscore');
+var xhr = require('xhr');
+var path = require('path');
+//support files
+var app = require('../app');
+var modals = require('../modals');
+//views
+var View = require('ampersand-view');
+//templates
+var template = require('../templates/includes/editModelView.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=project-model-edit]' : 'handleEditModelClick',
+ 'click [data-hook=new-workflow-btn]' : 'handleNewWorkflowClick',
+ 'click [data-hook=edit-model-annotation-btn]' : 'handleEditAnnotationClick',
+ 'click [data-hook=project-model-remove]' : 'handleRemoveModelClick',
+ 'click [data-hook=collapse-annotation-text]' : 'changeCollapseButtonText',
+ 'change [data-hook=annotation]' : 'updateAnnotation'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments);
+ this.workflowGroupOptions = this.model.collection.parent.workflowGroups.map(function (wg) {
+ return wg.name
+ })
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments);
+ if(!this.model.annotation){
+ $(this.queryByHook('edit-model-annotation-btn')).text('Add Notes')
+ }else{
+ $(this.queryByHook('collapse-annotation-container'+this.model.name.replace(/ /g,""))).collapse('show')
+ }
+ },
+ handleEditModelClick: function (e) {
+ let queryString = "?path="+this.model.directory
+ window.location.href = path.join(app.getBasePath(), "stochss/models/edit")+queryString
+ },
+ handleNewWorkflowClick: function (e) {
+ let wkgpNames = this.model.collection.parent.workflowGroups.map(function (model) {
+ return model.name
+ })
+ if(this.model.collection.parent.workflowGroups.length <= 0 || !wkgpNames.includes("WorkflowGroup1")) {
+ this.addNewWorkflowGroup(_.bind(this.openWorkflowManager, this))
+ }else{
+ let wkgpFile = "WorkflowGroup1.wkgp"
+ this.openWorkflowManager(wkgpFile)
+ }
+ },
+ addNewWorkflowGroup: function (cb) {
+ let self = this
+ let workflowGroupName = "WorkflowGroup1.wkgp"
+ let workflowGroupPath = path.join(this.parent.parent.projectPath, workflowGroupName)
+ let endpoint = path.join(app.getApiPath(), "project/new-workflow-group")+"?path="+workflowGroupPath
+ xhr({uri: endpoint,json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ if(cb) {
+ cb(workflowGroupName)
+ }else{
+ self.update("workflow-group")
+ }
+ }else{
+ let errorModel = $(modals.newProjectOrWorkflowGroupErrorHtml(body.Reason, body.Message)).modal()
+ }
+ });
+ },
+ openWorkflowManager: function (wkgpFile) {
+ let parentPath = path.join(path.dirname(this.model.directory), wkgpFile)
+ let queryString = "?path="+this.model.directory+"&parentPath="+parentPath
+ let endpoint = path.join(app.getBasePath(), 'stochss/workflow/selection')+queryString
+ window.location.href = endpoint
+ },
+ handleRemoveModelClick: function (e) {
+ let self = this
+ if(document.querySelector('#moveToTrashConfirmModal')) {
+ document.querySelector('#moveToTrashConfirmModal').remove();
+ }
+ let modal = $(modals.moveToTrashConfirmHtml("model")).modal();
+ let yesBtn = document.querySelector('#moveToTrashConfirmModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {
+ let trashPath = path.join(path.dirname(self.model.directory), "trash", self.model.directory.split('/').pop())
+ let queryString = "?srcPath="+self.model.directory+"&dstPath="+trashPath
+ let endpoint = path.join(app.getApiPath(), 'file/move')+queryString
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ self.parent.parent.update("model-editor")
+ }
+ });
+ modal.modal('hide')
+ });
+ },
+ handleEditAnnotationClick: function (e) {
+ let buttonTxt = e.target.innerText;
+ if(buttonTxt.startsWith("Add")){
+ $(this.queryByHook('collapse-annotation-container'+this.model.name.replace(/ /g,""))).collapse('show')
+ $(this.queryByHook('edit-model-annotation-btn')).text('Edit Notes')
+ }else if(!$("#annotation-text"+this.model.name.replace(/ /g,"")).attr('class').includes('show')){
+ $("#annotation-text"+this.model.name.replace(/ /g,"")).collapse('show')
+ $(this.queryByHook("collapse-annotation-text")).text('-')
+ }
+ document.querySelector("#annotation"+this.model.name.replace(/ /g,"")).focus()
+ },
+ updateAnnotation: function (e) {
+ this.model.annotation = e.target.value.trim();
+ if(this.model.annotation === "") {
+ $(this.queryByHook('collapse-annotation-container'+this.model.name.replace(/ /g,""))).collapse('hide')
+ $(this.queryByHook('edit-model-annotation-btn')).text('Add Notes')
+ }
+ this.model.saveModel()
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+});
\ No newline at end of file
diff --git a/client/views/edit-models-view.js b/client/views/edit-models-view.js
new file mode 100644
index 0000000000..f7e43e941a
--- /dev/null
+++ b/client/views/edit-models-view.js
@@ -0,0 +1,30 @@
+let $ = require('jquery');
+//views
+var View = require('ampersand-view');
+var EditModelView = require('./edit-model-view');
+//templates
+var template = require('../templates/includes/editModelsView.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {},
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ },
+ render: function (attrs, arguments) {
+ View.prototype.render.apply(this, arguments)
+ this.renderEditModelview()
+ },
+ renderEditModelview: function () {
+ if(this.editModelView) {
+ this.editModelView.remove()
+ }
+ this.editModelView = this.renderCollection(this.collection, EditModelView, this.queryByHook("project-models-list"))
+ $(document).ready(function () {
+ $('[data-toggle="tooltip"]').tooltip();
+ $('[data-toggle="tooltip"]').click(function () {
+ $('[data-toggle="tooltip"]').tooltip("hide");
+ });
+ });
+ }
+});
\ No newline at end of file
diff --git a/client/views/edit-parameter.js b/client/views/edit-parameter.js
index f496514668..5775acebd0 100644
--- a/client/views/edit-parameter.js
+++ b/client/views/edit-parameter.js
@@ -30,6 +30,9 @@ module.exports = View.extend({
$(document).on('shown.bs.modal', function (e) {
$('[autofocus]', e.target).focus();
});
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
if(!this.model.annotation){
$(this.queryByHook('edit-annotation-btn')).text('Add')
}
@@ -49,7 +52,7 @@ module.exports = View.extend({
if(document.querySelector('#parameterAnnotationModal')) {
document.querySelector('#parameterAnnotationModal').remove();
}
- let modal = $(annotationModalHtml("parameter", name, annotation)).modal();
+ let modal = $(modals.annotationModalHtml("parameter", name, annotation)).modal();
let okBtn = document.querySelector('#parameterAnnotationModal .ok-model-btn');
let input = document.querySelector('#parameterAnnotationModal #parameterAnnotationInput');
input.addEventListener("keyup", function (event) {
@@ -59,13 +62,13 @@ module.exports = View.extend({
}
});
okBtn.addEventListener('click', function (e) {
- self.model.annotation = input.value;
+ self.model.annotation = input.value.trim();
self.parent.renderEditParameter();
modal.modal('hide');
});
},
setParameterName: function (e) {
- this.model.name = e.target.value;
+ this.model.name = e.target.value.trim();
this.model.collection.trigger('update-parameters', this.model.compID, this.model);
this.model.collection.trigger('remove')
},
@@ -93,9 +96,9 @@ module.exports = View.extend({
required: true,
name: 'expression',
label: '',
- tests: '',
+ tests: tests.valueTests,
modelKey: 'expression',
- valueType: 'string',
+ valueType: 'number',
value: this.model.expression,
});
},
diff --git a/client/views/edit-project.js b/client/views/edit-project.js
new file mode 100644
index 0000000000..beae9ec95e
--- /dev/null
+++ b/client/views/edit-project.js
@@ -0,0 +1,57 @@
+let $ = require('jquery');
+let xhr = require('xhr');
+let path = require('path');
+//support files
+let app = require('../app');
+let modals = require('../modals')
+//views
+let View = require('ampersand-view');
+//templates
+let template = require('../templates/includes/editProject.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=open-project-btn]' : 'handleOpenProjectClick',
+ 'click [data-hook=remove-project-btn]' : 'handleRemoveProjectClick'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments);
+ this.projectName = this.model.directory.split('/').pop().split('.')[0]
+ this.location = this.getLocationString(this.model.directory)
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments);
+ },
+ getLocationString: function (projectPath) {
+ let parent = path.dirname(projectPath)
+ if(parent === '.') {
+ return ''
+ }
+ return 'Location: '+parent
+ },
+ handleOpenProjectClick: function (e) {
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+this.model.directory
+ },
+ handleRemoveProjectClick: function (e) {
+ console.log("deleting the project")
+ let endpoint = path.join(app.getApiPath(), "file/delete")+"?path="+this.model.directory
+ var self = this
+ if(document.querySelector('#deleteFileModal')) {
+ document.querySelector('#deleteFileModal').remove()
+ }
+ let modal = $(modals.deleteFileHtml("project")).modal();
+ let yesBtn = document.querySelector('#deleteFileModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {
+ xhr({uri: endpoint}, function(err, response, body) {
+ if(response.statusCode < 400) {
+ self.model.collection.remove(self.model)
+ console.log(body)
+ }else{
+ body = JSON.parse(body)
+ }
+ })
+ modal.modal('hide')
+ });
+ }
+});
\ No newline at end of file
diff --git a/client/views/edit-rule.js b/client/views/edit-rule.js
index f61d786f55..d6f4aa1b9a 100644
--- a/client/views/edit-rule.js
+++ b/client/views/edit-rule.js
@@ -47,6 +47,9 @@ module.exports = View.extend({
$(document).on('shown.bs.modal', function (e) {
$('[autofocus]', e.target).focus();
});
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
if(!this.model.annotation){
$(this.queryByHook('edit-annotation-btn')).text('Add')
}
@@ -72,7 +75,7 @@ module.exports = View.extend({
}
});
okBtn.addEventListener('click', function (e) {
- self.model.annotation = input.value;
+ self.model.annotation = input.value.trim();
self.parent.renderRules();
modal.modal('hide');
});
diff --git a/client/views/edit-specie.js b/client/views/edit-specie.js
index 17b3c0ba22..d641c56d09 100644
--- a/client/views/edit-specie.js
+++ b/client/views/edit-specie.js
@@ -30,6 +30,9 @@ module.exports = View.extend({
$(document).on('shown.bs.modal', function (e) {
$('[autofocus]', e.target).focus();
});
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
if(!this.model.annotation){
$(this.queryByHook('edit-annotation-btn')).text('Add')
}
@@ -43,8 +46,8 @@ module.exports = View.extend({
this.collection.removeSpecie(this.model);
},
setSpeciesName: function (e) {
- this.model.name = e.target.value;
- this.model.collection.trigger('update-species', this.model.compID, this.model, true);
+ this.model.name = e.target.value.trim();
+ this.model.collection.trigger('update-species', this.model.compID, this.model, true, false);
this.model.collection.trigger('remove');
},
editAnnotation: function () {
@@ -64,7 +67,7 @@ module.exports = View.extend({
}
});
okBtn.addEventListener('click', function (e) {
- self.model.annotation = input.value;
+ self.model.annotation = input.value.trim();
self.parent.renderEditSpeciesView();
modal.modal('hide');
});
diff --git a/client/views/edit-workflow-group-view.js b/client/views/edit-workflow-group-view.js
new file mode 100644
index 0000000000..a9545e50d8
--- /dev/null
+++ b/client/views/edit-workflow-group-view.js
@@ -0,0 +1,73 @@
+var $ = require('jquery');
+var xhr = require('xhr');
+var path = require('path');
+//support files
+var app = require('../app');
+var modals = require('../modals');
+//views
+var View = require('ampersand-view');
+var EditWorkflowsView = require('./edit-workflows-view');
+//templates
+var template = require('../templates/includes/editWorkflowGroupView.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=project-workflow-group-view]' : 'handleViewWorkflowsClick',
+ 'click [data-hook=project-workflow-group-remove]' : 'handleRemoveWorkflowGroupClick'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments);
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments);
+ this.renderEditWorkflowsView();
+ if(this.model.collection.length === 1) {
+ this.handleViewWorkflowsClick(undefined)
+ $(this.queryByHook("project-workflow-group-remove")).prop('disabled', true)
+ }
+ },
+ renderEditWorkflowsView: function () {
+ if(this.editWorkflowsView){
+ this.editWorkflowsView.remove()
+ }
+ this.editWorkflowsView = new EditWorkflowsView({
+ collection: this.model.workflows
+ });
+ this.registerRenderSubview(this.editWorkflowsView, "project-workflows-container")
+ },
+ registerRenderSubview: function (view, hook) {
+ this.registerSubview(view);
+ this.renderSubview(view, this.queryByHook(hook));
+ },
+ handleViewWorkflowsClick: function (e) {
+ let options = {"+":"show", "-":"hide"}
+ let newText = {"+":"-", "-":"+"}
+ let text = $(this.queryByHook("project-workflow-group-view")).text()
+ $(this.queryByHook("project-workflows-container")).collapse(options[text])
+ $(this.queryByHook("project-workflow-group-view")).text(newText[text])
+ },
+ handleRemoveWorkflowGroupClick: function (e) {
+ if(this.model.collection.length > 1) {
+ let self = this
+ if(document.querySelector('#moveToTrashConfirmModal')) {
+ document.querySelector('#moveToTrashConfirmModal').remove();
+ }
+ let title = "workflow group and it workflows"
+ let modal = $(modals.moveToTrashConfirmHtml(title)).modal();
+ let yesBtn = document.querySelector('#moveToTrashConfirmModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {
+ let expPath = path.join(self.parent.parent.projectPath, self.model.name)+".wkgp"
+ let trashPath = path.join(self.parent.parent.projectPath, "trash", self.model.name + ".wkgp")
+ let queryString = "?srcPath="+expPath+"&dstPath="+trashPath
+ let endpoint = path.join(app.getApiPath(), 'file/move')+queryString
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ self.parent.parent.update("workflow-group-editor")
+ }
+ });
+ modal.modal('hide')
+ });
+ }
+ },
+});
\ No newline at end of file
diff --git a/client/views/edit-workflow-groups-view.js b/client/views/edit-workflow-groups-view.js
new file mode 100644
index 0000000000..89109e2c92
--- /dev/null
+++ b/client/views/edit-workflow-groups-view.js
@@ -0,0 +1,17 @@
+//views
+var View = require('ampersand-view');
+var EditWorkflowGroupView = require('./edit-workflow-group-view');
+//templates
+var template = require('../templates/includes/editWorkflowGroupsView.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {},
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments);
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments);
+ this.renderCollection(this.collection, EditWorkflowGroupView, this.queryByHook("project-workflow-groups-list"))
+ }
+});
\ No newline at end of file
diff --git a/client/views/edit-workflow-view.js b/client/views/edit-workflow-view.js
new file mode 100644
index 0000000000..e4f15df186
--- /dev/null
+++ b/client/views/edit-workflow-view.js
@@ -0,0 +1,111 @@
+var $ = require('jquery');
+var _ = require('underscore');
+var xhr = require('xhr');
+var path = require('path');
+//support files
+var app = require('../app');
+var modals = require('../modals');
+//views
+var View = require('ampersand-view');
+//templates
+var template = require('../templates/includes/editWorkflowView.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=project-workflow-open]' : 'handleOpenWorkflowClick',
+ 'click [data-hook=edit-workflow-annotation-btn]' : 'handleEditAnnotationClick',
+ 'click [data-hook=project-workflow-remove]' : 'handleDeleteWorkflowClick',
+ 'click [data-hook=collapse-annotation-text]' : 'changeCollapseButtonText',
+ 'change [data-hook=annotation]' : 'updateAnnotation'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments);
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments);
+ if(this.model.status === "running"){
+ this.getStatus()
+ }
+ if(this.model.path.endsWith('.ipynb')) {
+ this.queryByHook('annotation-container').style.display = "none"
+ }
+ if(!this.model.annotation || !this.model.annotation.trim()){
+ $(this.queryByHook('edit-workflow-annotation-btn')).text('Add Notes')
+ }else{
+ $(this.queryByHook('collapse-annotation-container'+this.model.name.replace(/ /g,""))).collapse('show')
+ }
+ },
+ getStatus: function () {
+ var self = this;
+ var endpoint = path.join(app.getApiPath(), "workflow/workflow-status")+"?path="+this.model.path;
+ xhr({uri: endpoint}, function (err, response, body) {
+ if(self.model.status !== body )
+ self.model.status = body;
+ if(self.model.status === 'running')
+ setTimeout(_.bind(self.getStatus, self), 1000);
+ else{
+ $(self.queryByHook("project-workflow-status")).text(self.model.status)
+ }
+ });
+ },
+ handleOpenWorkflowClick: function (e) {
+ if(this.model.path.endsWith('.ipynb')) {
+ window.open(path.join(app.getBasePath(), "notebooks", this.model.path))
+ }else{
+ let endpoint = path.join(app.getBasePath(), "stochss/workflow/edit")+"?path="+this.model.path+"&type=none";
+ window.location.href = endpoint
+ }
+ },
+ handleDeleteWorkflowClick: function (e) {
+ let self = this
+ if(document.querySelector('#moveToTrashConfirmModal')) {
+ document.querySelector('#moveToTrashConfirmModal').remove();
+ }
+ let modal = $(modals.moveToTrashConfirmHtml("workflow")).modal();
+ let yesBtn = document.querySelector('#moveToTrashConfirmModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {
+ let file = self.model.path.split('/').pop()
+ let trashPath = path.join(path.dirname(path.dirname(self.model.path)), "trash", file)
+ let queryString = "?srcPath="+self.model.path+"&dstPath="+trashPath
+ let endpoint = path.join(app.getApiPath(), 'file/move')+queryString
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ self.parent.parent.parent.parent.update("workflows-editor")
+ }
+ });
+ modal.modal('hide')
+ });
+ },
+ handleEditAnnotationClick: function (e) {
+ let buttonTxt = e.target.innerText;
+ if(buttonTxt.startsWith("Add")){
+ $(this.queryByHook('collapse-annotation-container'+this.model.name.replace(/ /g,""))).collapse('show')
+ $(this.queryByHook('edit-workflow-annotation-btn')).text('Edit Notes')
+ }else if(!$("#annotation-text"+this.model.name.replace(/ /g,"")).attr('class').includes('show')){
+ $("#annotation-text"+this.model.name.replace(/ /g,"")).collapse('show')
+ $(this.queryByHook("collapse-annotation-text")).text('-')
+ }
+ document.querySelector("#annotation"+this.model.name.replace(/ /g,"")).focus()
+ },
+ updateAnnotation: function (e) {
+ this.model.annotation = e.target.value.trim();
+ if(this.model.annotation === "") {
+ $(this.queryByHook('collapse-annotation-container'+this.model.name.replace(/ /g,""))).collapse('hide')
+ $(this.queryByHook('edit-workflow-annotation-btn')).text('Add Notes')
+ }
+ let queryString = "?path="+path.join(this.model.path, "info.json")
+ let endpoint = path.join(app.getApiPath(), "workflow/save-annotation")+queryString
+ let body = {'annotation':this.model.annotation}
+ xhr({uri:endpoint, json:true, method:'post', body:body}, function (err, response, body) {console.log("Saved Notes")})
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+});
\ No newline at end of file
diff --git a/client/views/edit-workflows-view.js b/client/views/edit-workflows-view.js
new file mode 100644
index 0000000000..a7bae109c4
--- /dev/null
+++ b/client/views/edit-workflows-view.js
@@ -0,0 +1,116 @@
+var $ = require('jquery');
+var xhr = require('xhr');
+var path = require('path');
+//support files
+var app = require('../app');
+var modals = require('../modals');
+//views
+var View = require('ampersand-view');
+var EditWorkflowView = require('./edit-workflow-view');
+//templates
+var template = require('../templates/includes/editWorkflowsView.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=project-workflow-group-new-workflow]' : 'handleNewWorkflowClick',
+ 'click [data-hook=project-workflow-group-add-workflow]' : 'handleAddWorkflowClick',
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments)
+ this.renderEditWorkflowView()
+ },
+ renderEditWorkflowView: function () {
+ if(this.editWorkflowView) {
+ this.editWorkflowView.remove()
+ }
+ this.editWorkflowView = this.renderCollection(this.collection, EditWorkflowView, this.queryByHook("project-workflows-list"))
+ $(document).ready(function () {
+ $('[data-toggle="tooltip"]').tooltip();
+ $('[data-toggle="tooltip"]').click(function () {
+ $('[data-toggle="tooltip"]').tooltip("hide");
+ });
+ });
+ },
+ validateName(input) {
+ var error = ""
+ if(input.endsWith('/')) {
+ error = 'forward'
+ }
+ let invalidChars = "`~!@#$%^&*=+[{]}\"|:;'<,>?\\"
+ for(var i = 0; i < input.length; i++) {
+ if(invalidChars.includes(input.charAt(i))) {
+ error = error === "" || error === "special" ? "special" : "both"
+ }
+ }
+ return error
+ },
+ handleNewWorkflowClick: function (e) {
+ let models = this.parent.parent.parent.model.models
+ if(models.length > 0) {
+ let self = this
+ if(document.querySelector("#newProjectWorkflowModal")) {
+ document.querySelector("#newProjectWorkflowModal").remove()
+ }
+ let options = models.map(function (model) { return model.name });
+ let modal = $(modals.newProjectWorkflowHtml("Name of the model: ", options)).modal()
+ let okBtn = document.querySelector("#newProjectWorkflowModal .ok-model-btn")
+ let select = document.querySelector("#newProjectWorkflowModal #select")
+ okBtn.addEventListener('click', function (e) {
+ let mdlFile = select.value.endsWith('.mdl') ? select.value : select.value + ".mdl"
+ let mdlPath = path.join(self.parent.parent.parent.projectPath, mdlFile)
+ let parentPath = path.join(self.parent.parent.parent.projectPath, self.parent.model.name)+".wkgp"
+ let queryString = "?path="+mdlPath+"&parentPath="+parentPath
+ let endpoint = path.join(app.getBasePath(), 'stochss/workflow/selection')+queryString
+ modal.modal('hide')
+ window.location.href = endpoint
+ });
+ }else{
+ let title = "No Models Found"
+ let message = "You need to add a model before you can create a new workflow."
+ let modal = $(modals.noModelsMessageHtml(title, message)).modal()
+ }
+ },
+ handleAddWorkflowClick: function (e) {
+ let self = this
+ if(document.querySelector("#newProjectWorkflowModal")) {
+ document.querySelector("#newProjectWorkflowModal").remove()
+ }
+ let modal = $(modals.addExistingWorkflowToProjectHtml()).modal()
+ let okBtn = document.querySelector("#newProjectWorkflowModal .ok-model-btn")
+ let input = document.querySelector("#newProjectWorkflowModal #workflowPathInput")
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newProjectWorkflowModal #workflowPathInputEndCharError')
+ var charErrMsg = document.querySelector('#newProjectWorkflowModal #workflowPathInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener('click', function (e) {
+ if(Boolean(input.value)) {
+ let expPath = path.join(self.parent.parent.projectPath, self.model.name)+".wkgp"
+ let queryString = "?path="+expPath+"&wkflPath="+input.value
+ let endpoint = path.join(app.getApiPath(), "project/add-existing-workflow")+queryString
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ self.parent.parent.update("workflow-group-editor")
+ let successModal = $(modals.addExistingWorkflowToProjectSuccessHtml(body.message)).modal()
+ }else{
+ let errorModal = $(modals.addExistingWorkflowToProjectErrorHtml(body.Reason, body.Message)).modal()
+ }
+ });
+ modal.modal('hide')
+ }
+ });
+ }
+});
\ No newline at end of file
diff --git a/client/views/event-assignments-editor.js b/client/views/event-assignments-editor.js
index 36b4d4eda5..552566702c 100644
--- a/client/views/event-assignments-editor.js
+++ b/client/views/event-assignments-editor.js
@@ -26,5 +26,6 @@ module.exports = View.extend({
},
addAssignment: function () {
this.collection.addEventAssignment();
+ this.collection.parent.collection.trigger('change')
},
})
\ No newline at end of file
diff --git a/client/views/event-details.js b/client/views/event-details.js
index d93d9a54b8..c435f0017b 100644
--- a/client/views/event-details.js
+++ b/client/views/event-details.js
@@ -78,8 +78,13 @@ module.exports = View.extend({
this.model.useValuesFromTriggerTime = e.target.dataset.name === "trigger";
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('advanced-event-button')).text();
- text === '+' ? $(this.queryByHook('advanced-event-button')).text('-') : $(this.queryByHook('advanced-event-button')).text('+');
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
subviews: {
inputDelay: {
diff --git a/client/views/event-listings.js b/client/views/event-listings.js
index ef5cfa083e..9bd75fcc1a 100644
--- a/client/views/event-listings.js
+++ b/client/views/event-listings.js
@@ -60,6 +60,9 @@ module.exports = View.extend({
$(document).on('shown.bs.modal', function (e) {
$('[autofocus]', e.target).focus();
});
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
if(!this.model.annotation){
$(this.queryByHook('edit-annotation-btn')).text('Add')
}
@@ -78,7 +81,7 @@ module.exports = View.extend({
if(document.querySelector('#eventAnnotationModal')) {
document.querySelector('#eventAnnotationModal').remove();
}
- let modal = $(annotationModalHtml("event", name, annotation)).modal();
+ let modal = $(modals.annotationModalHtml("event", name, annotation)).modal();
let okBtn = document.querySelector('#eventAnnotationModal .ok-model-btn');
let input = document.querySelector('#eventAnnotationModal #eventAnnotationInput');
input.addEventListener("keyup", function (event) {
@@ -88,7 +91,7 @@ module.exports = View.extend({
}
});
okBtn.addEventListener('click', function (e) {
- self.model.annotation = input.value;
+ self.model.annotation = input.value.trim();
self.parent.renderEventListingsView();
modal.modal('hide');
});
diff --git a/client/views/events-editor.js b/client/views/events-editor.js
index 63dad858fe..ad1e47c55e 100644
--- a/client/views/events-editor.js
+++ b/client/views/events-editor.js
@@ -107,7 +107,12 @@ module.exports = View.extend({
return detailsView
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
})
\ No newline at end of file
diff --git a/client/views/file-browser-view.js b/client/views/file-browser-view.js
new file mode 100644
index 0000000000..a3181b61eb
--- /dev/null
+++ b/client/views/file-browser-view.js
@@ -0,0 +1,1394 @@
+let jstree = require('jstree');
+let path = require('path');
+let xhr = require('xhr');
+let $ = require('jquery');
+let _ = require('underscore');
+//support files
+let app = require('../app');
+let modals = require('../modals');
+//views
+let View = require('ampersand-view');
+//templates
+let template = require('../templates/includes/fileBrowserView.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=collapse-browse-files]' : 'changeCollapseButtonText',
+ 'click [data-hook=refresh-jstree]' : 'refreshJSTree',
+ 'click [data-hook=options-for-node]' : 'showContextMenuForNode',
+ 'click [data-hook=new-directory]' : 'handleCreateDirectoryClick',
+ 'click [data-hook=browser-new-workflow-group]' : 'handleCreateWorkflowGroupClick',
+ 'click [data-hook=browser-new-model]' : 'handleCreateModelClick',
+ 'click [data-hook=browser-existing-model]' : 'handleAddExistingModelClick',
+ 'click [data-hook=upload-file-btn]' : 'handleUploadFileClick',
+ 'click [data-hook=file-browser-help]' : function () {
+ let modal = $(modals.operationInfoModalHtml('file-browser')).modal();
+ },
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ var self = this
+ this.root = "none"
+ if(attrs && attrs.root){
+ this.root = attrs.root
+ }
+ this.ajaxData = {
+ "url" : function (node) {
+ if(node.parent === null){
+ var endpoint = path.join(app.getApiPath(), "file/browser-list")+"?path="+self.root
+ if(self.root !== "none") {
+ endpoint += "&isRoot=True"
+ }
+ return endpoint
+ }
+ return path.join(app.getApiPath(), "file/browser-list")+"?path="+ node.original._path
+ },
+ "dataType" : "json",
+ "data" : function (node) {
+ return { 'id' : node.id}
+ },
+ }
+ this.treeSettings = {
+ 'plugins': ['types', 'wholerow', 'changed', 'contextmenu', 'dnd'],
+ 'core': {'multiple' : false, 'animation': 0,
+ 'check_callback': function (op, node, par, pos, more) {
+ if(op === "rename_node" && self.validateName(pos, true) !== ""){
+ document.querySelector("#renameSpecialCharError").style.display = "block"
+ setTimeout(function () {
+ document.querySelector("#renameSpecialCharError").style.display = "none"
+ }, 5000)
+ return false
+ }
+ if(op === 'move_node' && node && node.type && node.type === "workflow" && node.original && node.original._status && node.original._status === "running"){
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.original && node && node.type && (node.type === "nonspatial" || node.type === "spatial") &&
+ !(node.original._path.includes("trash") || more.ref.original.text === "trash")) {
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.original && node && node.type && node.type === "workflow-group") {
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.original && node && node.type && (node.type === "workflow") &&
+ !(node.original._path.includes("trash") || more.ref.original.text === "trash")) {
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.type && node.original._path.includes("trash") &&
+ ((node.type === "workflow" && more.ref.type !== 'workflow-group') ||
+ ((node.type === "nonspatial" || node.type === "spatial" || node.type === "workflow-group") && more.ref.type !== 'root'))){
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.type && !(node.type === "workflow" || node.type === "notebook") && !(more.ref.type == 'folder' || more.ref.type == 'root')){
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.type && node.type === "notebook" && !(more.ref.type == 'folder' || more.ref.type == 'root' || more.ref.type == 'workflow-group')) {
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.type && node.original._path.includes("trash") && more.ref.original.text == 'trash') {
+ return false
+ }
+ if(op === 'move_node' && more && more.ref && more.ref.type && (more.ref.type === 'folder' || more.ref.type === 'root')){
+ if(!more.ref.state.loaded){
+ return false
+ }
+ var exists = false
+ var BreakException = {}
+ var text = node.text
+ if(!isNaN(text.split(' ').pop().split('.').join(""))){
+ text = text.replace(text.split(' ').pop(), '').trim()
+ }
+ if(more.ref.text !== "trash"){
+ try{
+ more.ref.children.forEach(function (child) {
+ var child_node = $('#models-jstree-view').jstree().get_node(child)
+ exists = child_node.text === text
+ if(exists){
+ throw BreakException;
+ }
+ })
+ }catch{
+ return false;
+ }
+ }
+ }
+ if(op === 'move_node' && more && (pos != 0 || more.pos !== "i") && !more.core){
+ return false
+ }
+ if(op === 'move_node' && more && more.core) {
+ var newDir = par.original._path !== "/" ? par.original._path : ""
+ var file = node.original._path.split('/').pop()
+ var oldPath = node.original._path
+ let queryStr = "?srcPath="+oldPath+"&dstPath="+path.join(newDir, file)
+ var endpoint = path.join(app.getApiPath(), "file/move")+queryStr
+ xhr({uri: endpoint}, function(err, response, body) {
+ if(response.statusCode < 400) {
+ node.original._path = path.join(newDir, file)
+ console.log((oldPath.includes('trash/') || newDir.endsWith('trash')))
+ self.updateParent(node.type, (oldPath.includes('trash/') || newDir.endsWith('trash')))
+ }else{
+ body = JSON.parse(body)
+ if(par.type === 'root'){
+ $('#models-jstree-view').jstree().refresh()
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(par);
+ }
+ }
+ });
+ }
+ return true
+ },
+ 'themes': {'stripes': true, 'variant': 'large'},
+ 'data': self.ajaxData,
+ },
+ 'types' : {
+ 'root' : {"icon": "jstree-icon jstree-folder"},
+ 'folder' : {"icon": "jstree-icon jstree-folder"},
+ 'spatial' : {"icon": "jstree-icon jstree-file"},
+ 'nonspatial' : {"icon": "jstree-icon jstree-file"},
+ 'project' : {"icon": "jstree-icon jstree-file"},
+ 'workflow-group' : {"icon": "jstree-icon jstree-folder"},
+ 'workflow' : {"icon": "jstree-icon jstree-file"},
+ 'notebook' : {"icon": "jstree-icon jstree-file"},
+ 'mesh' : {"icon": "jstree-icon jstree-file"},
+ 'sbml-model' : {"icon": "jstree-icon jstree-file"},
+ 'other' : {"icon": "jstree-icon jstree-file"},
+ },
+ }
+ this.setupJstree()
+ },
+ render: function () {
+ View.prototype.render.apply(this, arguments)
+ var self = this;
+ this.nodeForContextMenu = "";
+ this.jstreeIsLoaded = false
+ // Remove all backdrop on close
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ if($(".modal-backdrop").length > 1) {
+ $(".modal-backdrop").remove();
+ }
+ e.target.remove()
+ });
+ window.addEventListener('pageshow', function (e) {
+ var navType = window.performance.navigation.type
+ if(navType === 2){
+ window.location.reload()
+ }
+ });
+ },
+ updateParent: function (type, trash = false) {
+ if(trash){
+ this.parent.update("all")
+ }else if(type === "nonspatial" || type === "workflow" || type === "workflow-group") {
+ this.parent.update("file-browser")
+ }
+ },
+ refreshJSTree: function () {
+ this.jstreeIsLoaded = false
+ $('#models-jstree-view').jstree().deselect_all(true)
+ $('#models-jstree-view').jstree().refresh()
+ },
+ refreshInitialJSTree: function () {
+ var self = this;
+ var count = $('#models-jstree-view').jstree()._model.data['#'].children.length;
+ if(count == 0) {
+ self.refreshJSTree();
+ setTimeout(function () {
+ self.refreshInitialJSTree();
+ }, 3000);
+ }
+ },
+ selectNode: function (node, fileName) {
+ let self = this
+ if(!this.jstreeIsLoaded || !$('#models-jstree-view').jstree().is_loaded(node) && $('#models-jstree-view').jstree().is_loading(node)) {
+ setTimeout(_.bind(self.selectNode, self, node, fileName), 1000);
+ }else{
+ node = $('#models-jstree-view').jstree().get_node(node)
+ var child = ""
+ for(var i = 0; i < node.children.length; i++) {
+ var child = $('#models-jstree-view').jstree().get_node(node.children[i])
+ if(child.original.text === fileName) {
+ $('#models-jstree-view').jstree().select_node(child)
+ let optionsButton = $(self.queryByHook("options-for-node"))
+ if(!self.nodeForContextMenu){
+ optionsButton.prop('disabled', false)
+ }
+ optionsButton.text("Actions for " + child.original.text)
+ self.nodeForContextMenu = child;
+ break
+ }
+ }
+ }
+ },
+ handleUploadFileClick: function (e) {
+ let type = e.target.dataset.type
+ this.uploadFile(undefined, type)
+ },
+ uploadFile: function (o, type) {
+ var self = this
+ if(document.querySelector('#uploadFileModal')) {
+ document.querySelector('#uploadFileModal').remove()
+ }
+ let modal = $(modals.uploadFileHtml(type)).modal();
+ let uploadBtn = document.querySelector('#uploadFileModal .upload-modal-btn');
+ let fileInput = document.querySelector('#uploadFileModal #fileForUpload');
+ let input = document.querySelector('#uploadFileModal #fileNameInput');
+ fileInput.addEventListener('change', function (e) {
+ if(fileInput.files.length){
+ uploadBtn.disabled = false
+ }else{
+ uploadBtn.disabled = true
+ }
+ })
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#uploadFileModal #fileNameInputEndCharError')
+ var charErrMsg = document.querySelector('#uploadFileModal #fileNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ uploadBtn.addEventListener('click', function (e) {
+ let file = fileInput.files[0]
+ var fileinfo = {"type":type,"name":"","path":"/"}
+ if(o && o.original){
+ fileinfo.path = o.original._path
+ }
+ if(Boolean(input.value) && self.validateName(input.value) === ""){
+ fileinfo.name = input.value.trim()
+ }
+ let formData = new FormData()
+ formData.append("datafile", file)
+ formData.append("fileinfo", JSON.stringify(fileinfo))
+ let endpoint = path.join(app.getApiPath(), 'file/upload');
+ let req = new XMLHttpRequest();
+ req.open("POST", endpoint)
+ req.onload = function (e) {
+ var resp = JSON.parse(req.response)
+ if(req.status < 400) {
+ if(o){
+ var node = $('#models-jstree-view').jstree().get_node(o.parent);
+ if(node.type === "root" || node.type === "#"){
+ self.refreshJSTree();
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ }else{
+ self.refreshJSTree();
+ }
+ if(resp.errors.length > 0){
+ let errorModal = $(modals.uploadFileErrorsHtml(file.name, type, resp.message, resp.errors)).modal();
+ }
+ }
+ }
+ req.send(formData)
+ modal.modal('hide')
+ })
+ },
+ deleteFile: function (o) {
+ var fileType = o.type
+ if(fileType === "nonspatial")
+ fileType = "model";
+ else if(fileType === "spatial")
+ fileType = "spatial model"
+ else if(fileType === "sbml-model")
+ fileType = "sbml model"
+ else if(fileType === "other")
+ fileType = "file"
+ var self = this
+ if(document.querySelector('#deleteFileModal')) {
+ document.querySelector('#deleteFileModal').remove()
+ }
+ let modal = $(modals.deleteFileHtml(fileType)).modal();
+ let yesBtn = document.querySelector('#deleteFileModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {
+ var endpoint = path.join(app.getApiPath(), "file/delete")+"?path="+o.original._path
+ xhr({uri: endpoint}, function(err, response, body) {
+ if(response.statusCode < 400) {
+ var node = $('#models-jstree-view').jstree().get_node(o.parent);
+ if(node.type === "root"){
+ self.refreshJSTree();
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ }else{
+ body = JSON.parse(body)
+ }
+ })
+ modal.modal('hide')
+ self.updateParent(o.type)
+ });
+ },
+ duplicateFileOrDirectory: function(o, type) {
+ var self = this;
+ var parentID = o.parent;
+ var queryStr = "?path="+o.original._path
+ if(!type && o.original.type === 'folder'){
+ type = "directory"
+ }else if(!type && o.original.type === 'workflow'){
+ type = "workflow"
+ }else if(!type){
+ type = "file"
+ }
+ if(type === "directory"){
+ var identifier = "directory/duplicate"
+ }else if(type === "workflow" || type === "wkfl_model"){
+ var timeStamp = type === "workflow" ? this.getTimeStamp() : "None"
+ var identifier = "workflow/duplicate"
+ queryStr = queryStr.concat("&target="+type+"&stamp="+timeStamp)
+ }else{
+ var identifier = "file/duplicate"
+ }
+ var endpoint = path.join(app.getApiPath(), identifier)+queryStr
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ var node = $('#models-jstree-view').jstree().get_node(parentID);
+ if(node.type === "root" || type === "wkfl_model"){
+ self.refreshJSTree()
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ if(type === "workflow"){
+ var message = ""
+ if(body.error){
+ message = body.error
+ }else{
+ message = "The model for
"+body.File+" is located here:
"+body.mdlPath+" "
+ }
+ let modal = $(modals.duplicateWorkflowHtml(body.File, message)).modal()
+ }
+ self.selectNode(node, body.File)
+ self.updateParent(o.type)
+ }
+ }
+ );
+ },
+ getTimeStamp: function () {
+ var date = new Date();
+ var year = date.getFullYear();
+ var month = date.getMonth() + 1;
+ if(month < 10){
+ month = "0" + month
+ }
+ var day = date.getDate();
+ if(day < 10){
+ day = "0" + day
+ }
+ var hours = date.getHours();
+ if(hours < 10){
+ hours = "0" + hours
+ }
+ var minutes = date.getMinutes();
+ if(minutes < 10){
+ minutes = "0" + minutes
+ }
+ var seconds = date.getSeconds();
+ if(seconds < 10){
+ seconds = "0" + seconds
+ }
+ return "_" + month + day + year + "_" + hours + minutes + seconds;
+ },
+ toSpatial: function (o) {
+ var self = this;
+ var parentID = o.parent;
+ var endpoint = path.join(app.getApiPath(), "model/to-spatial")+"?path="+o.original._path;
+ xhr({uri: endpoint, json: true},
+ function (err, response, body) {
+ if(response.statusCode < 400) {
+ var node = $('#models-jstree-view').jstree().get_node(parentID);
+ if(node.type === "root"){
+ self.refreshJSTree()
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ self.selectNode(node, body.File)
+ }
+ }
+ );
+ },
+ toModel: function (o, from) {
+ var self = this;
+ var parentID = o.parent;
+ if(from === "Spatial"){
+ var identifier = "spatial/to-model"
+ }else{
+ var identifier = "sbml/to-model"
+ }
+ let endpoint = path.join(app.getApiPath(), identifier)+"?path="+o.original._path;
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ var node = $('#models-jstree-view').jstree().get_node(parentID);
+ if(node.type === "root"){
+ self.refreshJSTree()
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ self.selectNode(node, body.File)
+ if(from === "SBML" && body.errors.length > 0){
+ var title = ""
+ var msg = body.message
+ var errors = body.errors
+ let modal = $(modals.sbmlToModelHtml(msg, errors)).modal();
+ }
+ }
+ }
+ );
+ },
+ toNotebook: function (o, type) {
+ let self = this
+ var endpoint = path.join(app.getApiPath(), "workflow/notebook")+"?type=none&path="+o.original._path
+ xhr({ uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400){
+ var node = $('#models-jstree-view').jstree().get_node(o.parent)
+ if(node.type === 'root'){
+ self.refreshJSTree();
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ var notebookPath = path.join(app.getBasePath(), "notebooks", body.FilePath)
+ self.selectNode(node, body.File)
+ window.open(notebookPath, '_blank')
+ }
+ });
+ },
+ toSBML: function (o) {
+ var self = this;
+ var parentID = o.parent;
+ var endpoint = path.join(app.getApiPath(), "model/to-sbml")+"?path="+o.original._path;
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ var node = $('#models-jstree-view').jstree().get_node(parentID);
+ if(node.type === "root"){
+ self.refreshJSTree()
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ self.selectNode(node, body.File)
+ }
+ });
+ },
+ renameNode: function (o) {
+ var self = this
+ var text = o.text;
+ var parent = $('#models-jstree-view').jstree().get_node(o.parent)
+ var extensionWarning = $(this.queryByHook('extension-warning'));
+ var nameWarning = $(this.queryByHook('rename-warning'));
+ extensionWarning.collapse('show')
+ $('#models-jstree-view').jstree().edit(o, null, function(node, status) {
+ if(text != node.text){
+ var endpoint = path.join(app.getApiPath(), "file/rename")+"?path="+ o.original._path+"&name="+node.text
+ xhr({uri: endpoint, json: true}, function (err, response, body){
+ if(response.statusCode < 400) {
+ if(body.changed) {
+ nameWarning.text(body.message)
+ nameWarning.collapse('show');
+ window.scrollTo(0,0)
+ setTimeout(_.bind(self.hideNameWarning, self), 10000);
+ }
+ node.original._path = body._path
+ }
+ if(text.split('.').pop() != node.text.split('.').pop()){
+ if(parent.type === "root"){
+ self.refreshJSTree()
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(parent);
+ }
+ }
+ self.updateParent(o.type)
+ })
+ }
+ extensionWarning.collapse('hide');
+ nameWarning.collapse('hide');
+ });
+ },
+ hideNameWarning: function () {
+ $(this.queryByHook('rename-warning')).collapse('hide')
+ },
+ getExportData: function (o, asZip) {
+ var self = this;
+ let nodeType = o.original.type
+ let isJSON = nodeType === "sbml-model" ? false : true
+ if(nodeType === "sbml-model"){
+ var dataType = "plain-text"
+ var identifier = "file/download"
+ }else if(asZip) {
+ var dataType = "zip"
+ var identifier = "file/download-zip"
+ }else{
+ var dataType = "json"
+ var identifier = "file/json-data"
+ }
+ var queryStr = "?path="+o.original._path
+ if(dataType === "json"){
+ queryStr = queryStr.concat("&for=None")
+ }else if(dataType === "zip"){
+ queryStr = queryStr.concat("&action=generate")
+ }
+ var endpoint = path.join(app.getApiPath(), identifier)+queryStr
+ xhr({uri: endpoint, json: isJSON}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ if(dataType === "json") {
+ self.exportToJsonFile(body, o.original.text);
+ }else if(dataType === "zip") {
+ var node = $('#models-jstree-view').jstree().get_node(o.parent);
+ if(node.type === "root"){
+ self.refreshJSTree();
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ self.exportToZipFile(body.Path)
+ }else{
+ self.exportToFile(body, o.original.text);
+ }
+ }else{
+ if(dataType === "plain-text") {
+ body = JSON.parse(body)
+ }
+ }
+ });
+ },
+ exportToJsonFile: function (fileData, fileName) {
+ let dataStr = JSON.stringify(fileData);
+ let dataURI = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr);
+ let exportFileDefaultName = fileName
+
+ let linkElement = document.createElement('a');
+ linkElement.setAttribute('href', dataURI);
+ linkElement.setAttribute('download', exportFileDefaultName);
+ linkElement.click();
+ },
+ exportToFile: function (fileData, fileName) {
+ let dataURI = 'data:text/plain;charset=utf-8,' + encodeURIComponent(fileData);
+
+ let linkElement = document.createElement('a');
+ linkElement.setAttribute('href', dataURI);
+ linkElement.setAttribute('download', fileName);
+ linkElement.click();
+ },
+ exportToZipFile: function (o) {
+ var targetPath = o
+ if(o.original){
+ targetPath = o.original._path
+ }
+ var endpoint = path.join(app.getBasePath(), "/files", targetPath);
+ window.open(endpoint)
+ },
+ validateName(input, rename = false) {
+ var error = ""
+ if(input.endsWith('/')) {
+ error = 'forward'
+ }
+ var invalidChars = "`~!@#$%^&*=+[{]}\"|:;'<,>?\\"
+ if(rename) {
+ invalidChars += "/"
+ }
+ for(var i = 0; i < input.length; i++) {
+ if(invalidChars.includes(input.charAt(i))) {
+ error = error === "" || error === "special" ? "special" : "both"
+ }
+ }
+ return error
+ },
+ newWorkflowGroup: function (o) {
+ var self = this
+ if(document.querySelector("#newWorkflowGroupModal")) {
+ document.querySelector("#newWorkflowGroupModal").remove()
+ }
+ let modal = $(modals.newWorkflowGroupModalHtml()).modal();
+ let okBtn = document.querySelector('#newWorkflowGroupModal .ok-model-btn');
+ let input = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInput');
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInputEndCharError')
+ var charErrMsg = document.querySelector('#newWorkflowGroupModal #workflowGroupNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ modal.modal('hide')
+ var parentPath = self.parent.projectPath
+ if(o && o.original && o.original._path !== "/") {
+ parentPath = o.original._path
+ }
+ var workflowGroupName = input.value.trim() + ".wkgp"
+ var workflowGroupPath = path.join(parentPath, workflowGroupName)
+ let endpoint = path.join(app.getApiPath(), "project/new-workflow-group")+"?path="+workflowGroupPath
+ xhr({uri: endpoint,json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ if(o){//directory was created with context menu option
+ var node = $('#models-jstree-view').jstree().get_node(o);
+ if(node.type === "root"){
+ self.refreshJSTree()
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ }else{//directory was created with create directory button
+ self.refreshJSTree()
+ }
+ self.updateParent('workflow-group')
+ }else{
+ let errorModel = $(modals.newProjectOrWorkflowGroupErrorHtml(body.Reason, body.Message)).modal()
+ }
+ })
+ }
+ })
+ },
+ handleAddExistingModelClick: function () {
+ this.addExistingModel(undefined)
+ },
+ addExistingModel: function (o) {
+ var self = this
+ if(document.querySelector('#newProjectModelModal')){
+ document.querySelector('#newProjectModelModal').remove()
+ }
+ let modal = $(modals.newProjectModelHtml()).modal()
+ let okBtn = document.querySelector('#newProjectModelModal .ok-model-btn')
+ let input = document.querySelector('#newProjectModelModal #modelPathInput')
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newProjectModelModal #modelPathInputEndCharError')
+ var charErrMsg = document.querySelector('#newProjectModelModal #modelPathInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ let queryString = "?path="+self.parent.projectPath+"&mdlPath="+input.value.trim()
+ let endpoint = path.join(app.getApiPath(), 'project/add-existing-model') + queryString
+ xhr({uri:endpoint, json:true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ self.updateParent("nonspatial")
+ let successModal = $(modals.newProjectModelSuccessHtml(body.message)).modal()
+ self.refreshJSTree()
+ }else{
+ let errorModal = $(modals.newProjectModelErrorHtml(body.Reason, body.Message)).modal()
+ }
+ });
+ modal.modal('hide')
+ }
+ });
+ },
+ addNewWorkflow: function (o) {
+ if(o.type !== "workflow-group" && this.parent.model.workflowGroups.length <= 0) {
+ let title = "No Workflow Groups Found"
+ let message = "You need to create an workflow group before you can create a new workflow."
+ let modal = $(modals.noWorkflowGroupMessageHtml(title, message)).modal()
+ }else if(o.type === "workflow-group" && this.parent.model.models.length <= 0) {
+ let title = "No Models Found"
+ let message = "You need to add a model before you can create a new workflow."
+ let modal = $(modals.noWorkflowGroupMessageHtml(title, message)).modal()
+ }else if(o.type !== "workflow-group" && this.parent.model.workflowGroups.length == 1) {
+ let expName = this.parent.model.workflowGroups.models[0].name
+ let parentPath = path.join(path.dirname(o.original._path), expName + ".wkgp")
+ let modelPath = o.original._path
+ let endpoint = path.join(app.getBasePath(), "stochss/workflow/selection")+"?path="+modelPath+"&parentPath="+parentPath
+ window.location.href = endpoint
+ }else{
+ let self = this
+ if(document.querySelector('#newProjectWorkflowModal')){
+ document.querySelector('#newProjectWorkflowModal').remove()
+ }
+ let options = o.type === "workflow-group" ?
+ this.parent.model.models.map(function (model) {return model.name}) :
+ this.parent.model.workflowGroups.map(function (workflowGroup) {return workflowGroup.name})
+ let label = o.type === "workflow-group" ? "Model file name: " : "Workflow Group file name: "
+ let modal = $(modals.newProjectWorkflowHtml(label, options)).modal()
+ let okBtn = document.querySelector('#newProjectWorkflowModal .ok-model-btn')
+ let select = document.querySelector('#newProjectWorkflowModal #select')
+ okBtn.addEventListener("click", function (e) {
+ let parentPath = o.type === "workflow-group" ? o.original._path : path.join(path.dirname(o.original._path), select.value + ".wkgp")
+ let modelPath = o.type === "workflow-group" ? path.join(path.dirname(o.original._path), select.value + ".mdl") : o.original._path
+ let endpoint = path.join(app.getBasePath(), "stochss/workflow/selection")+"?path="+modelPath+"&parentPath="+parentPath
+ window.location.href = endpoint
+ });
+ }
+ },
+ addExistingWorkflow: function (o) {
+ let self = this;
+ if(document.querySelector('#newProjectWorkflowModal')) {
+ document.querySelector('#newProjectWorkflowModal').remove()
+ }
+ let modal = $(modals.addExistingWorkflowToProjectHtml()).modal()
+ let okBtn = document.querySelector('#newProjectWorkflowModal .ok-model-btn')
+ let input = document.querySelector('#newProjectWorkflowModal #workflowPathInput')
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newProjectWorkflowModal #workflowPathInputEndCharError')
+ var charErrMsg = document.querySelector('#newProjectWorkflowModal #workflowPathInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener("click", function (e) {
+ if(Boolean(input.value)) {
+ let queryString = "?path="+o.original._path+"&wkflPath="+input.value.trim()
+ let endpoint = path.join(app.getApiPath(), "project/add-existing-workflow")+queryString
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ self.updateParent("workflow")
+ let successModal = $(modals.addExistingWorkflowToProjectSuccessHtml(body.message)).modal()
+ }else{
+ let errorModal = $(modals.addExistingWorkflowToProjectErrorHtml(body.Reason, body.Message)).modal()
+ }
+ });
+ modal.modal('hide')
+ }
+ });
+ },
+ newModelOrDirectory: function (o, isModel, isSpatial) {
+ var self = this
+ if(document.querySelector('#newModalModel')) {
+ document.querySelector('#newModalModel').remove()
+ }
+ let modal = $(modals.renderCreateModalHtml(isModel, isSpatial)).modal();
+ let okBtn = document.querySelector('#newModalModel .ok-model-btn');
+ let input = document.querySelector('#newModalModel #modelNameInput');
+ input.addEventListener("keyup", function (event) {
+ if(event.keyCode === 13){
+ event.preventDefault();
+ okBtn.click();
+ }
+ });
+ input.addEventListener("input", function (e) {
+ var endErrMsg = document.querySelector('#newModalModel #modelNameInputEndCharError')
+ var charErrMsg = document.querySelector('#newModalModel #modelNameInputSpecCharError')
+ let error = self.validateName(input.value)
+ okBtn.disabled = error !== ""
+ charErrMsg.style.display = error === "both" || error === "special" ? "block" : "none"
+ endErrMsg.style.display = error === "both" || error === "forward" ? "block" : "none"
+ });
+ okBtn.addEventListener('click', function (e) {
+ if (Boolean(input.value)) {
+ var parentPath = self.parent.projectPath
+ if(o && o.original && o.original._path !== "/"){
+ parentPath = o.original._path
+ }
+ if(isModel) {
+ let modelName = o && o.type === "project" ? input.value.trim().split("/").pop() + '.mdl' : input.value.trim() + '.mdl';
+ let message = modelName.split(".")[0] !== input.value.trim() ?
+ "Warning: Models are saved directly in StochSS Projects and cannot be saved to the "+input.value.trim().split("/")[0]+" directory in the project.
Your model will be saved directly in your project.
" : ""
+ let modelPath = path.join(parentPath, modelName)
+ let endpoint = path.join(app.getBasePath(), app.routePrefix, 'models/edit')+"?path="+modelPath+"&message="+message;
+ if(message){
+ modal.modal('hide')
+ let warningModal = $(modals.newProjectModelWarningHtml(message)).modal()
+ let yesBtn = document.querySelector('#newProjectModelWarningModal .yes-modal-btn');
+ yesBtn.addEventListener('click', function (e) {window.location.href = endpoint;})
+ }else{
+ window.location.href = endpoint;
+ }
+ }else{
+ let dirName = input.value.trim();
+ let endpoint = path.join(app.getApiPath(), "directory/create")+"?path="+path.join(parentPath, dirName);
+ xhr({uri:endpoint}, function (err, response, body) {
+ if(response.statusCode < 400){
+ if(o){//directory was created with context menu option
+ var node = $('#models-jstree-view').jstree().get_node(o);
+ if(node.type === "root"){
+ self.refreshJSTree()
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(node);
+ }
+ }else{//directory was created with create directory button
+ self.refreshJSTree()
+ }
+ }else{//new directory not created no need to refresh
+ body = JSON.parse(body)
+ let errorModal = $(modals.newDirectoryErrorHtml(body.Reason, body.Message)).modal()
+ }
+ });
+ modal.modal('hide')
+ }
+ }
+ });
+ },
+ handleCreateDirectoryClick: function (e) {
+ this.newModelOrDirectory(undefined, false, false);
+ },
+ handleCreateWorkflowGroupClick: function (e) {
+ this.newWorkflowGroup(undefined)
+ },
+ handleCreateModelClick: function (e) {
+ let isSpatial = false
+ this.newModelOrDirectory(undefined, true, isSpatial);
+ },
+ handleExtractModelClick: function (o) {
+ let self = this
+ let projectParent = path.dirname(this.parent.projectPath) === '.' ? "" : path.dirname(this.parent.projectPath)
+ let queryString = "?srcPath="+o.original._path+"&dstPath="+path.join(projectParent, o.original._path.split('/').pop())
+ let endpoint = path.join(app.getApiPath(), "project/extract-model")+queryString
+ xhr({uri: endpoint}, function (err, response, body) {
+ if(response.statusCode < 400){
+ let successModel = $(modals.projectExportSuccessHtml("Model", body)).modal()
+ }else{
+ body = JSON.parse(body)
+ let successModel = $(modals.projectExportErrorHtml(body.Reason, body.message)).modal()
+ }
+ });
+ },
+ handleExportWorkflowClick: function (o) {
+ let self = this
+ let projectParent = path.dirname(this.parent.projectPath) === '.' ? "" : path.dirname(this.parent.projectPath)
+ let queryString = "?srcPath="+o.original._path+"&dstPath="+path.join(projectParent, o.original._path.split('/').pop())
+ let endpoint = path.join(app.getApiPath(), "project/extract-workflow")+queryString
+ xhr({uri: endpoint}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ let successModel = $(modals.projectExportSuccessHtml("Workflow", body)).modal()
+ }
+ else {
+ body = JSON.parse(body)
+ let successModel = $(modals.projectExportErrorHtml(body.Reason, body.message)).modal()
+ }
+ })
+ },
+ handleExportCombineClick: function (o, download) {
+ let target = o.original._path
+ this.parent.exportAsCombine(target, download)
+ },
+ showContextMenuForNode: function (e) {
+ $('#models-jstree-view').jstree().show_contextmenu(this.nodeForContextMenu)
+ },
+ editWorkflowModel: function (o) {
+ let endpoint = path.join(app.getApiPath(), "workflow/edit-model")+"?path="+o.original._path
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ if(body.error){
+ let title = o.text + " Not Found"
+ let message = body.error
+ let modal = $(modals.duplicateWorkflowHtml(title, message)).modal()
+ }else{
+ window.location.href = path.join(app.routePrefix, "models/edit")+"?path="+body.file
+ }
+ }
+ });
+ },
+ setupJstree: function () {
+ var self = this;
+ $.jstree.defaults.contextmenu.items = (o, cb) => {
+ let nodeType = o.original.type
+ let zipTypes = ["workflow", "folder", "other", "mesh", "project", "workflow-group"]
+ let asZip = zipTypes.includes(nodeType)
+ // refresh context menu option
+ let refresh = {
+ "Refresh" : {
+ "label" : "Refresh",
+ "_disabled" : false,
+ "_class" : "font-weight-bold",
+ "separator_before" : false,
+ "separator_after" : o.text !== "trash",
+ "action" : function (data) {
+ if(nodeType === "root"){
+ self.refreshJSTree();
+ }else{
+ $('#models-jstree-view').jstree().refresh_node(o);
+ }
+ }
+ }
+ }
+ // For notebooks, workflows, sbml models, and other files
+ let open = {
+ "Open" : {
+ "label" : "Open",
+ "_disabled" : false,
+ "_class" : "font-weight-bolder",
+ "separator_before" : false,
+ "separator_after" : true,
+ "action" : function (data) {
+ if(nodeType === "workflow"){
+ window.location.href = path.join(app.getBasePath(), "stochss/workflow/edit")+"?path="+o.original._path+"&type=none";
+ }else if(nodeType === "project"){
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+o.original._path
+ }else{
+ if(nodeType === "notebook") {
+ var identifier = "notebooks"
+ }else if(nodeType === "sbml-model") {
+ var identifier = "edit"
+ }else{
+ var identifier = "view"
+ }
+ window.open(path.join(app.getBasePath(), identifier, o.original._path));
+ }
+ }
+ }
+ }
+ // project contect menu option
+ let project = {
+ "Add_Model" : {
+ "label" : "Add Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "submenu" : {
+ "New_model" : {
+ "label" : "New Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "submenu" : {
+ "spatial" : {
+ "label" : "Spatial",
+ "_disabled" : true,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ console.log("Spatial Models Coming Soon!")
+ }
+ },
+ "nonspatial" : {
+ "label" : "Non-Spatial",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.newModelOrDirectory(o, true, false);
+ }
+ }
+ }
+ },
+ "Existing Model" : {
+ "label" : "Existing Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.addExistingModel(o)
+ }
+ }
+ }
+ }
+ }
+ // option for uploading files
+ let uploadFile = {
+ "Upload": {
+ "label" : o.type === "root" ? "File" : "Upload File",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : o.type !== "root",
+ "action" : function (data) {
+ self.uploadFile(o, "file")
+ }
+ }
+ }
+ // all upload options
+ let uploadAll = {
+ "Upload" : {
+ "label" : "Upload File",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : true,
+ "submenu" : {
+ "Model" : {
+ "label" : "StochSS Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.uploadFile(o, "model")
+ }
+ },
+ "SBML" : {
+ "label" : "SBML Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.uploadFile(o, "sbml")
+ }
+ },
+ "File" : uploadFile.Upload
+ }
+ }
+ }
+ // common to folder and root
+ let commonFolder = {
+ "New_Directory" : {
+ "label" : "New Directory",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.newModelOrDirectory(o, false, false);
+ }
+ },
+ "Upload": o.type === "root" ? uploadAll.Upload : uploadFile.Upload
+ }
+ if(o.type === "root" || o.type === "workflow-group" || o.type === "workflow")
+ var downloadLabel = "as .zip"
+ else if(asZip)
+ var downloadLabel = "Download as .zip"
+ else
+ var downloadLabel = "Download"
+ let download = {
+ "Download" : {
+ "label" : downloadLabel,
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : !(o.type === "root" || o.type === "workflow-group" || o.type === "workflow"),
+ "action" : function (data) {
+ if(o.original.text.endsWith('.zip')){
+ self.exportToZipFile(o);
+ }else{
+ self.getExportData(o, asZip)
+ }
+ }
+ }
+ }
+ // download options for .zip and COMBINE
+ let downloadWCombine = {
+ "Download" : {
+ "label" : "Download",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : true,
+ "submenu" : {
+ "DownloadAsZip": download.Download,
+ "downloadAsCombine" : {
+ "label" : "as COMBINE",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.handleExportCombineClick(o, true)
+ }
+ }
+ }
+ }
+ }
+ // menu option for creating new workflows
+ let newWorkflow = {
+ "NewWorkflow" : {
+ "label" : "New Workflow",
+ "_disabled" : (nodeType === "spatial") ? true : false,
+ "separator_before" : false,
+ "separator_after" : o.type !== "workflow-group",
+ "action" : function (data) {
+ self.addNewWorkflow(o)
+ }
+ }
+ }
+ // common to all models
+ let commonModel = {
+ "Edit" : {
+ "label" : "Edit",
+ "_disabled" : (nodeType === "spatial") ? true : false,
+ "_class" : "font-weight-bolder",
+ "separator_before" : false,
+ "separator_after" : true,
+ "action" : function (data) {
+ window.location.href = path.join(app.getBasePath(), "stochss/models/edit")+"?path="+o.original._path;
+ }
+ },
+ "Extract" : {
+ "label" : "Extract",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.handleExtractModelClick(o);
+ }
+ },
+ "New Workflow" : newWorkflow.NewWorkflow
+ }
+ // convert options for non-spatial models
+ let modelConvert = {
+ "Convert" : {
+ "label" : "Convert",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : true,
+ "submenu" : {
+ "Convert to Spatial" : {
+ "label" : "To Spatial Model",
+ "_disabled" : true,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.toSpatial(o)
+ }
+ },
+ "Convert to SBML" : {
+ "label" : "To SBML Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.toSBML(o)
+ }
+ }
+ }
+ }
+ }
+ // convert options for spatial models
+ let spatialConvert = {
+ "Convert" : {
+ "label" : "Convert",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : true,
+ "submenu" : {
+ "Convert to Model" : {
+ "label" : "Convert to Non Spatial",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.toModel(o, "Spatial");
+ }
+ },
+ "Convert to Notebook" : {
+ "label" : "Convert to Notebook",
+ "_disabled" : true,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ }
+ }
+ }
+ }
+ }
+ // specific to workflow groups
+ let workflowGroup = {
+ "Add Workflow" : {
+ "label" : "Add Workflow",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : true,
+ "submenu" : {
+ "New Workflow" : newWorkflow.NewWorkflow,
+ "Existing Workflow" : {
+ "label" : "Existing Workflow",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.addExistingWorkflow(o)
+ }
+ }
+ }
+ }
+ }
+ // specific to workflows
+ let workflow = {
+ "Convert to Notebook" : {
+ "label" : "To Notebook",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.toNotebook(o, "workflow")
+ }
+ },
+ "Start/Restart Workflow" : {
+ "label" : (o.original._status === "ready") ? "Start Workflow" : "Restart Workflow",
+ "_disabled" : true,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+
+ }
+ },
+ "Stop Workflow" : {
+ "label" : "Stop Workflow",
+ "_disabled" : true,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+
+ }
+ },
+ "Model" : {
+ "label" : "Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "submenu" : {
+ "Edit" : {
+ "label" : " Edit",
+ "_disabled" : !(o.original._status === "ready"),
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.editWorkflowModel(o)
+ }
+ },
+ "Extract" : {
+ "label" : "Extract",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.duplicateFileOrDirectory(o, "wkfl_model")
+ }
+ }
+ }
+ },
+ "Extract" : {
+ "label" : "Extract",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : true,
+ "action" : function (data) {
+ self.handleExportWorkflowClick(o)
+ }
+ },
+ }
+ // Specific to sbml files
+ let sbml = {
+ "Convert" : {
+ "label" : "Convert",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "submenu" : {
+ "Convert to Model" : {
+ "label" : "To Model",
+ "_disabled" : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.toModel(o, "SBML");
+ }
+ }
+ }
+ }
+ }
+ // common to all type except root and trash
+ let common = {
+ "Rename" : {
+ "label" : "Rename",
+ "_disabled" : (o.type === "workflow" && o.original._status === "running"),
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.renameNode(o);
+ }
+ },
+ "Duplicate" : {
+ "label" : (nodeType === "workflow") ? "Duplicate as new" : "Duplicate",
+ "_disabled" : (nodeType === "project" || nodeType === "workflow-group"),
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.duplicateFileOrDirectory(o, null)
+ }
+ },
+ "Delete" : {
+ "label" : "Delete",
+ "_disabled" : o.type === 'workflow-group' && self.parent.model.workflowGroups.length === 1 ? true : false,
+ "separator_before" : false,
+ "separator_after" : false,
+ "action" : function (data) {
+ self.deleteFile(o);
+ }
+ }
+ }
+ if (o.type === 'root'){
+ return $.extend(refresh, project, commonFolder, downloadWCombine, {"Rename": common.Rename})
+ }
+ if (o.type === 'folder' && o.text !== "trash") {
+ return $.extend(refresh, commonFolder, download, common)
+ }
+ if (o.text === "trash"){
+ return refresh
+ }
+ if (o.type === 'spatial') {
+ return $.extend(commonModel, spatialConvert, download, common)
+ }
+ if (o.type === 'nonspatial') {
+ return $.extend(commonModel, modelConvert, download, common)
+ }
+ if (o.type === 'workflow-group') {
+ return $.extend(refresh, workflowGroup, downloadWCombine)
+ }
+ if (o.type === 'workflow') {
+ return $.extend(open, workflow, downloadWCombine, common)
+ }
+ if (o.type === 'notebook' || o.type === "other") {
+ return $.extend(open, common)
+ }
+ if (o.type === 'sbml-model') {
+ return $.extend(open, sbml, common)
+ }
+ }
+ $(document).ready(function () {
+ $(document).on('shown.bs.modal', function (e) {
+ $('[autofocus]', e.target).focus();
+ });
+ $(document).on('dnd_start.vakata', function (data, element, helper, event) {
+ $('#models-jstree-view').jstree().load_all()
+ });
+ $('#models-jstree-view').jstree(self.treeSettings).bind("loaded.jstree", function (event, data) {
+ self.jstreeIsLoaded = true
+ }).bind("refresh.jstree", function (event, data) {
+ self.jstreeIsLoaded = true
+ });
+ $('#models-jstree-view').on('click.jstree', function(e) {
+ var parent = e.target.parentElement
+ var _node = parent.children[parent.children.length - 1]
+ var node = $('#models-jstree-view').jstree().get_node(_node)
+ if(_node.nodeName === "A" && $('#models-jstree-view').jstree().is_loaded(node) && node.type === "folder"){
+ $('#models-jstree-view').jstree().refresh_node(node)
+ }else{
+ let optionsButton = $(self.queryByHook("options-for-node"))
+ if(!self.nodeForContextMenu){
+ optionsButton.prop('disabled', false)
+ }
+ optionsButton.text("Actions for " + node.original.text)
+ self.nodeForContextMenu = node;
+ }
+ });
+ $('#models-jstree-view').on('dblclick.jstree', function(e) {
+ var file = e.target.text
+ var node = $('#models-jstree-view').jstree().get_node(e.target)
+ var _path = node.original._path;
+ if(file.endsWith('.mdl') || file.endsWith('.smdl')){
+ window.location.href = path.join(app.getBasePath(), "stochss/models/edit")+"?path="+_path;
+ }else if(file.endsWith('.ipynb')){
+ var notebookPath = path.join(app.getBasePath(), "notebooks", _path)
+ window.open(notebookPath, '_blank')
+ }else if(file.endsWith('.sbml')){
+ var openPath = path.join(app.getBasePath(), "edit", _path)
+ window.open(openPath, '_blank')
+ }else if(file.endsWith('.proj')){
+ window.location.href = path.join(app.getBasePath(), "stochss/project/manager")+"?path="+_path;
+ }else if(file.endsWith('.wkfl')){
+ window.location.href = path.join(app.getBasePath(), "stochss/workflow/edit")+"?path="+_path+"&type=none";
+ }else if(node.type === "folder" && $('#models-jstree-view').jstree().is_open(node) && $('#models-jstree-view').jstree().is_loaded(node)){
+ $('#models-jstree-view').jstree().refresh_node(node)
+ }else if(node.type === "other"){
+ var openPath = path.join(app.getBasePath(), "view", _path);
+ window.open(openPath, "_blank");
+ }
+ });
+ })
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+});
\ No newline at end of file
diff --git a/client/views/initial-conditions-editor.js b/client/views/initial-conditions-editor.js
index 78e23f3fb5..f5845d4866 100644
--- a/client/views/initial-conditions-editor.js
+++ b/client/views/initial-conditions-editor.js
@@ -32,8 +32,13 @@ module.exports = View.extend({
var initialConditionType = e.target.textContent;
this.collection.addInitialCondition(initialConditionType);
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/input.js b/client/views/input.js
index c34fbcf452..e52ea6d14c 100644
--- a/client/views/input.js
+++ b/client/views/input.js
@@ -14,21 +14,32 @@ module.exports = AmpersandInputView.extend({
AmpersandInputView.prototype.initialize.apply(this, arguments);
},
render: function () {
- if(this.label)
+ if(this.label) {
this.template = [
'
',
' ',
' ',
- '',
+ '
',
''
].join('')
+ }else{
+ this.template = [
+ '
',
+ ' ',
+ '',
+ ' '
+ ].join('')
+ }
AmpersandInputView.prototype.render.apply(this, arguments);
+ this.shouldValidate = this.required || this.tests.length > 0
},
changeInputHandler: function (e) {
if(this.modelKey){
- var value = this.valueType === 'number' ? Number(e.target.value) : e.target.value;
+ var value = this.valueType === 'number' ? Number(e.target.value.trim()) : e.target.value.trim();
this.parent.model[this.modelKey] = value;
}
},
diff --git a/client/views/main.js b/client/views/main.js
index 31ee0a1138..77cdebe121 100644
--- a/client/views/main.js
+++ b/client/views/main.js
@@ -100,7 +100,7 @@ module.exports = View.extend({
}
});
- var homePath = window.location.pathname.startsWith("/user") ? "/hub/stochss" : "stochss/models"
+ var homePath = window.location.pathname.startsWith("/user") ? "/hub/stochss" : "stochss/home"
$(this.queryByHook("home-link")).prop('href', homePath);
return this;
diff --git a/client/views/mesh-editor.js b/client/views/mesh-editor.js
index fda6adb95f..426bca1ef2 100644
--- a/client/views/mesh-editor.js
+++ b/client/views/mesh-editor.js
@@ -27,8 +27,13 @@ module.exports = View.extend({
this.model.parent.trigger('mesh-update');
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+')
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
subviews: {
inputSubdomains: {
diff --git a/client/views/meta-data.js b/client/views/meta-data.js
new file mode 100644
index 0000000000..ba9c723e33
--- /dev/null
+++ b/client/views/meta-data.js
@@ -0,0 +1,277 @@
+var $ = require('jquery');
+var path = require('path');
+var xhr = require('xhr');
+//support files
+var app = require('../app');
+var tests = require('./tests');
+var modals = require('../modals');
+//collections
+var Collection = require('ampersand-collection');
+//models
+var Creator = require('../models/creator');
+//views
+var View = require('ampersand-view');
+var SelectView = require('ampersand-select-view');
+var InputView = require('./input');
+var CreatorListingView = require('./creator-listing');
+//templates
+var template = require('../templates/includes/metaData.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'change [data-hook=file-select-view]' : 'updateMetaData',
+ 'change [data-hook=description-input-view]' : 'updateFileDescription',
+ 'change [data-hook=creator-select-view]' : 'updateCreator',
+ 'click [data-hook=add-creator-btn]' : 'handleAddCreatorClick',
+ 'change [data-hook=email-input-view]' : 'toggleAddCreatorBtn',
+ 'click [data-hook=save-meta-data-button]' : 'saveMetaData',
+ 'click [data-hook=submit-meta-data-button]' : 'submitMetaData'
+ },
+ initialize: function(attrs, options) {
+ View.prototype.initialize.apply(this, arguments);
+ this.projectName = attrs.projectName;
+ this.files = attrs.files;
+ this.path = attrs.path;
+ this.download = attrs.download;
+ this.selectedFile = attrs.projectName;
+ this.selectedCreator = "New Creator"
+ let self = this
+ let queryString = "?path="+this.parent.projectPath+"&files="+this.files.join(',')
+ let endpoint = path.join(app.getApiPath(), "project/meta-data")+queryString
+ xhr({uri:endpoint, json:true}, function(err, response, body) {
+ if(response.statusCode < 400) {
+ self.metaData = body.meta_data
+ self.creators = body.creators
+ self.renderSubviews()
+ }
+ })
+ },
+ update: function() {},
+ renderSubviews: function () {
+ this.renderFilesSelectView()
+ this.renderCreatorListingView()
+ this.renderCreatorsSelectView()
+ let fileMetaData = this.metaData[this.selectedFile]
+ $(this.queryByHook("description-input-view")).val(fileMetaData["description"])
+ $(document).ready(function () {
+ $("html, body").animate({
+ scrollTop: $("#project-meta-data-container").offset().top - 50
+ }, false);
+ });
+ },
+ renderFilesSelectView: function() {
+ if(this.filesSelectView) {
+ this.filesSelectView.remove()
+ }
+ this.filesSelectView = new SelectView({
+ label: 'File: ',
+ name: 'file',
+ required: true,
+ idAttribute: 'cid',
+ textAttribute: 'name',
+ eagerValidate: true,
+ options: this.files,
+ value: this.projectName
+ });
+ this.registerRenderSubview(this.filesSelectView, "file-select-view");
+ },
+ renderCreatorListingView: function () {
+ if(this.creatorListingView) {
+ this.creatorListingView.remove()
+ }
+ let self = this
+ let listOfCreators = this.metaData[this.selectedFile].creators.map(function (key) {
+ return self.creators[key]
+ });
+ let creators = new Collection(listOfCreators, {model: Creator})
+ this.creatorListingView = this.renderCollection(creators, CreatorListingView, this.queryByHook("list-of-creators"))
+ },
+ renderCreatorsSelectView: function () {
+ if(this.creatorsSelectView){
+ this.creatorsSelectView.remove()
+ }
+ var options = Object.keys(this.creators)
+ options.unshift("New Creator")
+ this.creatorsSelectView = new SelectView({
+ label: 'Creator: ',
+ name: 'creator',
+ required: false,
+ idAttribute: 'cid',
+ textAttribute: 'name',
+ eagerValidate: true,
+ options: options,
+ value: this.selectedCreator
+ });
+ this.registerRenderSubview(this.creatorsSelectView, "creator-select-view")
+ },
+ registerRenderSubview: function (view, hook) {
+ this.registerSubview(view);
+ this.renderSubview(view, this.queryByHook(hook));
+ },
+ updateMetaData: function (e) {
+ this.selectedFile = e.target.selectedOptions.item(0).text
+ let fileMetaData = this.metaData[this.selectedFile]
+ $(this.queryByHook("description-input-view")).val(fileMetaData["description"])
+ this.renderCreatorListingView()
+ this.selectedCreator = "New Creator"
+ this.renderCreatorsSelectView()
+ this.updateCreator(undefined)
+ },
+ updateFileDescription: function (e) {
+ let description = e.target.value
+ this.metaData[this.selectedFile]["description"] = description
+ },
+ updateCreator: function (e) {
+ if(e){
+ this.selectedCreator = e.target.selectedOptions.item(0).text
+ }
+ var fName = this.selectedCreator === "New Creator" ? "" : this.creators[this.selectedCreator].fname
+ var lName = this.selectedCreator === "New Creator" ? "" : this.creators[this.selectedCreator].lname
+ var email = this.selectedCreator === "New Creator" ? "" : this.creators[this.selectedCreator].email
+ var organization = this.selectedCreator === "New Creator" ? "" : this.creators[this.selectedCreator].organization
+ $(this.queryByHook("given-name-input-view")).find("input").val(fName)
+ $(this.queryByHook("family-name-input-view")).find("input").val(lName)
+ $(this.queryByHook("email-input-view")).find("input").val(email)
+ $(this.queryByHook("organization-input-view")).find("input").val(organization)
+ $(this.queryByHook("add-creator-btn")).prop('disabled', this.selectedCreator === "New Creator")
+ if(this.metaData[this.selectedFile].creators.includes(this.selectedCreator)) {
+ $(this.queryByHook("add-creator-btn")).text("Update")
+ }else{
+ $(this.queryByHook("add-creator-btn")).text("Add")
+ }
+ },
+ handleAddCreatorClick: function (e) {
+ let fName = $(this.queryByHook("given-name-input-view")).find("input").val()
+ let lName = $(this.queryByHook("family-name-input-view")).find("input").val()
+ let email = $(this.queryByHook("email-input-view")).find("input").val()
+ let organization = $(this.queryByHook("organization-input-view")).find("input").val()
+ if(email in this.creators && this.selectedCreator === "New Creator"){
+ if(document.querySelector("#existingCreatorConfirmationModal")) {
+ document.querySelector("#existingCreatorConfirmationModal").remove()
+ }
+ let self = this
+ let message = "A creator already exists with this email. Do you wish to update that creators information?"
+ let modal = $(modals.existingCreatorConfirmationHtml(message)).modal()
+ let yesBtn = document.querySelector("#existingCreatorConfirmationModal .yes-modal-btn")
+ yesBtn.addEventListener('click', function (e) {
+ modal.modal('hide')
+ let creator = {"fname":fName,"lname":lName,"email":email,"organization":organization}
+ self.addCreator(email, creator)
+ })
+ console.log("A creator already exists with this name. Do you wish to update that creators data?")
+ }else if(this.selectedCreator !== "New Creator" && email !== this.selectedCreator){
+ let index = this.metaData[this.selectedFile].creators.indexOf(this.selectedCreator)
+ this.metaData[this.selectedFile].creators.splice(index, 1)
+ let creator = {"fname":fName,"lname":lName,"email":email,"organization":organization}
+ this.addCreator(email, creator)
+ }else{
+ let creator = {"fname":fName,"lname":lName,"email":email,"organization":organization}
+ this.addCreator(email, creator)
+ }
+ },
+ addCreator: function (key, creator) {
+ this.creators[key] = creator
+ if(!this.metaData[this.selectedFile].creators.includes(key)){
+ this.metaData[this.selectedFile].creators.push(key)
+ }
+ this.selectedCreator = key
+ this.renderCreatorsSelectView()
+ $(this.queryByHook("add-creator-btn")).text("Update")
+ this.renderCreatorListingView()
+ },
+ toggleAddCreatorBtn: function (e) {
+ $(this.queryByHook("add-creator-btn")).prop('disabled', !Boolean(e.target.value))
+ },
+ saveMetaData: function (e) {
+ let data = {"meta-data":this.metaData,"creators":this.creators}
+ let endpoint = path.join(app.getApiPath(), "project/meta-data")+"?path="+this.parent.projectPath
+ xhr({uri:endpoint, json:true, method:"post", body:data}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ console.log("Successfully Saved Mete Data")
+ }
+ });
+ },
+ submitMetaData: function (e) {
+ let self = this
+ $(this.parent.queryByHook("project-meta-data-container")).collapse('hide')
+ let data = {"meta-data":this.metaData,"creators":this.creators}
+ let queryString = "?path="+this.path+"&projectPath="+this.parent.projectPath
+ let endpoint = path.join(app.getApiPath(), "project/export-combine")+queryString
+ xhr({uri:endpoint, json:true, method:"post", body:data}, function (err, response, body) {
+ if(response.statusCode < 400) {
+ if(self.download) {
+ let downloadEP = path.join(app.getBasePath(), "/files", body.file_path);
+ window.open(downloadEP)
+ }else{
+ let modal = $(modals.projectExportSuccessHtml(body.file_type, body.message)).modal()
+ }
+ }else{
+ let modal = $(modals.projectExportErrorHtml(body.Reason, body.Message)).modal()
+ }
+ })
+ },
+ subviews: {
+ inputGivenName: {
+ hook: 'given-name-input-view',
+ prepareView: function (el) {
+ return new InputView({
+ parent: this,
+ required: false,
+ name: 'gvien-name',
+ label: 'Given Name: ',
+ tests: null,
+ modelKey: null,
+ valueType: 'string',
+ value: this.selectedCreator === "New Creator" ? "" : this.creators[this.selectedCreator]["fname"],
+ });
+ },
+ },
+ inputFamilyName: {
+ hook: 'family-name-input-view',
+ prepareView: function (el) {
+ return new InputView({
+ parent: this,
+ required: false,
+ name: 'family-name',
+ label: 'Family Name: ',
+ tests: null,
+ modelKey: null,
+ valueType: 'string',
+ value: this.selectedCreator === "New Creator" ? "" : this.creators[this.selectedCreator]["lname"],
+ });
+ },
+ },
+ inputEmailName: {
+ hook: 'email-input-view',
+ prepareView: function (el) {
+ return new InputView({
+ parent: this,
+ required: true,
+ placeholder: 'e-mail required',
+ name: 'email',
+ label: 'e-Mail: ',
+ tests: null,
+ modelKey: null,
+ valueType: 'string',
+ value: this.selectedCreator === "New Creator" ? "" : this.creators[this.selectedCreator]["email"],
+ });
+ },
+ },
+ inputOrganizationName: {
+ hook: 'organization-input-view',
+ prepareView: function (el) {
+ return new InputView({
+ parent: this,
+ required: false,
+ name: 'organization',
+ label: 'Organization: ',
+ tests: null,
+ modelKey: null,
+ valueType: 'string',
+ value: this.selectedCreator === "New Creator" ? "" : this.creators[this.selectedCreator]["organization"],
+ });
+ },
+ },
+ }
+});
\ No newline at end of file
diff --git a/client/views/model-settings.js b/client/views/model-settings.js
index c8c8638c9b..bc4d5e2356 100644
--- a/client/views/model-settings.js
+++ b/client/views/model-settings.js
@@ -27,8 +27,13 @@ module.exports = View.extend({
updateValid: function () {
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+')
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
subviews: {
inputSimEnd: {
diff --git a/client/views/model-state-buttons.js b/client/views/model-state-buttons.js
index dea72bbe2d..a79707c4df 100644
--- a/client/views/model-state-buttons.js
+++ b/client/views/model-state-buttons.js
@@ -1,8 +1,10 @@
-var app = require('../app');
var xhr = require('xhr');
var path = require('path');
var Plotly = require('../lib/plotly');
var $ = require('jquery');
+//support file
+var app = require('../app');
+var modals = require('../modals');
//views
var View = require('ampersand-view');
//templates
@@ -13,7 +15,8 @@ module.exports = View.extend({
events: {
'click [data-hook=save]' : 'clickSaveHandler',
'click [data-hook=run]' : 'clickRunHandler',
- 'click [data-hook=start-workflow]' : 'clickStartWorkflowHandler',
+ 'click [data-hook=new-workflow]' : 'clickNewWorkflowHandler',
+ 'click [data-hook=return-to-project-btn]' : 'clickReturnToProjectHandler',
},
initialize: function (attrs, options) {
View.prototype.initialize.apply(this, arguments);
@@ -25,6 +28,9 @@ module.exports = View.extend({
render: function () {
View.prototype.render.apply(this, arguments);
this.togglePreviewWorkflowBtn();
+ if(this.model.directory.includes('.proj')) {
+ this.queryByHook("return-to-project-btn").style.display = "inline-block"
+ }
},
clickSaveHandler: function (e) {
this.saveModel(this.saved.bind(this));
@@ -36,8 +42,26 @@ module.exports = View.extend({
Plotly.purge(el)
this.saveModel(this.runModel.bind(this));
},
- clickStartWorkflowHandler: function (e) {
- window.location.href = path.join(app.getBasePath(), "stochss/workflow/selection")+"?path="+this.model.directory;
+ clickReturnToProjectHandler: function (e) {
+ let self = this
+ this.saveModel(function () {
+ self.saved()
+ var queryString = "?path="+path.dirname(self.model.directory)
+ window.location.href = path.join(app.getBasePath(), "/stochss/project/manager")+queryString;
+ })
+ },
+ clickNewWorkflowHandler: function (e) {
+ let self = this
+ this.saveModel(function () {
+ self.saved()
+ var queryString = "?path="+self.model.directory
+ if(self.model.directory.includes('.proj')) {
+ let parentPath = path.join(path.dirname(self.model.directory), "WorkflowGroup1.wkgp")
+ queryString += "&parentPath="+parentPath
+ }
+ let endpoint = path.join(app.getBasePath(), "stochss/workflow/selection")+queryString
+ window.location.href = endpoint
+ })
},
togglePreviewWorkflowBtn: function () {
var numSpecies = this.model.species.length;
@@ -45,7 +69,6 @@ module.exports = View.extend({
var numEvents = this.model.eventsCollection.length
var numRules = this.model.rules.length
$(this.queryByHook('run')).prop('disabled', (!numSpecies || (!numReactions && !numEvents && !numRules)))
- $(this.queryByHook('start-workflow')).prop('disabled', (!numSpecies || (!numReactions && !numEvents && !numRules)))
},
saveModel: function (cb) {
this.saving();
@@ -114,6 +137,10 @@ module.exports = View.extend({
let queryStr = "?cmd=read&outfile="+self.outfile+"&path="+model.directory
endpoint = path.join(app.getApiPath(), 'model/run')+queryStr;
xhr({ uri: endpoint, json: true}, function (err, response, body) {
+ if(typeof body === "string") {
+ body = body.replace(/NaN/g, null)
+ body = JSON.parse(body)
+ }
var data = body.Results;
if(response.statusCode >= 400){
self.ran(false);
diff --git a/client/views/model-viewer.js b/client/views/model-viewer.js
index 7360c01fc3..81a008ef56 100644
--- a/client/views/model-viewer.js
+++ b/client/views/model-viewer.js
@@ -8,20 +8,21 @@ var ReactionsViewer = require('./reactions-viewer');
var EventsViewer = require('./events-viewer');
var RulesViewer = require('./rules-viewer');
var ModelSettingsViewer = require('./model-settings-viewer');
-//models
-var Model = require('../models/model');
//templates
var template = require('../templates/includes/modelViewer.pug');
module.exports = View.extend({
template: template,
events: {
- 'click [data-hook=collapse-model]' : 'changeCollapseButtonText',
+ 'click [data-hook=collapse-model]' : 'changeCollapseButtonText'
},
initialize: function (attrs, options) {
View.prototype.initialize.apply(this, arguments);
- this.status = attrs.status;
- this.wkflType = attrs.type;
+ if(attrs.status) {
+ this.status = attrs.status;
+ }else{
+ this.status = "complete"
+ }
},
render: function () {
View.prototype.render.apply(this, arguments);
@@ -49,19 +50,18 @@ module.exports = View.extend({
this.registerRenderSubview(eventsViewer, "events-viewer-container");
this.registerRenderSubview(rulesViewer, "rules-viewer-container");
this.registerRenderSubview(modelSettingsViewer, "model-settings-viewer-container");
- if(this.status === 'complete'){
- this.enableCollapseButton();
- }
},
registerRenderSubview: function (view, hook) {
this.registerSubview(view);
this.renderSubview(view, this.queryByHook(hook));
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse-model')).text();
- text === '+' ? $(this.queryByHook('collapse-model')).text('-') : $(this.queryByHook('collapse-model')).text('+');
- },
- enableCollapseButton: function () {
- $(this.queryByHook('collapse-model')).prop('disabled', false);
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/models-viewer.js b/client/views/models-viewer.js
new file mode 100644
index 0000000000..fcc2c3c7c5
--- /dev/null
+++ b/client/views/models-viewer.js
@@ -0,0 +1,29 @@
+var $ = require('jquery');
+//views
+var View = require('ampersand-view');
+var ModelViewer = require('./model-viewer');
+//templates
+var template = require('../templates/includes/modelsViewer.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=collapse-models]' : 'changeCollapseButtonText'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments);
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments);
+ this.renderCollection(this.collection, ModelViewer, this.queryByHook('model-container'))
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+})
\ No newline at end of file
diff --git a/client/views/parameter-sweep-settings.js b/client/views/parameter-sweep-settings.js
index 3594911ccd..94bf1e7376 100644
--- a/client/views/parameter-sweep-settings.js
+++ b/client/views/parameter-sweep-settings.js
@@ -126,8 +126,13 @@ module.exports = View.extend({
return parameter;
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+')
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
subviews: {
param1MinValueInput: {
diff --git a/client/views/parameters-editor.js b/client/views/parameters-editor.js
index 327f78e44b..cb4aa760ab 100644
--- a/client/views/parameters-editor.js
+++ b/client/views/parameters-editor.js
@@ -75,7 +75,12 @@ module.exports = View.extend({
});
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/parameters-viewer.js b/client/views/parameters-viewer.js
index 5bd1541360..9c09acb76c 100644
--- a/client/views/parameters-viewer.js
+++ b/client/views/parameters-viewer.js
@@ -17,8 +17,13 @@ module.exports = View.extend({
View.prototype.render.apply(this, arguments);
this.renderCollection(this.collection, ViewParameter, this.queryByHook('parameter-list'))
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/plots-view.js b/client/views/plots-view.js
new file mode 100644
index 0000000000..22c871a093
--- /dev/null
+++ b/client/views/plots-view.js
@@ -0,0 +1,53 @@
+var $ = require('jquery');
+var path = require('path');
+var xhr = require('xhr');
+//support files
+var Plotly = require('../lib/plotly');
+var app = require('../app');
+//views
+var View = require('ampersand-view');
+//templates
+var template = require('../templates/includes/plotsView.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=collapse-plot]' : 'changeCollapseButtonText',
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ this.path = attrs.path ? attrs.path : this.parent.model.path
+ this.heading = attrs.heading ? attrs.heading + " - " + this.model.key : this.model.key
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments)
+ this.getPlot()
+ },
+ getPlot: function () {
+ var self = this;
+ var plotArgs = {"title":this.model.title,"xaxis":this.model.xaxis,"yaxis":this.model.yaxis}
+ var data = {"plt_key":this.model.key, "plt_data":plotArgs}
+ var endpoint = path.join(app.getApiPath(), 'workflow/plot-results')+"?path="+this.path+"&data="+JSON.stringify(data);
+ xhr({uri: endpoint, json: true}, function (err, response, body) {
+ if(response.statusCode >= 400) {
+ $(self.queryByHook(self.model.key+self.model.stamp)).html(body.Message)
+ }else{
+ self.plotFigure(body)
+ }
+ });
+ },
+ plotFigure: function (figure) {
+ var self = this;
+ var el = this.queryByHook(this.model.key+this.model.stamp);
+ Plotly.newPlot(el, figure);
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+})
\ No newline at end of file
diff --git a/client/views/project-viewer.js b/client/views/project-viewer.js
new file mode 100644
index 0000000000..d9f4d476d0
--- /dev/null
+++ b/client/views/project-viewer.js
@@ -0,0 +1,55 @@
+var path = require('path');
+var $ = require('jquery');
+//Views
+var View = require('ampersand-view');
+var ModelsCollectionView = require('./models-viewer');
+var WorkflowGroupsCollectionView = require('./workflow-groups-viewer');
+//templates
+var template = require('../templates/includes/projectViewer.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=collapse-project]' : 'changeCollapseButtonText'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ this.name = attrs.name
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments)
+ this.renderModelsCollection()
+ this.renderWorkflowGroupsCollection()
+ },
+ renderModelsCollection: function () {
+ if(this.modelsCollectionView) {
+ this.modelsCollectionView.remove()
+ }
+ this.modelsCollectionView = new ModelsCollectionView({
+ collection: this.model.models
+ });
+ this.registerRenderSubview(this.modelsCollectionView, "models-collection-container")
+ },
+ renderWorkflowGroupsCollection: function () {
+ if(this.workflowGroupsCollectionView) {
+ this.workflowGroupsCollectionView.remove()
+ }
+ this.workflowGroupsCollectionView = new WorkflowGroupsCollectionView({
+ collection: this.model.workflowGroups
+ });
+ this.registerRenderSubview(this.workflowGroupsCollectionView, "workflow-groups-collection-container")
+ },
+ registerRenderSubview: function (view, hook) {
+ this.registerSubview(view);
+ this.renderSubview(view, this.queryByHook(hook));
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+});
\ No newline at end of file
diff --git a/client/views/reaction-details.js b/client/views/reaction-details.js
index 6f388eda9d..bd26e34b37 100644
--- a/client/views/reaction-details.js
+++ b/client/views/reaction-details.js
@@ -32,9 +32,11 @@ module.exports = View.extend({
},
'model.hasConflict': {
type: function (el, value, previousValue) {
- this.model.hasConflict ?
- $(this.queryByHook('conflicting-modes-message')).collapse('show') :
+ if(value) {
+ $(this.queryByHook('conflicting-modes-message')).collapse('show')
+ }else{
$(this.queryByHook('conflicting-modes-message')).collapse('hide')
+ }
},
hook: 'conflicting-modes-message',
},
@@ -49,26 +51,11 @@ module.exports = View.extend({
this.model.on("change:reaction_type", function (model) {
self.updateStoichSpeciesForReactionType(model.reactionType);
});
- this.model.collection.parent.parameters.on('add remove', this.render, this);
},
render: function () {
View.prototype.render.apply(this, arguments);
- var options = [];
- if(this.model.collection.parent.parameters.length <= 0){
- options = ["Custom propensity"];
- }
- else{
- options = this.getReactionTypeLabels();
- }
var self = this;
- var reactionTypeSelectView = new SelectView({
- label: 'Reaction Type:',
- name: 'reaction-type',
- required: true,
- idAttribute: 'cid',
- options: options,
- value: ReactionTypes[self.model.reactionType].label,
- });
+ this.renderReactionTypesSelectView()
var rateParameterView = new SelectView({
label: '',
name: 'rate',
@@ -109,8 +96,6 @@ module.exports = View.extend({
fieldTitle: 'Products',
isReactants: false
});
- this.registerRenderSubview(reactionTypeSelectView, 'select-reaction-type');
- this.renderReactionTypes();
if(this.model.reactionType === 'custom-propensity'){
this.registerRenderSubview(propensityView, 'select-rate-parameter')
var inputField = this.queryByHook('select-rate-parameter').children[0].children[1];
@@ -140,6 +125,31 @@ module.exports = View.extend({
},
updateValid: function () {
},
+ renderReactionTypesSelectView: function () {
+ if(this.reactionTypesSelectView) {
+ this.reactionTypesSelectView.remove()
+ }
+
+ var options = [];
+ if(this.model.collection.parent.parameters.length <= 0){
+ options = ["Custom propensity"];
+ }
+ else{
+ options = this.getReactionTypeLabels();
+ }
+
+ this.reactionTypesSelectView = new SelectView({
+ label: 'Reaction Type:',
+ name: 'reaction-type',
+ required: true,
+ idAttribute: 'cid',
+ options: options,
+ value: ReactionTypes[this.model.reactionType].label,
+ });
+
+ this.registerRenderSubview(this.reactionTypesSelectView, 'select-reaction-type');
+ this.renderReactionTypes();
+ },
selectRateParam: function (e) {
if(this.model.reactionType !== 'custom-propensity') {
var val = e.target.selectedOptions.item(0).text;
diff --git a/client/views/reaction-listing.js b/client/views/reaction-listing.js
index bd416f5f5d..24f110abc9 100644
--- a/client/views/reaction-listing.js
+++ b/client/views/reaction-listing.js
@@ -46,6 +46,9 @@ module.exports = View.extend({
$(document).on('shown.bs.modal', function (e) {
$('[autofocus]', e.target).focus();
});
+ $(document).on('hide.bs.modal', '.modal', function (e) {
+ e.target.remove()
+ });
if(!this.model.annotation){
$(this.queryByHook('edit-annotation-btn')).text('Add')
}
@@ -78,7 +81,7 @@ module.exports = View.extend({
}
});
okBtn.addEventListener('click', function (e) {
- self.model.annotation = input.value;
+ self.model.annotation = input.value.trim();
self.parent.renderReactionListingView();
modal.modal('hide');
});
diff --git a/client/views/reactions-editor.js b/client/views/reactions-editor.js
index 5707847031..ae53fa0f00 100644
--- a/client/views/reactions-editor.js
+++ b/client/views/reactions-editor.js
@@ -102,6 +102,9 @@ module.exports = View.extend({
$(this.queryByHook('add-reaction-full')).prop('hidden', true);
$(this.queryByHook('add-reaction-partial')).prop('hidden', false);
}
+ if(this.selectedReaction){
+ this.selectedReaction.detailsView.renderReactionTypesSelectView()
+ }
},
setSelectedReaction: function (reaction) {
this.collection.each(function (m) { m.selected = false; });
@@ -109,7 +112,7 @@ module.exports = View.extend({
this.selectedReaction = reaction;
},
setDetailsView: function (reaction) {
- reaction.detailsView = reaction.detailsView || this.newDetailsView(reaction);
+ reaction.detailsView = this.newDetailsView(reaction);
this.detailsViewSwitcher.set(reaction.detailsView);
},
handleAddReactionClick: function (e) {
@@ -137,8 +140,13 @@ module.exports = View.extend({
return detailsView
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+')
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
getDefaultSpecie: function () {
var value = this.collection.parent.species.models[0];
diff --git a/client/views/reactions-viewer.js b/client/views/reactions-viewer.js
index a28993130f..1c9aef5414 100644
--- a/client/views/reactions-viewer.js
+++ b/client/views/reactions-viewer.js
@@ -17,8 +17,13 @@ module.exports = View.extend({
View.prototype.render.apply(this, arguments);
this.renderCollection(this.collection, ViewReactions, this.queryByHook('reaction-list'))
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/rules-editor.js b/client/views/rules-editor.js
index af5a57f634..22e9400fd0 100644
--- a/client/views/rules-editor.js
+++ b/client/views/rules-editor.js
@@ -64,7 +64,12 @@ module.exports = View.extend({
});
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/rules-viewer.js b/client/views/rules-viewer.js
index cc04479c6d..4d980e4db8 100644
--- a/client/views/rules-viewer.js
+++ b/client/views/rules-viewer.js
@@ -17,8 +17,13 @@ module.exports = View.extend({
View.prototype.render.apply(this, arguments);
this.renderCollection(this.collection, ViewRules, this.queryByHook('rules-list'))
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/sbml-component-editor.js b/client/views/sbml-component-editor.js
index 5a7f593eb0..577a065692 100644
--- a/client/views/sbml-component-editor.js
+++ b/client/views/sbml-component-editor.js
@@ -10,12 +10,8 @@ var template = require('../templates/includes/sbmlComponentEditor.pug');
module.exports = View.extend({
template: template,
events: {
- 'click [data-hook=collapse]' : function () {
- this.changeCollapseButtonText('collapse');
- },
- 'click [data-hook=collapse-function-definitions]' : function () {
- this.changeCollapseButtonText('collapse-function-definitions');
- },
+ 'click [data-hook=collapse]' : 'changeCollapseButtonText',
+ 'click [data-hook=collapse-function-definitions]' : 'changeCollapseButtonText'
},
initialize: function (attrs, options) {
View.prototype.initialize.apply(this, arguments);
@@ -42,8 +38,13 @@ module.exports = View.extend({
});
});
},
- changeCollapseButtonText: function (hook) {
- var text = $(this.queryByHook(hook)).text();
- text === '+' ? $(this.queryByHook(hook)).text('-') : $(this.queryByHook(hook)).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/simulation-settings.js b/client/views/simulation-settings.js
index 186c092efa..6ddff6c62c 100644
--- a/client/views/simulation-settings.js
+++ b/client/views/simulation-settings.js
@@ -50,8 +50,13 @@ module.exports = View.extend({
updateValid: function () {
},
changeCollapseButtonText: function (e) {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+')
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
handleSelectSimulationAlgorithmClick: function (e) {
var value = e.target.dataset.name;
diff --git a/client/views/species-editor.js b/client/views/species-editor.js
index 910741cdd6..989bef7f8f 100644
--- a/client/views/species-editor.js
+++ b/client/views/species-editor.js
@@ -24,7 +24,7 @@ module.exports = View.extend({
View.prototype.initialize.apply(this, arguments);
this.baseModel = this.collection.parent;
this.tooltips = Tooltips.speciesEditor
- this.collection.on('update-species', function (compID, specie, isNameUpdate) {
+ this.collection.on('update-species', function (compID, specie, isNameUpdate, isDefaultMode) {
self.collection.parent.reactions.map(function (reaction) {
reaction.reactants.map(function (reactant) {
if(reactant.specie.compID === compID) {
@@ -38,7 +38,7 @@ module.exports = View.extend({
});
if(isNameUpdate) {
reaction.buildSummary();
- }else{
+ }else if(!isDefaultMode || specie.compID === self.collection.models[self.collection.length-1].compID){
reaction.checkModes();
}
});
@@ -110,14 +110,15 @@ module.exports = View.extend({
},
getDefaultSpeciesMode: function (e) {
var self = this;
- this.setAllSpeciesModes(e.target.dataset.name, function () {
- self.collection.trigger('update-species', specie.compID, specie, false)
+ this.setAllSpeciesModes(e.target.dataset.name, function (specie) {
+ self.collection.trigger('update-species', specie.compID, specie, false, true)
});
},
- setAllSpeciesModes: function (defaultMode) {
+ setAllSpeciesModes: function (defaultMode, cb) {
this.collection.parent.defaultMode = defaultMode;
this.collection.map(function (specie) {
specie.mode = defaultMode
+ cb(specie)
});
if(defaultMode === "dynamic"){
this.renderSpeciesAdvancedView()
@@ -170,8 +171,13 @@ module.exports = View.extend({
});
});
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
- },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
});
\ No newline at end of file
diff --git a/client/views/species-viewer.js b/client/views/species-viewer.js
index 5704033fba..d4a9ae0b9e 100644
--- a/client/views/species-viewer.js
+++ b/client/views/species-viewer.js
@@ -17,8 +17,13 @@ module.exports = View.extend({
View.prototype.render.apply(this, arguments);
this.renderCollection(this.collection, ViewSpecie, this.queryByHook('specie-list'))
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
\ No newline at end of file
diff --git a/client/views/tests.js b/client/views/tests.js
index 192ccc38c9..d6d276d138 100644
--- a/client/views/tests.js
+++ b/client/views/tests.js
@@ -10,15 +10,15 @@ module.exports = {
return "Invalid characters. Please only use letters, numbers, or underscores."
}
},
- function (text) {
- if(this.parent.model && this.parent.model.collection){
- var isDuplicate = this.parent.model.collection.some(function (m) { return m.name === text && this.parent.model !== m;
- }, this);
- if (isDuplicate) {
- return "No duplicate entries."
- }
- }
- },
+ // function (text) {
+ // if(this.parent.model && this.parent.model.collection){
+ // var isDuplicate = this.parent.model.collection.some(function (m) { return m.name === text && this.parent.model !== m;
+ // }, this);
+ // if (isDuplicate) {
+ // return "No duplicate entries."
+ // }
+ // }
+ // },
],
valueTests: [
function (value) {
diff --git a/client/views/view-events.js b/client/views/view-events.js
index 0625fd5400..d1b8a53ca6 100644
--- a/client/views/view-events.js
+++ b/client/views/view-events.js
@@ -1,3 +1,4 @@
+var $ = require('jquery');
//views
var View = require('ampersand-view');
var AssignmentsViewer = require('./event-assignments-viewer');
@@ -16,12 +17,7 @@ module.exports = View.extend({
hook: 'event-trigger-persistent',
type: 'booleanAttribute',
name: 'checked',
- },
- 'model.useValuesFromTriggerTime': {
- hook: 'use-values-from-trigger-time',
- type: 'booleanAttribute',
- name: 'checked',
- },
+ }
},
initialize: function (attrs, options) {
View.prototype.initialize.apply(this, arguments);
@@ -33,6 +29,11 @@ module.exports = View.extend({
collection: this.model.eventAssignments
});
this.registerRenderSubview(assignmentsViewer, 'assignment-viewer');
+ if(this.model.useValuesFromTriggerTime) {
+ $(this.queryByHook("trigger-time")).prop('checked', true)
+ }else{
+ $(this.queryByHook("assignment-time")).prop('checked', true)
+ }
},
registerRenderSubview: function (view, hook) {
this.registerSubview(view);
diff --git a/client/views/view-reactions.js b/client/views/view-reactions.js
index 491611d48e..0a24116766 100644
--- a/client/views/view-reactions.js
+++ b/client/views/view-reactions.js
@@ -14,8 +14,9 @@ module.exports = View.extend({
render: function () {
View.prototype.render.apply(this, arguments);
katex.render(this.model.summary, this.queryByHook('summary'), {
- displayMode: true,
- output: 'mathml'
+ displayMode: false,
+ output: 'html',
+ throwOnError: false
});
},
});
\ No newline at end of file
diff --git a/client/views/workflow-editor.js b/client/views/workflow-editor.js
index 392a19a99e..b2f48b6305 100644
--- a/client/views/workflow-editor.js
+++ b/client/views/workflow-editor.js
@@ -39,15 +39,11 @@ module.exports = View.extend({
this.renderWorkflowStateButtons()
}else{
this.collapseContainer()
- $(this.queryByHook('collapse-settings')).prop('disabled', true);
this.renderSimulationSettingViewer()
if(this.type === "parameterSweep"){
this.renderParameterSweepSettingsViewer()
}
}
- if(this.status === "complete"){
- this.enableCollapseButton();
- }
},
registerRenderSubview: function (view, hook) {
this.registerSubview(view);
@@ -84,11 +80,14 @@ module.exports = View.extend({
this.registerRenderSubview(parameterSweepSettingsView, 'param-sweep-settings-container');
},
renderWorkflowStateButtons: function () {
- let workflowStateButtons = new WorkflowStateButtonsView({
+ if(this.workflowStateButtons) {
+ this.workflowStateButtons.remove()
+ }
+ this.workflowStateButtons = new WorkflowStateButtonsView({
model: this.model,
type: this.type,
});
- this.registerRenderSubview(workflowStateButtons, 'workflow-state-buttons-container');
+ this.registerRenderSubview(this.workflowStateButtons, 'workflow-state-buttons-container');
},
validatePsweep: function () {
let species = this.model.species;
@@ -124,15 +123,17 @@ module.exports = View.extend({
}).length) // if true child exits within the model
return exists
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse-settings')).text();
- text === '+' ? $(this.queryByHook('collapse-settings')).text('-') : $(this.queryByHook('collapse-settings')).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
collapseContainer: function () {
$(this.queryByHook("workflow-editor-container")).collapse()
- this.changeCollapseButtonText()
- },
- enableCollapseButton: function () {
- $(this.queryByHook('collapse-settings')).prop('disabled', false);
+ $(this.queryByHook("collapse-settings")).click()
},
});
\ No newline at end of file
diff --git a/client/views/workflow-group-viewer.js b/client/views/workflow-group-viewer.js
new file mode 100644
index 0000000000..f9400435dd
--- /dev/null
+++ b/client/views/workflow-group-viewer.js
@@ -0,0 +1,42 @@
+var $ = require('jquery');
+//views
+var View = require('ampersand-view');
+var WorkflowCollectionsViewer = require('./workflows-viewer');
+//templates
+var template = require('../templates/includes/workflowGroupViewer.pug')
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=collapse-workflow-group]' : 'changeCollapseButtonText'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments)
+ this.renderWorkflowsCollectionViewer()
+ },
+ renderWorkflowsCollectionViewer: function () {
+ if(this.workflowsCollectionViewer) {
+ this.workflowsCollectionViewer.remove()
+ }
+ this.workflowsCollectionViewer = new WorkflowCollectionsViewer({
+ collection: this.model.workflows
+ });
+ this.registerRenderSubview(this.workflowsCollectionViewer, "workflows-viewer-container")
+ },
+ registerRenderSubview: function (view, hook) {
+ this.registerSubview(view);
+ this.renderSubview(view, this.queryByHook(hook));
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+})
\ No newline at end of file
diff --git a/client/views/workflow-groups-viewer.js b/client/views/workflow-groups-viewer.js
new file mode 100644
index 0000000000..cd7dcd3c05
--- /dev/null
+++ b/client/views/workflow-groups-viewer.js
@@ -0,0 +1,29 @@
+var $ = require('jquery');
+//views
+var View = require('ampersand-view');
+var WorkflowGroupView = require('./workflow-group-viewer');
+//templates
+var template = require('../templates/includes/workflowGroupsViewer.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=collapse-workflow-groups]' : 'changeCollapseButtonText'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments)
+ this.renderCollection(this.collection, WorkflowGroupView, this.queryByHook('workflow-group-container'))
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+})
\ No newline at end of file
diff --git a/client/views/workflow-info.js b/client/views/workflow-info.js
index 73f4f28ee6..371be73647 100644
--- a/client/views/workflow-info.js
+++ b/client/views/workflow-info.js
@@ -59,7 +59,7 @@ module.exports = View.extend({
expandInfoContainer: function () {
this.enableCollapseButton();
$(this.queryByHook('workflow-info')).collapse('show');
- this.changeCollapseButtonText("collapse")
+ $(this.queryByHook("collapse")).click()
},
expandLogContainers: function () {
if(this.listOfWarnings.length) {
@@ -78,8 +78,13 @@ module.exports = View.extend({
$(this.queryByHook('list-of-notes')).html(listOfNotes);
}
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook("collapse")).text();
- text === '+' ? $(this.queryByHook("collapse")).text('-') : $(this.queryByHook("collapse")).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
});
diff --git a/client/views/workflow-results.js b/client/views/workflow-results.js
index 7338b08a4f..510163d19a 100644
--- a/client/views/workflow-results.js
+++ b/client/views/workflow-results.js
@@ -16,24 +16,12 @@ var parameterSweepResultsTemplate = require('../templates/includes/parameterSwee
module.exports = View.extend({
events: {
- 'click [data-hook=collapse-stddevrange]' : function () {
- this.changeCollapseButtonText("collapse-stddevrange");
- },
- 'click [data-hook=collapse-trajectories]' : function () {
- this.changeCollapseButtonText("collapse-trajectories");
- },
- 'click [data-hook=collapse-stddev]' : function () {
- this.changeCollapseButtonText("collapse-stddev");
- },
- 'click [data-hook=collapse-trajmean]' : function () {
- this.changeCollapseButtonText("collapse-trajmean");
- },
- 'click [data-hook=collapse-psweep]' : function () {
- this.changeCollapseButtonText("collapse-psweep");
- },
- 'click [data-hook=collapse]' : function () {
- this.changeCollapseButtonText("collapse");
- },
+ 'click [data-hook=collapse-stddevrange]' : 'handleCollapseStddevrangeClick',
+ 'click [data-hook=collapse-trajectories]' : 'handleCollapseTrajectoriesClick',
+ 'click [data-hook=collapse-stddev]' : 'handleCollapseStddevClick',
+ 'click [data-hook=collapse-trajmean]' : 'handleCollapseTrajmeanClick',
+ 'click [data-hook=collapse-psweep]' : 'handleCollapsePsweepClick',
+ 'click [data-hook=collapse]' : 'changeCollapseButtonText',
'change [data-hook=title]' : 'setTitle',
'change [data-hook=xaxis]' : 'setXAxis',
'change [data-hook=yaxis]' : 'setYAxis',
@@ -41,13 +29,12 @@ module.exports = View.extend({
'change [data-hook=feature-extraction-list]' : 'getPlotForFeatureExtractor',
'change [data-hook=ensemble-aggragator-list]' : 'getPlotForEnsembleAggragator',
'click [data-hook=plot]' : function (e) {
- var type = e.target.id
- if(this.plots[type]) {
- $(this.queryByHook("edit-plot-args")).collapse("show");
- }else{
- this.getPlot(type);
- e.target.innerText = "Edit Plot"
- }
+ $(this.queryByHook("edit-plot-args")).collapse("show");
+ $(document).ready(function () {
+ $("html, body").animate({
+ scrollTop: $("#edit-plot-args").offset().top - 50
+ }, false);
+ });
},
'click [data-hook=download-png-custom]' : function (e) {
var type = e.target.id;
@@ -57,6 +44,12 @@ module.exports = View.extend({
var type = e.target.id;
this.exportToJsonFile(this.plots[type], type)
},
+ 'click [data-hook=save-plot]' : function (e) {
+ var type = e.target.id;
+ e.target.disabled = true
+ $("button[data-hook=save-plot]").filter("#"+type).text('Saved Plot to Project Viewer')
+ this.savePlot(type)
+ },
'click [data-hook=download-results-csv]' : 'handlerDownloadResultsCsvClick',
},
initialize: function (attrs, options) {
@@ -71,6 +64,7 @@ module.exports = View.extend({
this.ensembleAggragator = "avg";
this.plots = {}
this.plotArgs = {}
+ this.savedPlots = this.parent.settings.resultsSettings.outputs
},
render: function () {
if(this.type === "parameterSweep"){
@@ -130,9 +124,14 @@ module.exports = View.extend({
},
updateValid: function () {
},
- changeCollapseButtonText: function (source) {
- var text = $(this.queryByHook(source)).text();
- text === '+' ? $(this.queryByHook(source)).text('-') : $(this.queryByHook(source)).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
setTitle: function (e) {
this.plotArgs['title'] = e.target.value
@@ -162,6 +161,7 @@ module.exports = View.extend({
var self = this;
var el = this.queryByHook(type)
Plotly.purge(el)
+ this.queryAll("#"+type).filter(function (el) {return el.dataset.hook === "plot-spinner"})[0].style.display = "block"
var data = {}
if(type === 'psweep'){
let key = this.getPsweepKey()
@@ -181,6 +181,17 @@ module.exports = View.extend({
}else{
self.plots[type] = body
self.plotFigure(body, type);
+ let plotSaved = Boolean(self.savedPlots.filter(function (plot) {
+ if(plot.key === data.plt_key)
+ return true
+ }).length > 0)
+ let saveBtn = $("button[data-hook=save-plot]").filter("#"+type)
+ if(!self.parent.wkflPath.includes('.proj')) {
+ saveBtn.hide()
+ }else if(plotSaved) {
+ saveBtn.prop('disabled', true)
+ saveBtn.text('Plot Saved to Project Viewer')
+ }
}
});
},
@@ -190,13 +201,15 @@ module.exports = View.extend({
var el = this.queryByHook(hook)
Plotly.newPlot(el, figure)
this.queryAll("#" + type).forEach(function (el) {
- if(el.disabled){
+ if(el.dataset.hook === "plot-spinner"){
+ el.style.display = "none"
+ }else if(el.disabled){
el.disabled = false;
}
});
},
clickDownloadPNGButton: function (type) {
- var pngButton = $('div[data-hook*='+type+'] a[data-title*="Download plot as a png"]')[0]
+ var pngButton = $('div[data-hook='+type+'] a[data-title*="Download plot as a png"]')[0]
pngButton.click()
},
exportToJsonFile: function (jsonData, plotType) {
@@ -224,12 +237,13 @@ module.exports = View.extend({
},
exportToZipFile: function (resultsPath) {
var endpoint = path.join("files", resultsPath);
- window.location.href = endpoint
+ window.open(endpoint)
},
expandContainer: function () {
$(this.queryByHook('workflow-results')).collapse('show');
- $(this.queryByHook('collapse')).prop('disabled', false);
- this.changeCollapseButtonText("collapse")
+ let collapseBtn = $(this.queryByHook('collapse'));
+ collapseBtn.prop('disabled', false)
+ collapseBtn.click()
if(this.type === "parameterSweep"){
this.getPlot("psweep")
}else{
@@ -270,6 +284,71 @@ module.exports = View.extend({
}
return key
},
+ savePlot: function (type) {
+ var species = []
+ if(type === "psweep"){
+ type = this.getPsweepKey()
+ species = [this.speciesOfInterest]
+ }else{
+ species = this.species.map(function (specie) { return specie.name; });
+ }
+ let stamp = this.getTimeStamp()
+ var plotInfo = {"key":type, "stamp":stamp, "species":species};
+ plotInfo = Object.assign({}, plotInfo, this.plotArgs)
+ this.savedPlots.push(plotInfo)
+ let queryString = "?path="+path.join(this.parent.wkflPath, "settings.json")
+ let endpoint = path.join(app.getApiPath(), "workflow/save-plot")+queryString
+ xhr({uri: endpoint, method: "post", json: true, body: plotInfo}, function (err, response, body) {
+ if(response.statusCode > 400) {
+ console.log(body.message)
+ }
+ })
+ },
+ getTimeStamp: function () {
+ var date = new Date()
+ let year = date.getFullYear().toString().slice(-2)
+ let month = date.getMonth() >= 10 ? date.getMonth().toString() : "0" + date.getMonth()
+ let day = date.getDate() >= 10 ? date.getDate().toString() : "0" + date.getDate()
+ let hour = date.getHours() >= 10 ? date.getHours().toString() : "0" + date.getHours()
+ let minutes = date.getMinutes() >= 10 ? date.getMinutes().toString() : "0" + date.getMinutes()
+ let seconds = date.getSeconds() >= 10 ? date.getSeconds().toString() : "0" + date.getSeconds()
+ return parseInt(year+month+day+hour+minutes+seconds)
+ },
+ handleCollapseStddevrangeClick: function (e) {
+ this.changeCollapseButtonText(e)
+ let type = "stddevran"
+ if(!this.plots[type]){
+ this.getPlot(type);
+ }
+ },
+ handleCollapseTrajectoriesClick: function (e) {
+ this.changeCollapseButtonText(e)
+ let type = "trajectories"
+ if(!this.plots[type]){
+ this.getPlot(type);
+ }
+ },
+ handleCollapseStddevClick: function (e) {
+ this.changeCollapseButtonText(e)
+ let type = "stddev"
+ if(!this.plots[type]){
+ this.getPlot(type);
+ }
+ },
+ handleCollapseTrajmeanClick: function (e) {
+ this.changeCollapseButtonText(e)
+ let type = "avg"
+ if(!this.plots[type]){
+ this.getPlot(type);
+ }
+ },
+ handleCollapsePsweepClick: function (e) {
+ this.changeCollapseButtonText(e)
+ let type = "psweep"
+ if(!this.plots[type]){
+ this.getPlot(type);
+ }
+ },
subviews: {
inputTitle: {
hook: 'title',
diff --git a/client/views/workflow-state-buttons.js b/client/views/workflow-state-buttons.js
index c7eebad465..2c6e45c38f 100644
--- a/client/views/workflow-state-buttons.js
+++ b/client/views/workflow-state-buttons.js
@@ -22,26 +22,35 @@ module.exports = View.extend({
},
render: function () {
View.prototype.render.apply(this, arguments);
+ $(this.queryByHook("save")).prop('disabled', this.parent.parent.modelLoadError)
+ $(this.queryByHook("start-workflow")).prop('disabled', this.parent.parent.modelLoadError)
+ $(this.queryByHook("edit-model")).prop('disabled', this.parent.parent.modelLoadError)
},
- clickSaveHandler: function (e) {
+ clickSaveHandler: function (e, cb) {
this.saving();
var self = this;
var model = this.model
- var optType = document.URL.endsWith(".mdl") ? "sn" : "se";
+ var optType = this.parent.parent.urlPathParam.endsWith(".mdl") ? "sn" : "se";
this.saveModel(function () {
- let query = JSON.stringify({"type":self.type,
+ self.saveWorkflow(model, optType, cb)
+ });
+ },
+ saveWorkflow: function (model, optType, cb) {
+ let self = this
+ let query = JSON.stringify({"type":self.type,
"optType":optType,
"mdlPath":model.directory,
"wkflPath":self.parent.parent.wkflPath,
"settings":self.parent.settings
})
- var endpoint = path.join(app.getApiPath(), 'workflow/save-workflow') + "?data=" + query;
- xhr({uri: endpoint}, function (err, response, body) {
- self.saved();
- if(document.URL.endsWith('.mdl')){
- self.parent.parent.reloadWkfl();
- }
- });
+ var endpoint = path.join(app.getApiPath(), 'workflow/save-workflow') + "?data=" + query;
+ xhr({uri: endpoint}, function (err, response, body) {
+ self.saved();
+ if(cb){
+ cb()
+ }else if(self.parent.parent.urlPathParam.endsWith('.mdl')){
+ self.parent.parent.reloadWkfl();
+ }
});
},
clickStartWorkflowHandler: function (e) {
@@ -99,7 +108,7 @@ module.exports = View.extend({
runWorkflow: function () {
var self = this;
var model = this.model;
- var optType = document.URL.endsWith(".mdl") ? "rn" : "re";
+ var optType = this.parent.parent.urlPathParam.endsWith(".mdl") ? "rn" : "re";
var query = {"type":this.type,
"optType":"s"+optType,
"mdlPath":model.directory,
diff --git a/client/views/workflow-status.js b/client/views/workflow-status.js
index b9cfbcf52e..6e33fe9ac2 100644
--- a/client/views/workflow-status.js
+++ b/client/views/workflow-status.js
@@ -13,7 +13,9 @@ module.exports = View.extend({
initialize: function (attrs, options) {
View.prototype.initialize.apply(this, arguments);
var localDate = new Date(attrs.startTime)
+ console.log(localDate, typeof localDate)
var localStartTime = this.getFormattedDate(localDate)
+ console.log(localStartTime, typeof localStartTime)
this.startTime = localStartTime;
this.status = attrs.status;
},
@@ -22,15 +24,24 @@ module.exports = View.extend({
if(this.status !== 'ready' && this.status !== 'new'){
this.expandContainer()
}
+ if(this.status !== 'running') {
+ $(this.queryByHook('running-spinner')).css('display', "none")
+ }
},
expandContainer: function () {
$(this.queryByHook('workflow-status')).collapse('show');
- $(this.queryByHook('collapse')).prop('disabled', false);
- this.changeCollapseButtonText()
+ let collapseBtn = $(this.queryByHook('collapse'))
+ collapseBtn.prop('disabled', false);
+ collapseBtn.trigger('click')
},
- changeCollapseButtonText: function () {
- var text = $(this.queryByHook('collapse')).text();
- text === '+' ? $(this.queryByHook('collapse')).text('-') : $(this.queryByHook('collapse')).text('+');
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
},
getFormattedDate: function (date) {
var months = ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May', 'Jun.', 'Jul.', 'Aug.', 'Sept.', 'Oct.', 'Nov.', 'Dec.'];
@@ -43,8 +54,15 @@ module.exports = View.extend({
hours = hours ? hours : 12; // replace 0 with 12
var minutes = date.getMinutes();
minutes = minutes < 10 ? '0' + minutes : minutes; // format minutes to always have two chars
- var timeZone = date.toString().split(' ').pop() // get the timezone from the date
- timeZone = timeZone.replace('(', '').replace(')', '') // remove the '()' from the timezone
+ var timeZone = date.toString().split('(').pop().split(')').shift() // get the timezone from the date
+ if(timeZone.includes(" ")){
+ tzparts = timeZone.split(" ")
+ tzparts = tzparts.map(function (element) {
+ return element.charAt(0)
+ })
+ timeZone = tzparts.join("")
+ }
+ // timeZone = timeZone.replace('(', '').replace(')', '') // remove the '()' from the timezone
return month + " " + day + ", " + year + " " + hours + ":" + minutes + " " + ampm + " " + timeZone;
},
});
\ No newline at end of file
diff --git a/client/views/workflow-viewer.js b/client/views/workflow-viewer.js
new file mode 100644
index 0000000000..098ab91df8
--- /dev/null
+++ b/client/views/workflow-viewer.js
@@ -0,0 +1,40 @@
+var $ = require('jquery');
+//collection
+var Collection = require('ampersand-collection');
+//models
+var Plot = require('../models/plots');
+//views
+var View = require('ampersand-view');
+var PlotsView = require('./plots-view');
+//templates
+var template = require('../templates/includes/workflowViewer.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=collapse-workflow]' : 'renderPlots'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments)
+ },
+ renderPlots: function (e) {
+ this.changeCollapseButtonText(e)
+ if(this.plotsView) {
+ return
+ }
+ var outputs = new Collection(this.model.outputs, {model: Plot})
+ this.plotsView = this.renderCollection(outputs, PlotsView, this.queryByHook("workflow-plots"))
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+})
\ No newline at end of file
diff --git a/client/views/workflows-viewer.js b/client/views/workflows-viewer.js
new file mode 100644
index 0000000000..1c8a10f229
--- /dev/null
+++ b/client/views/workflows-viewer.js
@@ -0,0 +1,29 @@
+var $ = require('jquery');
+//views
+var View = require('ampersand-view');
+var WorkflowViewer = require('./workflow-viewer');
+//templates
+var template = require('../templates/includes/workflowsViewer.pug');
+
+module.exports = View.extend({
+ template: template,
+ events: {
+ 'click [data-hook=collapse-workflows]' : 'changeCollapseButtonText'
+ },
+ initialize: function (attrs, options) {
+ View.prototype.initialize.apply(this, arguments)
+ },
+ render: function (attrs, options) {
+ View.prototype.render.apply(this, arguments)
+ this.renderCollection(this.collection, WorkflowViewer, this.queryByHook('workflow-container'))
+ },
+ changeCollapseButtonText: function (e) {
+ let source = e.target.dataset.hook
+ let collapseContainer = $(this.queryByHook(source).dataset.target)
+ if(!collapseContainer.length || !collapseContainer.attr("class").includes("collapsing")) {
+ let collapseBtn = $(this.queryByHook(source))
+ let text = collapseBtn.text();
+ text === '+' ? collapseBtn.text('-') : collapseBtn.text('+');
+ }
+ }
+})
\ No newline at end of file
diff --git a/jupyter_notebook_config.py b/jupyter_notebook_config.py
index 3b5c45ff19..66b8ea4bad 100644
--- a/jupyter_notebook_config.py
+++ b/jupyter_notebook_config.py
@@ -8,33 +8,12 @@
## This is an application.
-## The date format used by logging formatters for %(asctime)s
-#c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'
-
-## The Logging format template
-#c.Application.log_format = '[%(name)s]%(highlevel)s %(message)s'
-
-## Set the log level by value or name.
-#c.Application.log_level = 30
-
#------------------------------------------------------------------------------
# JupyterApp(Application) configuration
#------------------------------------------------------------------------------
## Base class for Jupyter applications
-## Answer yes to any prompts.
-#c.JupyterApp.answer_yes = False
-
-## Full path of a config file.
-#c.JupyterApp.config_file = ''
-
-## Specify a config file to load.
-#c.JupyterApp.config_file_name = ''
-
-## Generate default config file.
-#c.JupyterApp.generate_config = False
-
#------------------------------------------------------------------------------
# NotebookApp(JupyterApp) configuration
#------------------------------------------------------------------------------
@@ -47,7 +26,7 @@
}
## Extra paths to search for serving static files.
-#
+#
# This allows adding javascript/css to be available from the notebook server
# machine, or overriding individual files in the IPython
#
@@ -58,480 +37,56 @@
]
## Disable cross-site-request-forgery protection
-#
+#
# Jupyter notebook 4.3.1 introduces protection from cross-site request
# forgeries, requiring API requests to either:
-#
+#
# - originate from pages served by this server (validated with XSRF cookie and
# token), or - authenticate with a token
-#
+#
# Some anonymous compute resources still desire the ability to run code,
# completely without authentication. These services can disable all
# authentication and security checks, with the full knowledge of what that
# implies.
c.NotebookApp.disable_check_xsrf = True
-## The directory to use for notebooks and kernels.
-#c.NotebookApp.notebook_dir = ''
-
-## Extra paths to search for serving jinja templates.
-#
-# Can be used to override templates from notebook.templates.
-#c.NotebookApp.extra_template_paths = []
-
-## Set the Access-Control-Allow-Credentials: true header
-#c.NotebookApp.allow_credentials = False
-
-## Set the Access-Control-Allow-Origin header
-#
-# Use '*' to allow any origin to access your server.
-#
-# Takes precedence over allow_origin_pat.
-#c.NotebookApp.allow_origin = ''
-
-## Use a regular expression for the Access-Control-Allow-Origin header
-#
-# Requests from an origin matching the expression will get replies with:
-#
-# Access-Control-Allow-Origin: origin
-#
-# where `origin` is the origin of the request.
-#
-# Ignored if allow_origin is set.
-#c.NotebookApp.allow_origin_pat = ''
-
-## Allow password to be changed at login for the notebook server.
-#
-# While loggin in with a token, the notebook server UI will give the opportunity
-# to the user to enter a new password at the same time that will replace the
-# token login mechanism.
-#
-# This can be set to false to prevent changing password from the UI/API.
-#c.NotebookApp.allow_password_change = True
-
-## Allow requests where the Host header doesn't point to a local server
-#
-# By default, requests get a 403 forbidden response if the 'Host' header shows
-# that the browser thinks it's on a non-local domain. Setting this option to
-# True disables this check.
-#
-# This protects against 'DNS rebinding' attacks, where a remote web server
-# serves you a page and then changes its DNS to send later requests to a local
-# IP, bypassing same-origin checks.
-#
-# Local IP addresses (such as 127.0.0.1 and ::1) are allowed as local, along
-# with hostnames configured in local_hostnames.
-#c.NotebookApp.allow_remote_access = False
-
-## Whether to allow the user to run the notebook as root.
-#c.NotebookApp.allow_root = False
-
-## DEPRECATED use base_url
-#c.NotebookApp.base_project_url = '/'
-
-## The base URL for the notebook server.
-#
-# Leading and trailing slashes can be omitted, and will automatically be added.
-#c.NotebookApp.base_url = '/'
-
-## Specify what command to use to invoke a web browser when opening the notebook.
-# If not specified, the default browser will be determined by the `webbrowser`
-# standard library module, which allows setting of the BROWSER environment
-# variable to override it.
-#c.NotebookApp.browser = ''
-
-## The full path to an SSL/TLS certificate file.
-#c.NotebookApp.certfile = ''
-
-## The full path to a certificate authority certificate for SSL/TLS client
-# authentication.
-#c.NotebookApp.client_ca = ''
-
-## The config manager class to use
-#c.NotebookApp.config_manager_class = 'notebook.services.config.manager.ConfigManager'
-
-## The notebook manager class to use.
-#c.NotebookApp.contents_manager_class = 'notebook.services.contents.largefilemanager.LargeFileManager'
-
-## Extra keyword arguments to pass to `set_secure_cookie`. See tornado's
-# set_secure_cookie docs for details.
-#c.NotebookApp.cookie_options = {}
-
-## The random bytes used to secure cookies. By default this is a new random
-# number every time you start the Notebook. Set it to a value in a config file
-# to enable logins to persist across server sessions.
-#
-# Note: Cookie secrets should be kept private, do not share config files with
-# cookie_secret stored in plaintext (you can read the value from a file).
-#c.NotebookApp.cookie_secret = b''
-
-## The file where the cookie secret is stored.
-#c.NotebookApp.cookie_secret_file = ''
-
-## Override URL shown to users.
-#
-# Replace actual URL, including protocol, address, port and base URL, with the
-# given value when displaying URL to the users. Do not change the actual
-# connection URL. If authentication token is enabled, the token is added to the
-# custom URL automatically.
-#
-# This option is intended to be used when the URL to display to the user cannot
-# be determined reliably by the Jupyter notebook server (proxified or
-# containerized setups for example).
-#c.NotebookApp.custom_display_url = ''
-
## The default URL to redirect to from `/`
-c.NotebookApp.default_url = '/stochss/models'
-
-
-## Whether to enable MathJax for typesetting math/TeX
-#
-# MathJax is the javascript library Jupyter uses to render math/LaTeX. It is
-# very large, so you may want to disable it if you have a slow internet
-# connection, or for offline use of the notebook.
-#
-# When disabled, equations etc. will appear as their untransformed TeX source.
-#c.NotebookApp.enable_mathjax = True
-
-## extra paths to look for Javascript notebook extensions
-#c.NotebookApp.extra_nbextensions_path = []
-
-## handlers that should be loaded at higher priority than the default services
-#c.NotebookApp.extra_services = []
-
-##
-#c.NotebookApp.file_to_run = ''
-
-## Extra keyword arguments to pass to `get_secure_cookie`. See tornado's
-# get_secure_cookie docs for details.
-#c.NotebookApp.get_secure_cookie_kwargs = {}
-
-## Deprecated: Use minified JS file or not, mainly use during dev to avoid JS
-# recompilation
-#c.NotebookApp.ignore_minified_js = False
-
-## (bytes/sec) Maximum rate at which stream output can be sent on iopub before
-# they are limited.
-#c.NotebookApp.iopub_data_rate_limit = 1000000
-
-## (msgs/sec) Maximum rate at which messages can be sent on iopub before they are
-# limited.
-#c.NotebookApp.iopub_msg_rate_limit = 1000
-
-## The IP address the notebook server will listen on.
-#c.NotebookApp.ip = 'localhost'
-
-## Supply extra arguments that will be passed to Jinja environment.
-#c.NotebookApp.jinja_environment_options = {}
-
-## Extra variables to supply to jinja templates when rendering.
-#c.NotebookApp.jinja_template_vars = {}
-
-## The kernel manager class to use.
-#c.NotebookApp.kernel_manager_class = 'notebook.services.kernels.kernelmanager.MappingKernelManager'
-
-## The kernel spec manager class to use. Should be a subclass of
-# `jupyter_client.kernelspec.KernelSpecManager`.
-#
-# The Api of KernelSpecManager is provisional and might change without warning
-# between this version of Jupyter and the next stable one.
-#c.NotebookApp.kernel_spec_manager_class = 'jupyter_client.kernelspec.KernelSpecManager'
-
-## The full path to a private key file for usage with SSL/TLS.
-#c.NotebookApp.keyfile = ''
-
-## Hostnames to allow as local when allow_remote_access is False.
-#
-# Local IP addresses (such as 127.0.0.1 and ::1) are automatically accepted as
-# local as well.
-#c.NotebookApp.local_hostnames = ['localhost']
-
-## The login handler class to use.
-#c.NotebookApp.login_handler_class = 'notebook.auth.login.LoginHandler'
-
-## The logout handler class to use.
-#c.NotebookApp.logout_handler_class = 'notebook.auth.logout.LogoutHandler'
-
-## The MathJax.js configuration file that is to be used.
-#c.NotebookApp.mathjax_config = 'TeX-AMS-MML_HTMLorMML-full,Safe'
-
-## A custom url for MathJax.js. Should be in the form of a case-sensitive url to
-# MathJax, for example: /static/components/MathJax/MathJax.js
-#c.NotebookApp.mathjax_url = ''
-
-## Sets the maximum allowed size of the client request body, specified in the
-# Content-Length request header field. If the size in a request exceeds the
-# configured value, a malformed HTTP message is returned to the client.
-#
-# Note: max_body_size is applied even in streaming mode.
-#c.NotebookApp.max_body_size = 536870912
-
-## Gets or sets the maximum amount of memory, in bytes, that is allocated for
-# use by the buffer manager.
-#c.NotebookApp.max_buffer_size = 536870912
-
-## Gets or sets a lower bound on the open file handles process resource limit.
-# This may need to be increased if you run into an OSError: [Errno 24] Too many
-# open files. This is not applicable when running on Windows.
-#c.NotebookApp.min_open_files_limit = 0
-
-## Whether to open in a browser after starting. The specific browser used is
-# platform dependent and determined by the python standard library `webbrowser`
-# module, unless it is overridden using the --browser (NotebookApp.browser)
-# configuration option.
-#c.NotebookApp.open_browser = True
-
-## Hashed password to use for web authentication.
-#
-# To generate, type in a python/IPython shell:
-#
-# from notebook.auth import passwd; passwd()
-#
-# The string should be of the form type:salt:hashed-password.
-#c.NotebookApp.password = ''
-
-## Forces users to use a password for the Notebook server. This is useful in a
-# multi user environment, for instance when everybody in the LAN can access each
-# other's machine through ssh.
-#
-# In such a case, server the notebook server on localhost is not secure since
-# any user can connect to the notebook server via ssh.
-#c.NotebookApp.password_required = False
-
-## The port the notebook server will listen on.
-#c.NotebookApp.port = 8888
-
-## The number of additional ports to try if the specified port is not available.
-#c.NotebookApp.port_retries = 50
-
-## DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
-#c.NotebookApp.pylab = 'disabled'
-
-## If True, display a button in the dashboard to quit (shutdown the notebook
-# server).
-#c.NotebookApp.quit_button = True
-
-## (sec) Time window used to check the message and data rate limits.
-#c.NotebookApp.rate_limit_window = 3
-
-## Reraise exceptions encountered loading server extensions?
-#c.NotebookApp.reraise_server_extension_failures = False
-
-## DEPRECATED use the nbserver_extensions dict instead
-#c.NotebookApp.server_extensions = []
-
-## The session manager class to use.
-#c.NotebookApp.session_manager_class = 'notebook.services.sessions.sessionmanager.SessionManager'
-
-## Shut down the server after N seconds with no kernels or terminals running and
-# no activity. This can be used together with culling idle kernels
-# (MappingKernelManager.cull_idle_timeout) to shutdown the notebook server when
-# it's not in use. This is not precisely timed: it may shut down up to a minute
-# later. 0 (the default) disables this automatic shutdown.
-#c.NotebookApp.shutdown_no_activity_timeout = 0
-
-## Supply SSL options for the tornado HTTPServer. See the tornado docs for
-# details.
-#c.NotebookApp.ssl_options = {}
-
-## Supply overrides for terminado. Currently only supports "shell_command".
-#c.NotebookApp.terminado_settings = {}
-
-## Set to False to disable terminals.
-#
-# This does *not* make the notebook server more secure by itself. Anything the
-# user can in a terminal, they can also do in a notebook.
-#
-# Terminals may also be automatically disabled if the terminado package is not
-# available.
-#c.NotebookApp.terminals_enabled = True
-
-## Token used for authenticating first-time connections to the server.
-#
-# When no password is enabled, the default is to generate a new, random token.
-#
-# Setting to an empty string disables authentication altogether, which is NOT
-# RECOMMENDED.
-#c.NotebookApp.token = '
'
-
-## Supply overrides for the tornado.web.Application that the Jupyter notebook
-# uses.
-#c.NotebookApp.tornado_settings = {}
-
-## Whether to trust or not X-Scheme/X-Forwarded-Proto and X-Real-Ip/X-Forwarded-
-# For headerssent by the upstream reverse proxy. Necessary if the proxy handles
-# SSL
-#c.NotebookApp.trust_xheaders = False
-
-## Disable launching browser by redirect file
-#
-# For versions of notebook > 5.7.2, a security feature measure was added that
-# prevented the authentication token used to launch the browser from being
-# visible. This feature makes it difficult for other users on a multi-user
-# system from running code in your Jupyter session as you.
-#
-# However, some environments (like Windows Subsystem for Linux (WSL) and
-# Chromebooks), launching a browser using a redirect file can lead the browser
-# failing to load. This is because of the difference in file structures/paths
-# between the runtime and the browser.
-#
-# Disabling this setting to False will disable this behavior, allowing the
-# browser to launch by using a URL and visible token (as before).
-#c.NotebookApp.use_redirect_file = True
-
-## DEPRECATED, use tornado_settings
-#c.NotebookApp.webapp_settings = {}
-
-## Specify Where to open the notebook on startup. This is the `new` argument
-# passed to the standard library method `webbrowser.open`. The behaviour is not
-# guaranteed, but depends on browser support. Valid values are:
-#
-# - 2 opens a new tab,
-# - 1 opens a new window,
-# - 0 opens in an existing window.
-#
-# See the `webbrowser.open` documentation for details.
-#c.NotebookApp.webbrowser_open_new = 2
-
-## Set the tornado compression options for websocket connections.
-#
-# This value will be returned from
-# :meth:`WebSocketHandler.get_compression_options`. None (default) will disable
-# compression. A dict (even an empty one) will enable compression.
-#
-# See the tornado docs for WebSocketHandler.get_compression_options for details.
-#c.NotebookApp.websocket_compression_options = None
-
-## The base URL for websockets, if it differs from the HTTP server (hint: it
-# almost certainly doesn't).
-#
-# Should be in the form of an HTTP origin: ws[s]://hostname[:port]
-#c.NotebookApp.websocket_url = ''
-
-#------------------------------------------------------------------------------
-# LabApp(NotebookApp) configuration
-#------------------------------------------------------------------------------
-
-## The app directory to launch JupyterLab from.
-#c.LabApp.app_dir = '/Users/mgeiger/.local/share/virtualenvs/stochss-zql4rYfM/share/jupyter/lab'
-
-## Whether to start the app in core mode. In this mode, JupyterLab will run using
-# the JavaScript assets that are within the installed JupyterLab Python package.
-# In core mode, third party extensions are disabled. The `--dev-mode` flag is an
-# alias to this to be used when the Python package itself is installed in
-# development mode (`pip install -e .`).
-#c.LabApp.core_mode = False
-
-## The default URL to redirect to from `/`
-#c.LabApp.default_url = '/lab'
-
-## Whether to start the app in dev mode. Uses the unpublished local JavaScript
-# packages in the `dev_mode` folder. In this case JupyterLab will show a red
-# stripe at the top of the page. It can only be used if JupyterLab is installed
-# as `pip install -e .`.
-#c.LabApp.dev_mode = False
-
-## The override url for static lab assets, typically a CDN.
-#c.LabApp.override_static_url = ''
-
-## The override url for static lab theme assets, typically a CDN.
-#c.LabApp.override_theme_url = ''
-
-## The directory for user settings.
-#c.LabApp.user_settings_dir = '/Users/mgeiger/.jupyter/lab/user-settings'
-
-## Whether to serve the app in watch mode
-#c.LabApp.watch = False
-
-## The directory for workspaces
-#c.LabApp.workspaces_dir = '/Users/mgeiger/.jupyter/lab/workspaces'
-
-#------------------------------------------------------------------------------
-# ConnectionFileMixin(LoggingConfigurable) configuration
-#------------------------------------------------------------------------------
-
-## Mixin for configurable classes that work with connection files
-
-## JSON file in which to store connection info [default: kernel-.json]
-#
-# This file will contain the IP, ports, and authentication key needed to connect
-# clients to this kernel. By default, this file will be created in the security
-# dir of the current profile, but can be specified by absolute path.
-#c.ConnectionFileMixin.connection_file = ''
-
-## set the control (ROUTER) port [default: random]
-#c.ConnectionFileMixin.control_port = 0
-
-## set the heartbeat port [default: random]
-#c.ConnectionFileMixin.hb_port = 0
-
-## set the iopub (PUB) port [default: random]
-#c.ConnectionFileMixin.iopub_port = 0
-
-## Set the kernel's IP address [default localhost]. If the IP address is
-# something other than localhost, then Consoles on other machines will be able
-# to connect to the Kernel, so be careful!
-#c.ConnectionFileMixin.ip = ''
-
-## set the shell (ROUTER) port [default: random]
-#c.ConnectionFileMixin.shell_port = 0
-
-## set the stdin (ROUTER) port [default: random]
-#c.ConnectionFileMixin.stdin_port = 0
-
-##
-#c.ConnectionFileMixin.transport = 'tcp'
+c.NotebookApp.default_url = '/stochss/home'
#------------------------------------------------------------------------------
# KernelManager(ConnectionFileMixin) configuration
#------------------------------------------------------------------------------
## Manages a single kernel in a subprocess on this host.
-#
+#
# This version starts kernels with Popen.
-## Should we autorestart the kernel if it dies.
-#c.KernelManager.autorestart = True
-
-## DEPRECATED: Use kernel_name instead.
-#
-# The Popen Command to launch the kernel. Override this if you have a custom
-# kernel. If kernel_cmd is specified in a configuration file, Jupyter does not
-# pass any arguments to the kernel, because it cannot make any assumptions about
-# the arguments that the kernel understands. In particular, this means that the
-# kernel does not receive the option --debug if it given on the Jupyter command
-# line.
-#c.KernelManager.kernel_cmd = []
-
-## Time to wait for a kernel to terminate before killing it, in seconds.
-#c.KernelManager.shutdown_wait_time = 5.0
-
#------------------------------------------------------------------------------
# Session(Configurable) configuration
#------------------------------------------------------------------------------
## Object for handling serialization and sending of messages.
-#
+#
# The Session object handles building messages and sending them with ZMQ sockets
# or ZMQStream objects. Objects can communicate with each other over the
# network via Session objects, and only need to work with the dict-based IPython
# message spec. The Session will handle serialization/deserialization, security,
# and metadata.
-#
+#
# Sessions support configurable serialization via packer/unpacker traits, and
# signing with HMAC digests via the key/keyfile traits.
-#
+#
# Parameters ----------
-#
+#
# debug : bool
# whether to trigger extra debugging statements
# packer/unpacker : str : 'json', 'pickle' or import_string
# importstrings for methods to serialize message parts. If just
# 'json' or 'pickle', predefined JSON and pickle packers will be used.
# Otherwise, the entire importstring must be used.
-#
+#
# The functions must accept at least valid JSON input, and output *bytes*.
-#
+#
# For example, to use msgpack:
# packer = 'msgpack.packb', unpacker='msgpack.unpackb'
# pack/unpack : callables
@@ -547,296 +102,68 @@
# The file containing a key. If this is set, `key` will be initialized
# to the contents of the file.
-## Threshold (in bytes) beyond which an object's buffer should be extracted to
-# avoid pickling.
-#c.Session.buffer_threshold = 1024
-
-## Whether to check PID to protect against calls after fork.
-#
-# This check can be disabled if fork-safety is handled elsewhere.
-#c.Session.check_pid = True
-
-## Threshold (in bytes) beyond which a buffer should be sent without copying.
-#c.Session.copy_threshold = 65536
-
-## Debug output in the Session
-#c.Session.debug = False
-
-## The maximum number of digests to remember.
-#
-# The digest history will be culled when it exceeds this value.
-#c.Session.digest_history_size = 65536
-
-## The maximum number of items for a container to be introspected for custom
-# serialization. Containers larger than this are pickled outright.
-#c.Session.item_threshold = 64
-
-## execution key, for signing messages.
-#c.Session.key = b''
-
-## path to file containing execution key.
-#c.Session.keyfile = ''
-
-## Metadata dictionary, which serves as the default top-level metadata dict for
-# each message.
-#c.Session.metadata = {}
-
-## The name of the packer for serializing messages. Should be one of 'json',
-# 'pickle', or an import name for a custom callable serializer.
-#c.Session.packer = 'json'
-
-## The UUID identifying this session.
-#c.Session.session = ''
-
-## The digest scheme used to construct the message signatures. Must have the form
-# 'hmac-HASH'.
-#c.Session.signature_scheme = 'hmac-sha256'
-
-## The name of the unpacker for unserializing messages. Only used with custom
-# functions for `packer`.
-#c.Session.unpacker = 'json'
-
-## Username for the Session. Default is your system username.
-#c.Session.username = 'mgeiger'
-
#------------------------------------------------------------------------------
# MultiKernelManager(LoggingConfigurable) configuration
#------------------------------------------------------------------------------
## A class for managing multiple kernels.
-## The name of the default kernel to start
-#c.MultiKernelManager.default_kernel_name = 'python3'
-
-## The kernel manager class. This is configurable to allow subclassing of the
-# KernelManager for customized behavior.
-#c.MultiKernelManager.kernel_manager_class = 'jupyter_client.ioloop.IOLoopKernelManager'
-
#------------------------------------------------------------------------------
# MappingKernelManager(MultiKernelManager) configuration
#------------------------------------------------------------------------------
## A KernelManager that handles notebook mapping and HTTP error handling
-## White list of allowed kernel message types. When the list is empty, all
-# message types are allowed.
-#c.MappingKernelManager.allowed_message_types = []
-
-## Whether messages from kernels whose frontends have disconnected should be
-# buffered in-memory.
-#
-# When True (default), messages are buffered and replayed on reconnect, avoiding
-# lost messages due to interrupted connectivity.
-#
-# Disable if long-running kernels will produce too much output while no
-# frontends are connected.
-#c.MappingKernelManager.buffer_offline_messages = True
-
-## Whether to consider culling kernels which are busy. Only effective if
-# cull_idle_timeout > 0.
-#c.MappingKernelManager.cull_busy = False
-
-## Whether to consider culling kernels which have one or more connections. Only
-# effective if cull_idle_timeout > 0.
-#c.MappingKernelManager.cull_connected = False
-
-## Timeout (in seconds) after which a kernel is considered idle and ready to be
-# culled. Values of 0 or lower disable culling. Very short timeouts may result
-# in kernels being culled for users with poor network connections.
-#c.MappingKernelManager.cull_idle_timeout = 0
-
-## The interval (in seconds) on which to check for idle kernels exceeding the
-# cull timeout value.
-#c.MappingKernelManager.cull_interval = 300
-
-## Timeout for giving up on a kernel (in seconds).
-#
-# On starting and restarting kernels, we check whether the kernel is running and
-# responsive by sending kernel_info_requests. This sets the timeout in seconds
-# for how long the kernel can take before being presumed dead. This affects the
-# MappingKernelManager (which handles kernel restarts) and the
-# ZMQChannelsHandler (which handles the startup).
-#c.MappingKernelManager.kernel_info_timeout = 60
-
-##
-#c.MappingKernelManager.root_dir = ''
-
#------------------------------------------------------------------------------
# KernelSpecManager(LoggingConfigurable) configuration
#------------------------------------------------------------------------------
-## If there is no Python kernelspec registered and the IPython kernel is
-# available, ensure it is added to the spec list.
-#c.KernelSpecManager.ensure_native_kernel = True
-
-## The kernel spec class. This is configurable to allow subclassing of the
-# KernelSpecManager for customized behavior.
-#c.KernelSpecManager.kernel_spec_class = 'jupyter_client.kernelspec.KernelSpec'
-
-## Whitelist of allowed kernel names.
-#
-# By default, all installed kernels are allowed.
-#c.KernelSpecManager.whitelist = set()
-
#------------------------------------------------------------------------------
# ContentsManager(LoggingConfigurable) configuration
#------------------------------------------------------------------------------
## Base class for serving files and directories.
-#
+#
# This serves any text or binary file, as well as directories, with special
# handling for JSON notebook documents.
-#
+#
# Most APIs take a path argument, which is always an API-style unicode path, and
# always refers to a directory.
-#
+#
# - unicode, not url-escaped
# - '/'-separated
# - leading and trailing '/' will be stripped
# - if unspecified, path defaults to '',
# indicating the root path.
-## Allow access to hidden files
-#c.ContentsManager.allow_hidden = False
-
-##
-#c.ContentsManager.checkpoints = None
-
-##
-#c.ContentsManager.checkpoints_class = 'notebook.services.contents.checkpoints.Checkpoints'
-
-##
-#c.ContentsManager.checkpoints_kwargs = {}
-
-## handler class to use when serving raw file requests.
-#
-# Default is a fallback that talks to the ContentsManager API, which may be
-# inefficient, especially for large files.
-#
-# Local files-based ContentsManagers can use a StaticFileHandler subclass, which
-# will be much more efficient.
-#
-# Access to these files should be Authenticated.
-#c.ContentsManager.files_handler_class = 'notebook.files.handlers.FilesHandler'
-
-## Extra parameters to pass to files_handler_class.
-#
-# For example, StaticFileHandlers generally expect a `path` argument specifying
-# the root directory from which to serve files.
-#c.ContentsManager.files_handler_params = {}
-
-## Glob patterns to hide in file and directory listings.
-#c.ContentsManager.hide_globs = ['__pycache__', '*.pyc', '*.pyo', '.DS_Store', '*.so', '*.dylib', '*~']
-
-## Python callable or importstring thereof
-#
-# To be called on a contents model prior to save.
-#
-# This can be used to process the structure, such as removing notebook outputs
-# or other side effects that should not be saved.
-#
-# It will be called as (all arguments passed by keyword)::
-#
-# hook(path=path, model=model, contents_manager=self)
-#
-# - model: the model to be saved. Includes file contents.
-# Modifying this dict will affect the file that is stored.
-# - path: the API path of the save destination
-# - contents_manager: this ContentsManager instance
-#c.ContentsManager.pre_save_hook = None
-
-##
-#c.ContentsManager.root_dir = '/'
-
-## The base name used when creating untitled directories.
-#c.ContentsManager.untitled_directory = 'Untitled Folder'
-
-## The base name used when creating untitled files.
-#c.ContentsManager.untitled_file = 'untitled'
-
-## The base name used when creating untitled notebooks.
-#c.ContentsManager.untitled_notebook = 'Untitled'
-
#------------------------------------------------------------------------------
# FileManagerMixin(Configurable) configuration
#------------------------------------------------------------------------------
## Mixin for ContentsAPI classes that interact with the filesystem.
-#
+#
# Provides facilities for reading, writing, and copying both notebooks and
# generic files.
-#
+#
# Shared by FileContentsManager and FileCheckpoints.
-#
+#
# Note ---- Classes using this mixin must provide the following attributes:
-#
+#
# root_dir : unicode
# A directory against against which API-style paths are to be resolved.
-#
+#
# log : logging.Logger
-## By default notebooks are saved on disk on a temporary file and then if
-# successfully written, it replaces the old ones. This procedure, namely
-# 'atomic_writing', causes some bugs on file system without operation order
-# enforcement (like some networked fs). If set to False, the new notebook is
-# written directly on the old one which could fail (eg: full filesystem or quota
-# )
-#c.FileManagerMixin.use_atomic_writing = True
-
#------------------------------------------------------------------------------
# FileContentsManager(FileManagerMixin,ContentsManager) configuration
#------------------------------------------------------------------------------
-## If True (default), deleting files will send them to the platform's
-# trash/recycle bin, where they can be recovered. If False, deleting files
-# really deletes them.
-#c.FileContentsManager.delete_to_trash = True
-
-## Python callable or importstring thereof
-#
-# to be called on the path of a file just saved.
-#
-# This can be used to process the file on disk, such as converting the notebook
-# to a script or HTML via nbconvert.
-#
-# It will be called as (all arguments passed by keyword)::
-#
-# hook(os_path=os_path, model=model, contents_manager=instance)
-#
-# - path: the filesystem path to the file just written - model: the model
-# representing the file - contents_manager: this ContentsManager instance
-#c.FileContentsManager.post_save_hook = None
-
-##
-#c.FileContentsManager.root_dir = ''
-
-## DEPRECATED, use post_save_hook. Will be removed in Notebook 5.0
-#c.FileContentsManager.save_script = False
-
#------------------------------------------------------------------------------
# NotebookNotary(LoggingConfigurable) configuration
#------------------------------------------------------------------------------
## A class for computing and verifying notebook signatures.
-## The hashing algorithm used to sign notebooks.
-#c.NotebookNotary.algorithm = 'sha256'
-
-## The sqlite file in which to store notebook signatures. By default, this will
-# be in your Jupyter data directory. You can set it to ':memory:' to disable
-# sqlite writing to the filesystem.
-#c.NotebookNotary.db_file = ''
-
-## The secret key with which notebooks are signed.
-#c.NotebookNotary.secret = b''
-
-## The file where the secret key is stored.
-#c.NotebookNotary.secret_file = ''
-
-## A callable returning the storage backend for notebook signatures. The default
-# uses an SQLite database.
-#c.NotebookNotary.store_factory = traitlets.Undefined
-
#------------------------------------------------------------------------------
# GatewayKernelManager(MappingKernelManager) configuration
#------------------------------------------------------------------------------
@@ -856,69 +183,3 @@
# can share these values across all objects. It also contains some helper methods
# to build request arguments out of the various config options.
-## The authorization token used in the HTTP headers. (JUPYTER_GATEWAY_AUTH_TOKEN
-# env var)
-#c.GatewayClient.auth_token = None
-
-## The filename of CA certificates or None to use defaults.
-# (JUPYTER_GATEWAY_CA_CERTS env var)
-#c.GatewayClient.ca_certs = None
-
-## The filename for client SSL certificate, if any. (JUPYTER_GATEWAY_CLIENT_CERT
-# env var)
-#c.GatewayClient.client_cert = None
-
-## The filename for client SSL key, if any. (JUPYTER_GATEWAY_CLIENT_KEY env var)
-#c.GatewayClient.client_key = None
-
-## The time allowed for HTTP connection establishment with the Gateway server.
-# (JUPYTER_GATEWAY_CONNECT_TIMEOUT env var)
-#c.GatewayClient.connect_timeout = 60.0
-
-## A comma-separated list of environment variable names that will be included,
-# along with their values, in the kernel startup request. The corresponding
-# `env_whitelist` configuration value must also be set on the Gateway server -
-# since that configuration value indicates which environmental values to make
-# available to the kernel. (JUPYTER_GATEWAY_ENV_WHITELIST env var)
-#c.GatewayClient.env_whitelist = ''
-
-## Additional HTTP headers to pass on the request. This value will be converted
-# to a dict. (JUPYTER_GATEWAY_HEADERS env var)
-#c.GatewayClient.headers = '{}'
-
-## The password for HTTP authentication. (JUPYTER_GATEWAY_HTTP_PWD env var)
-#c.GatewayClient.http_pwd = None
-
-## The username for HTTP authentication. (JUPYTER_GATEWAY_HTTP_USER env var)
-#c.GatewayClient.http_user = None
-
-## The gateway API endpoint for accessing kernel resources
-# (JUPYTER_GATEWAY_KERNELS_ENDPOINT env var)
-#c.GatewayClient.kernels_endpoint = '/api/kernels'
-
-## The gateway API endpoint for accessing kernelspecs
-# (JUPYTER_GATEWAY_KERNELSPECS_ENDPOINT env var)
-#c.GatewayClient.kernelspecs_endpoint = '/api/kernelspecs'
-
-## The gateway endpoint for accessing kernelspecs resources
-# (JUPYTER_GATEWAY_KERNELSPECS_RESOURCE_ENDPOINT env var)
-#c.GatewayClient.kernelspecs_resource_endpoint = '/kernelspecs'
-
-## The time allowed for HTTP request completion. (JUPYTER_GATEWAY_REQUEST_TIMEOUT
-# env var)
-#c.GatewayClient.request_timeout = 60.0
-
-## The url of the Kernel or Enterprise Gateway server where kernel specifications
-# are defined and kernel management takes place. If defined, this Notebook
-# server acts as a proxy for all kernel management and kernel specification
-# retrieval. (JUPYTER_GATEWAY_URL env var)
-#c.GatewayClient.url = None
-
-## For HTTPS requests, determines if server's certificate should be validated or
-# not. (JUPYTER_GATEWAY_VALIDATE_CERT env var)
-#c.GatewayClient.validate_cert = True
-
-## The websocket url of the Kernel or Enterprise Gateway server. If not
-# provided, this value will correspond to the value of the Gateway url with 'ws'
-# in place of 'http'. (JUPYTER_GATEWAY_WS_URL env var)
-#c.GatewayClient.ws_url = None
diff --git a/package.json b/package.json
index 8e155f3b87..61252326c5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "stochss",
- "version": "2.0.0",
+ "version": "2.0.1",
"description": "",
"main": "webpack.config.js",
"scripts": {
diff --git a/public_models/Brusselator/Brusselator.ipynb b/public_models/Brusselator/Brusselator.ipynb
index b84fa725eb..d9ae8c91c9 100644
--- a/public_models/Brusselator/Brusselator.ipynb
+++ b/public_models/Brusselator/Brusselator.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Degradation/Degradation.ipynb b/public_models/Degradation/Degradation.ipynb
index b3f58b11ad..0c2c174373 100644
--- a/public_models/Degradation/Degradation.ipynb
+++ b/public_models/Degradation/Degradation.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Dimerization/Dimerization.ipynb b/public_models/Dimerization/Dimerization.ipynb
index 540b34317c..f038f105f6 100644
--- a/public_models/Dimerization/Dimerization.ipynb
+++ b/public_models/Dimerization/Dimerization.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Example SIR Epidemic Project.proj/SIR Epidemic Model.mdl b/public_models/Example SIR Epidemic Project.proj/SIR Epidemic Model.mdl
new file mode 100644
index 0000000000..320f352f31
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/SIR Epidemic Model.mdl
@@ -0,0 +1 @@
+{"is_spatial":false,"defaultID":8,"defaultMode":"discrete","annotation":"The SIR model is a simple mathematical model of epidemics. An epidemic is when the number of people infected with a disease is increasing in a population. S, I, and R stand for:\n\nS - susceptible: These are people that are not infected with the disease yet. However, they are not immune to it either and so they can become infected with the disease in the future.\nI - infected or infectious: These are people that are infected with the disease and can transmit the disease to susceptible people.\nR - recovered: These are people who have recovered from the disease and are immune, so they can no longer be infected with the disease.\n\nThis model is reasonably predictive for infectious diseases that are transmitted from human to human, and where recovery confers lasting resistance, such as measles, mumps and rubella.\nThese variables (S, I, and R) represent the number of people in each compartment at a particular time. To represent that the number of susceptible, infectious and removed individuals may vary over time (even if the total population size remains constant), we make the precise numbers a function of t (time): S(t), I(t) and R(t). For a specific disease in a specific population, these functions may be worked out in order to predict possible outbreaks and bring them under control.\nAs implied by the variable function of t, the model is dynamic in that the numbers in each compartment may fluctuate over time. The importance of this dynamic aspect is most obvious in an endemic disease with a short infectious period, such as measles in the UK prior to the introduction of a vaccine in 1968. Such diseases tend to occur in cycles of outbreaks due to the variation in number of susceptibles (S(t)) over time. During an epidemic, the number of susceptible individuals falls rapidly as more of them are infected and thus enter the infectious and removed compartments. The disease cannot break out again until the number of susceptibles has built back up, e.g. as a result of offspring being born into the susceptible compartment.\nEach member of the population typically progresses from susceptible to infectious to recovered.","modelSettings":{"endSim":20,"timeStep":0.05,"volume":1},"meshSettings":{"count":2},"species":[{"compID":1,"name":"Susceptible","value":999,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are\n susceptible to infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]},{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]},{"compID":3,"name":"Recovered","value":0,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that have recovered from infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}],"initialConditions":[],"parameters":[{"compID":4,"name":"beta","expression":"0.0083","annotation":"Rate at which a Susceptible species becomes infected\n"},{"compID":5,"name":"gamma","expression":"0.3","annotation":"Rate at which an Infected species recovers from the infection.\n\n"}],"reactions":[{"compID":6,"name":"r1","reactionType":"custom-massaction","summary":"Susceptible+Infected \\rightarrow 2Infected","massaction":true,"propensity":"","annotation":"","subdomains":["subdomain 1:","subdomain 2:"],"rate":{"compID":4,"name":"beta","expression":"8.3","annotation":""},"reactants":[{"ratio":1,"specie":{"compID":1,"name":"Susceptible","value":999,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are\n susceptible to infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}},{"ratio":1,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}],"products":[{"ratio":2,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}]},{"compID":7,"name":"r2","reactionType":"change","summary":"Infected \\rightarrow Recovered","massaction":false,"propensity":"","annotation":"","subdomains":["subdomain 1:","subdomain 2:"],"rate":{"compID":5,"name":"gamma","expression":"0.3","annotation":""},"reactants":[{"ratio":1,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}],"products":[{"ratio":1,"specie":{"compID":3,"name":"Recovered","value":0,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that have recovered from infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}]}],"rules":[],"eventsCollection":[],"functionDefinitions":[]}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/SIR Epidemic Model.mdl b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/SIR Epidemic Model.mdl
new file mode 100644
index 0000000000..51a3fd2585
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/SIR Epidemic Model.mdl
@@ -0,0 +1 @@
+{"is_spatial":false,"defaultID":8,"defaultMode":"discrete","annotation":"Susceptible, Infected, Recovered epidemiology (SIR) Model.\n","modelSettings":{"endSim":20,"timeStep":0.05,"volume":1},"meshSettings":{"count":2},"species":[{"compID":1,"name":"Susceptible","value":999,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are\n susceptible to infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]},{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]},{"compID":3,"name":"Recovered","value":0,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that have recovered from infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}],"initialConditions":[],"parameters":[{"compID":4,"name":"beta","expression":"0.0083","annotation":"Rate at which a Susceptible species becomes infected\n"},{"compID":5,"name":"gamma","expression":"0.3","annotation":"Rate at which an Infected species recovers from the infection.\n\n"}],"reactions":[{"compID":6,"name":"r1","reactionType":"custom-massaction","summary":"Susceptible+Infected \\rightarrow 2Infected","massaction":true,"propensity":"","annotation":"","subdomains":["subdomain 1:","subdomain 2:"],"rate":{"compID":4,"name":"beta","expression":"8.3","annotation":""},"reactants":[{"ratio":1,"specie":{"compID":1,"name":"Susceptible","value":999,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are\n susceptible to infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}},{"ratio":1,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}],"products":[{"ratio":2,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}]},{"compID":7,"name":"r2","reactionType":"change","summary":"Infected \\rightarrow Recovered","massaction":false,"propensity":"","annotation":"","subdomains":["subdomain 1:","subdomain 2:"],"rate":{"compID":5,"name":"gamma","expression":"0.3","annotation":""},"reactants":[{"ratio":1,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}],"products":[{"ratio":1,"specie":{"compID":3,"name":"Recovered","value":0,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that have recovered from infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}]}],"rules":[],"eventsCollection":[],"functionDefinitions":[]}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/info.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/info.json
new file mode 100644
index 0000000000..9b302b9385
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/info.json
@@ -0,0 +1 @@
+{"source_model": "Examples/Example SIR Epidemic Project.proj/SIR Epidemic Model.mdl", "wkfl_model": null, "type": "parameterSweep", "start_time": null}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/settings.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/settings.json
new file mode 100644
index 0000000000..8b4e69e473
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 1D Parameter Sweep Workflow Incomplete.wkfl/settings.json
@@ -0,0 +1 @@
+{"simulationSettings": {"isAutomatic": false, "relativeTol": 0.001, "absoluteTol": 1e-06, "realizations": 20, "algorithm": "SSA", "seed": -1, "tauTol": 0.03}, "parameterSweepSettings": {"is1D": true, "p1Min": 0.004, "p1Max": 0.013, "p1Steps": 15, "p2Min": 0.15, "p2Max": 0.44999999999999996, "p2Steps": 11, "parameterOne": {"compID": 4, "name": "beta", "expression": "0.0083", "annotation": "Rate at which a Susceptible species becomes infected\n"}, "parameterTwo": {"compID": 5, "name": "gamma", "expression": "0.3", "annotation": "Rate at which an Infected species recovers from the infection.\n\n"}, "speciesOfInterest": {"compID": 2, "name": "Infected", "value": 1, "mode": "discrete", "switchTol": 0.03, "switchMin": 100, "isSwitchTol": true, "annotation": "Initial population of a species that are infected\n", "diffusionCoeff": 0, "subdomains": ["subdomain 1:", "subdomain 2:"]}}, "resultsSettings": {"mapper": "final", "reducer": "avg", "outputs": []}}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/COMPLETE b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/COMPLETE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/RUNNING b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/RUNNING
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/SIR Epidemic Model.mdl b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/SIR Epidemic Model.mdl
new file mode 100644
index 0000000000..51a3fd2585
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/SIR Epidemic Model.mdl
@@ -0,0 +1 @@
+{"is_spatial":false,"defaultID":8,"defaultMode":"discrete","annotation":"Susceptible, Infected, Recovered epidemiology (SIR) Model.\n","modelSettings":{"endSim":20,"timeStep":0.05,"volume":1},"meshSettings":{"count":2},"species":[{"compID":1,"name":"Susceptible","value":999,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are\n susceptible to infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]},{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]},{"compID":3,"name":"Recovered","value":0,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that have recovered from infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}],"initialConditions":[],"parameters":[{"compID":4,"name":"beta","expression":"0.0083","annotation":"Rate at which a Susceptible species becomes infected\n"},{"compID":5,"name":"gamma","expression":"0.3","annotation":"Rate at which an Infected species recovers from the infection.\n\n"}],"reactions":[{"compID":6,"name":"r1","reactionType":"custom-massaction","summary":"Susceptible+Infected \\rightarrow 2Infected","massaction":true,"propensity":"","annotation":"","subdomains":["subdomain 1:","subdomain 2:"],"rate":{"compID":4,"name":"beta","expression":"8.3","annotation":""},"reactants":[{"ratio":1,"specie":{"compID":1,"name":"Susceptible","value":999,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are\n susceptible to infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}},{"ratio":1,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}],"products":[{"ratio":2,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}]},{"compID":7,"name":"r2","reactionType":"change","summary":"Infected \\rightarrow Recovered","massaction":false,"propensity":"","annotation":"","subdomains":["subdomain 1:","subdomain 2:"],"rate":{"compID":5,"name":"gamma","expression":"0.3","annotation":""},"reactants":[{"ratio":1,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}],"products":[{"ratio":1,"specie":{"compID":3,"name":"Recovered","value":0,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that have recovered from infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}]}],"rules":[],"eventsCollection":[],"functionDefinitions":[]}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/info.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/info.json
new file mode 100644
index 0000000000..17a1f7280d
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/info.json
@@ -0,0 +1 @@
+{"source_model": "Examples/Example SIR Epidemic Project.proj/SIR Epidemic Model.mdl", "wkfl_model": "Examples/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/SIR Epidemic Model.mdl", "type": "parameterSweep", "start_time": "Aug 27, 2020 08:34 PM UTC"}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/logs.txt b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/logs.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/plots.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/plots.json
new file mode 100644
index 0000000000..a9043ba224
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/plots.json
@@ -0,0 +1 @@
+{"Infected-min-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-min-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-min-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.95, 1.0, 1.0, 0.95, 1.0, 0.9, 0.8, 0.85, 0.9, 0.65, 0.3, 0.25, 0.25, 0.05, 0.05], [1.0, 1.0, 0.9, 1.0, 1.0, 0.95, 1.0, 0.95, 0.9, 0.75, 0.4, 0.45, 0.2, 0.1, 0.15], [1.0, 1.0, 0.9, 1.0, 1.0, 0.9, 0.95, 0.95, 0.75, 0.6, 0.55, 0.3, 0.2, 0.15, 0.0], [1.0, 1.0, 1.0, 0.95, 0.9, 0.9, 0.9, 0.9, 0.75, 0.7, 0.75, 0.45, 0.45, 0.25, 0.1], [1.0, 0.95, 1.0, 1.0, 1.0, 1.0, 1.0, 0.95, 0.85, 0.8, 0.75, 0.45, 0.4, 0.1, 0.0], [1.0, 1.0, 0.95, 0.95, 0.9, 0.9, 0.95, 1.0, 0.85, 0.8, 0.55, 0.4, 0.2, 0.1, 0.0], [0.95, 1.0, 1.0, 1.0, 0.9, 0.95, 0.9, 0.9, 0.9, 0.65, 0.6, 0.35, 0.2, 0.15, 0.1], [1.0, 1.0, 1.0, 1.0, 0.95, 0.95, 1.0, 0.9, 0.9, 0.7, 0.45, 0.2, 0.05, 0.05, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9, 0.9, 0.7, 0.55, 0.3, 0.15, 0.15, 0.1], [0.9, 1.0, 0.95, 1.0, 1.0, 1.0, 0.95, 0.95, 0.75, 0.75, 0.55, 0.3, 0.15, 0.15, 0.05], [1.0, 1.0, 1.0, 0.95, 1.0, 1.0, 1.0, 1.0, 0.75, 0.55, 0.45, 0.2, 0.15, 0.05, 0.05], [1.0, 0.95, 1.0, 1.0, 1.0, 0.95, 0.95, 1.0, 0.9, 0.75, 0.5, 0.35, 0.3, 0.15, 0.15], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.95, 0.95, 0.85, 0.65, 0.6, 0.2, 0.05, 0.05, 0.0], [1.0, 1.0, 1.0, 0.95, 1.0, 1.0, 0.95, 0.95, 0.8, 0.65, 0.6, 0.15, 0.25, 0.15, 0.05], [1.0, 1.0, 1.0, 0.95, 0.95, 1.0, 0.95, 0.9, 0.9, 0.8, 0.25, 0.2, 0.25, 0.15, 0.05]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-min-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.047500000000000014, 0.0, 0.0, 0.047500000000000014, 0.0, 0.09000000000000001, 0.16000000000000003, 0.1275, 0.09, 0.22749999999999998, 0.20999999999999996, 0.1875, 0.1875, 0.0475, 0.04749999999999999], [0.0, 0.0, 0.09000000000000001, 0.0, 0.0, 0.047500000000000014, 0.0, 0.047500000000000014, 0.09000000000000001, 0.1875, 0.24000000000000005, 0.24749999999999997, 0.16000000000000006, 0.09000000000000001, 0.1275], [0.0, 0.0, 0.09000000000000001, 0.0, 0.0, 0.09000000000000001, 0.047500000000000014, 0.047500000000000014, 0.1875, 0.24000000000000005, 0.2475, 0.20999999999999996, 0.16000000000000006, 0.1275, 0.0], [0.0, 0.0, 0.0, 0.047500000000000014, 0.09000000000000001, 0.09000000000000001, 0.09, 0.09000000000000001, 0.1875, 0.20999999999999996, 0.1875, 0.24750000000000005, 0.24750000000000005, 0.1875, 0.09000000000000001], [0.0, 0.04750000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.047500000000000014, 0.1275, 0.16000000000000003, 0.1875, 0.24750000000000005, 0.24000000000000005, 0.09000000000000001, 0.0], [0.0, 0.0, 0.04750000000000001, 0.047500000000000014, 0.09, 0.09000000000000001, 0.047500000000000014, 0.0, 0.1275, 0.16000000000000003, 0.24749999999999997, 0.24000000000000005, 0.16000000000000006, 0.09000000000000001, 0.0], [0.047500000000000014, 0.0, 0.0, 0.0, 0.09, 0.04750000000000001, 0.09, 0.09000000000000001, 0.09000000000000001, 0.22749999999999995, 0.24000000000000005, 0.22749999999999998, 0.16000000000000003, 0.1275, 0.09000000000000001], [0.0, 0.0, 0.0, 0.0, 0.047500000000000014, 0.047500000000000014, 0.0, 0.09000000000000001, 0.09000000000000001, 0.20999999999999996, 0.2475, 0.16000000000000003, 0.04749999999999999, 0.04749999999999999, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.09000000000000001, 0.09000000000000001, 0.20999999999999996, 0.24749999999999997, 0.20999999999999996, 0.1275, 0.1275, 0.09000000000000001], [0.09000000000000001, 0.0, 0.047500000000000014, 0.0, 0.0, 0.0, 0.047500000000000014, 0.047500000000000014, 0.1875, 0.1875, 0.24749999999999997, 0.20999999999999996, 0.1275, 0.1275, 0.04749999999999999], [0.0, 0.0, 0.0, 0.047500000000000014, 0.0, 0.0, 0.0, 0.0, 0.1875, 0.24749999999999997, 0.2475, 0.16000000000000003, 0.1275, 0.04749999999999999, 0.04749999999999999], [0.0, 0.04750000000000001, 0.0, 0.0, 0.0, 0.04750000000000001, 0.047500000000000014, 0.0, 0.09000000000000001, 0.1875, 0.25, 0.22749999999999995, 0.20999999999999996, 0.1275, 0.1275], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.047500000000000014, 0.047500000000000014, 0.1275, 0.22750000000000004, 0.24000000000000005, 0.16000000000000006, 0.04749999999999999, 0.04749999999999999, 0.0], [0.0, 0.0, 0.0, 0.047500000000000014, 0.0, 0.0, 0.047500000000000014, 0.047500000000000014, 0.16000000000000003, 0.22750000000000004, 0.24000000000000005, 0.1275, 0.1875, 0.1275, 0.0475], [0.0, 0.0, 0.0, 0.0475, 0.047500000000000014, 0.0, 0.047500000000000014, 0.09000000000000001, 0.09000000000000001, 0.16000000000000003, 0.1875, 0.16000000000000006, 0.1875, 0.1275, 0.0475]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-max-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[1.0, 840.0, 813.0, 1.0, 766.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [885.0, 849.0, 1.0, 806.0, 780.0, 1.0, 747.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 628.0], [881.0, 854.0, 1.0, 814.0, 793.0, 1.0, 1.0, 749.0, 1.0, 1.0, 1.0, 683.0, 1.0, 1.0, 1.0], [902.0, 885.0, 856.0, 1.0, 1.0, 1.0, 1.0, 1.0, 751.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [902.0, 1.0, 878.0, 851.0, 834.0, 821.0, 803.0, 785.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [920.0, 897.0, 1.0, 1.0, 1.0, 1.0, 1.0, 805.0, 1.0, 789.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 901.0, 876.0, 869.0, 1.0, 1.0, 1.0, 807.0, 792.0, 782.0, 773.0, 1.0, 755.0, 745.0, 732.0], [918.0, 904.0, 883.0, 874.0, 1.0, 1.0, 806.0, 798.0, 1.0, 783.0, 779.0, 1.0, 1.0, 1.0, 1.0], [923.0, 900.0, 885.0, 874.0, 850.0, 831.0, 823.0, 808.0, 800.0, 791.0, 801.0, 793.0, 781.0, 1.0, 1.0], [1.0, 907.0, 1.0, 892.0, 881.0, 864.0, 1.0, 1.0, 1.0, 1.0, 809.0, 801.0, 794.0, 783.0, 767.0], [937.0, 919.0, 908.0, 1.0, 888.0, 874.0, 867.0, 848.0, 1.0, 1.0, 1.0, 802.0, 796.0, 786.0, 777.0], [939.0, 1.0, 912.0, 903.0, 883.0, 1.0, 1.0, 858.0, 848.0, 844.0, 835.0, 825.0, 814.0, 804.0, 794.0], [938.0, 915.0, 910.0, 903.0, 886.0, 878.0, 1.0, 1.0, 845.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [944.0, 926.0, 916.0, 1.0, 885.0, 874.0, 1.0, 1.0, 852.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [949.0, 933.0, 919.0, 1.0, 1.0, 894.0, 890.0, 875.0, 868.0, 857.0, 1.0, 1.0, 1.0, 1.0, 1.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-max-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[910.0, 883.0, 865.0, 840.0, 817.0, 802.0, 782.0, 766.0, 746.0, 728.0, 712.0, 697.0, 688.0, 673.0, 652.0], [915.0, 895.0, 868.0, 854.0, 841.0, 830.0, 810.0, 790.0, 775.0, 755.0, 743.0, 730.0, 712.0, 703.0, 686.0], [921.0, 901.0, 886.0, 871.0, 857.0, 830.0, 810.0, 797.0, 780.0, 767.0, 755.0, 739.0, 722.0, 711.0, 694.0], [938.0, 913.0, 894.0, 875.0, 867.0, 849.0, 831.0, 820.0, 806.0, 807.0, 784.0, 773.0, 765.0, 752.0, 737.0], [937.0, 921.0, 904.0, 899.0, 882.0, 863.0, 853.0, 841.0, 830.0, 821.0, 807.0, 798.0, 781.0, 772.0, 756.0], [941.0, 923.0, 906.0, 898.0, 886.0, 868.0, 865.0, 858.0, 838.0, 824.0, 813.0, 803.0, 794.0, 786.0, 776.0], [943.0, 930.0, 931.0, 908.0, 898.0, 875.0, 862.0, 855.0, 843.0, 837.0, 828.0, 819.0, 810.0, 800.0, 789.0], [946.0, 938.0, 936.0, 911.0, 901.0, 881.0, 881.0, 873.0, 862.0, 851.0, 842.0, 826.0, 819.0, 815.0, 805.0], [954.0, 941.0, 933.0, 925.0, 917.0, 899.0, 886.0, 877.0, 869.0, 861.0, 845.0, 838.0, 827.0, 821.0, 810.0], [955.0, 940.0, 929.0, 916.0, 910.0, 897.0, 888.0, 883.0, 875.0, 861.0, 853.0, 845.0, 839.0, 829.0, 822.0], [958.0, 948.0, 937.0, 934.0, 926.0, 905.0, 895.0, 881.0, 874.0, 869.0, 858.0, 851.0, 848.0, 836.0, 825.0], [963.0, 951.0, 940.0, 933.0, 918.0, 913.0, 899.0, 895.0, 887.0, 879.0, 866.0, 860.0, 849.0, 846.0, 839.0], [964.0, 962.0, 952.0, 938.0, 925.0, 918.0, 903.0, 904.0, 891.0, 890.0, 884.0, 873.0, 866.0, 857.0, 847.0], [966.0, 952.0, 942.0, 935.0, 926.0, 923.0, 917.0, 909.0, 898.0, 892.0, 883.0, 879.0, 859.0, 856.0, 856.0], [968.0, 960.0, 946.0, 946.0, 934.0, 927.0, 918.0, 908.0, 902.0, 887.0, 882.0, 873.0, 865.0, 858.0, 854.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-max-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[843.8, 861.45, 839.15, 775.2, 791.1, 694.85, 602.35, 624.8, 684.05, 667.45, 651.5, 601.45, 621.7, 540.1, 496.35], [900.4, 876.3, 768.9, 833.25, 814.05, 754.15, 774.0, 720.6, 703.85, 652.8, 569.35, 626.55, 647.8, 635.1, 654.3], [903.4, 885.95, 782.75, 849.0, 832.6, 731.15, 754.25, 777.75, 724.15, 675.1, 698.15, 719.45, 669.6, 656.5, 642.75], [916.45, 896.7, 877.15, 817.95, 761.6, 745.6, 731.2, 756.4, 783.15, 698.35, 686.3, 673.95, 663.6, 651.85, 570.5], [922.8, 862.4, 891.25, 877.85, 862.25, 845.35, 831.7, 817.25, 724.55, 752.9, 703.35, 691.3, 680.45, 670.35, 658.25], [931.4, 910.95, 850.55, 836.05, 781.45, 766.35, 798.85, 827.65, 776.1, 806.1, 753.5, 703.55, 694.6, 685.6, 674.85], [886.5, 915.6, 903.5, 886.3, 782.9, 814.4, 758.35, 830.7, 819.0, 808.55, 797.05, 748.65, 776.45, 767.4, 756.25], [934.1, 923.75, 907.85, 892.15, 835.05, 823.75, 858.35, 847.25, 794.55, 826.15, 814.55, 765.75, 755.95, 745.8, 736.9], [941.45, 925.6, 912.3, 902.0, 891.6, 878.5, 867.4, 855.65, 845.15, 834.4, 823.05, 813.85, 805.2, 756.4, 747.45], [848.35, 929.5, 872.5, 905.2, 895.0, 882.7, 828.7, 818.75, 809.8, 798.7, 832.8, 823.95, 813.65, 804.95, 794.8], [946.5, 934.3, 923.75, 866.25, 900.95, 888.25, 878.7, 867.2, 814.95, 807.5, 798.6, 830.85, 823.3, 812.9, 803.45], [949.1, 891.7, 927.15, 915.7, 901.6, 849.75, 840.5, 876.3, 866.5, 859.2, 849.4, 841.85, 833.05, 825.15, 817.1], [951.85, 943.35, 931.6, 918.85, 906.15, 898.75, 845.25, 837.1, 872.1, 777.85, 814.05, 719.85, 713.65, 705.8, 699.45], [955.35, 942.85, 930.9, 874.05, 912.0, 901.6, 850.35, 841.55, 877.75, 782.3, 817.75, 725.45, 760.75, 753.45, 747.35], [958.6, 943.75, 935.5, 878.55, 871.1, 908.85, 901.4, 891.0, 882.15, 874.4, 780.0, 773.6, 766.95, 759.2, 753.15]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-max-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[37480.45999999999, 125.8475, 186.6275, 31697.660000000003, 185.09000000000003, 53719.32749999999, 90726.62749999997, 69001.26000000001, 24889.6475, 23759.5475, 22688.25, 40512.8475, 20760.609999999997, 51738.09, 61739.12749999999], [80.44, 167.61000000000004, 65633.69, 172.0875, 274.9474999999999, 30065.42750000001, 184.9, 27487.739999999998, 26263.9275, 47471.96000000001, 81051.6275, 43797.0475, 22349.56, 21537.29, 329.90999999999997], [90.64, 162.5475, 68000.9875, 194.1, 237.64000000000001, 59347.027500000004, 29987.3875, 152.8875, 27652.7275, 50622.490000000005, 25723.927499999998, 153.9475, 23677.739999999998, 22759.45, 21814.1875], [61.147500000000015, 77.30999999999999, 77.8275, 35207.64750000001, 64387.33999999998, 61643.94, 59372.159999999996, 30167.639999999996, 143.0275, 54221.12749999999, 52471.209999999985, 50582.847499999996, 49073.34, 47343.1275, 81242.95], [91.46, 39105.54, 45.3875, 151.72749999999996, 138.5875, 129.4275, 175.11, 207.4875, 58366.7475, 29967.290000000008, 55056.3275, 53262.409999999996, 51507.7475, 49928.5275, 48133.8875], [34.04, 66.64750000000001, 38050.447499999995, 36763.7475, 67784.5475, 65193.42749999999, 33682.427500000005, 172.5275, 31714.690000000002, 103.28999999999999, 29918.95, 54962.947499999995, 53594.94, 52216.439999999995, 50592.6275], [41314.55, 67.84, 215.15, 111.71000000000004, 68063.79000000001, 34950.34, 63887.2275, 150.61, 158.8, 193.64749999999998, 194.34750000000003, 29631.327500000003, 221.4475, 194.73999999999998, 176.8875], [57.18999999999998, 62.3875, 209.72750000000002, 96.22749999999999, 36748.4475, 35716.9875, 253.62750000000005, 221.7875, 33334.4475, 200.42749999999998, 158.14749999999998, 30949.7875, 30186.247499999998, 29411.460000000003, 28694.79], [58.94750000000001, 107.54, 106.41000000000004, 120.6, 202.23999999999998, 196.45, 192.33999999999997, 201.1275, 206.02749999999997, 211.14000000000001, 158.1475, 188.0275, 205.45999999999998, 30237.440000000002, 29499.847500000003], [79827.3275, 59.75, 40011.55, 56.459999999999994, 70.5, 112.71000000000001, 36144.81, 35347.7875, 34569.96000000001, 33628.31, 137.85999999999999, 164.6475, 187.32750000000001, 203.64749999999998, 170.56], [35.25, 54.90999999999999, 73.2875, 39489.8875, 69.44750000000002, 69.4875, 78.50999999999999, 75.25999999999999, 34953.747500000005, 34320.55, 33586.64, 127.32750000000001, 168.11, 144.59, 144.04749999999996], [41.989999999999995, 41795.61, 64.3275, 75.00999999999999, 90.04, 38001.4875, 37176.25, 98.21, 100.85, 102.75999999999999, 97.44000000000001, 122.62749999999997, 117.14750000000001, 130.7275, 118.39000000000001], [47.32750000000001, 104.12749999999998, 101.54, 82.22749999999999, 100.1275, 78.4875, 37596.4875, 36970.39000000001, 181.59, 67260.92749999999, 35035.447499999995, 91392.6275, 89856.0275, 87866.85999999999, 86269.8475], [34.82750000000001, 49.02750000000001, 40.69, 40161.847499999996, 117.1, 148.14000000000001, 38097.22749999999, 37331.847499999996, 155.3875, 67995.61, 35302.5875, 92809.84750000002, 64202.2875, 63003.1475, 62004.92749999999], [20.74, 38.4875, 56.85, 40640.0475, 39889.189999999995, 68.12750000000001, 65.34, 79.4, 65.3275, 53.94, 67484.1, 66391.24, 65246.7475, 63947.06, 62945.727500000015]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-avg-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.007481296758104738, 332.0224438902743, 285.9850374064838, 0.02743142144638404, 214.54862842892769, 0.0024937655860349127, 0.004987531172069825, 0.004987531172069825, 0.0024937655860349127, 0.0024937655860349127, 0.012468827930174564, 0.012468827930174564, 0.004987531172069825, 0.0024937655860349127, 0.004987531172069825], [401.78304239401496, 327.9725685785536, 0.0024937655860349127, 249.49625935162095, 220.0149625935162, 0.012468827930174564, 174.0773067331671, 0.014962593516209476, 0.004987531172069825, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127, 95.19950124688279], [397.5660847880299, 327.26932668329175, 0.0024937655860349127, 249.87281795511223, 218.10473815461347, 0.0024937655860349127, 0.004987531172069825, 152.76807980049875, 0.007481296758104738, 0.004987531172069825, 0.0199501246882793, 110.50623441396509, 0.00997506234413965, 0.00997506234413965, 0.00997506234413965], [398.1271820448878, 330.81795511221947, 281.44638403990024, 0.017456359102244388, 0.004987531172069825, 0.0024937655860349127, 0.0024937655860349127, 0.00997506234413965, 139.86783042394015, 0.00997506234413965, 0.004987531172069825, 0.004987531172069825, 0.004987531172069825, 0.004987531172069825, 0.0024937655860349127], [407.25187032418955, 0.0199501246882793, 283.4364089775561, 247.15461346633415, 216.90274314214463, 191.5561097256858, 173.83790523690774, 156.86783042394015, 0.004987531172069825, 0.00997506234413965, 0.004987531172069825, 0.004987531172069825, 0.004987531172069825, 0.004987531172069825, 0.004987531172069825], [416.785536159601, 341.77556109725685, 0.004987531172069825, 0.007481296758104738, 0.0024937655860349127, 0.0024937655860349127, 0.004987531172069825, 154.69326683291771, 0.004987531172069825, 132.0997506234414, 0.007481296758104738, 0.004987531172069825, 0.004987531172069825, 0.004987531172069825, 0.004987531172069825], [0.00997506234413965, 340.713216957606, 281.52369077306736, 241.87281795511223, 0.0024937655860349127, 0.004987531172069825, 0.0024937655860349127, 154.76807980049875, 141.10473815461347, 130.3142144638404, 120.84039900249377, 0.007481296758104738, 104.06982543640898, 97.56109725685785, 92.18453865336659], [401.8703241895262, 337.43142144638404, 282.1720698254364, 242.77306733167083, 0.004987531172069825, 0.014962593516209476, 164.0, 149.41895261845386, 0.0024937655860349127, 126.16708229426433, 117.14463840399003, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127], [395.85536159600997, 324.1221945137157, 274.94513715710724, 237.60349127182045, 207.55361596009976, 183.8204488778055, 164.73067331670822, 148.99750623441398, 136.76309226932668, 125.82543640897755, 124.77306733167082, 115.34413965087282, 107.86783042394015, 0.0024937655860349127, 0.0024937655860349127], [0.0024937655860349127, 337.76059850374065, 0.014962593516209476, 246.79052369077306, 218.9002493765586, 196.84788029925187, 0.0024937655860349127, 0.014962593516209476, 0.004987531172069825, 0.0024937655860349127, 124.79551122194513, 116.18703241895261, 107.84039900249377, 101.17955112219451, 93.11970074812967], [402.46134663341644, 335.501246882793, 282.5586034912718, 0.0024937655860349127, 213.6059850374065, 188.8204488778055, 171.286783042394, 154.7356608478803, 0.004987531172069825, 0.0024937655860349127, 0.0024937655860349127, 112.03241895261846, 104.9925187032419, 98.54364089775561, 92.93516209476309], [402.34164588528677, 0.017456359102244388, 282.28179551122196, 248.58354114713217, 216.0224438902743, 0.007481296758104738, 0.004987531172069825, 156.60349127182045, 143.07481296758104, 131.5635910224439, 122.1072319201995, 113.96009975062344, 106.23192019950125, 99.95261845386534, 94.25436408977556], [406.07730673316706, 337.28179551122196, 285.6633416458853, 248.12468827930175, 217.5436408977556, 192.0573566084788, 0.004987531172069825, 0.004987531172069825, 143.63341645885288, 0.007481296758104738, 0.004987531172069825, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127], [416.50374064837905, 333.66084788029923, 291.15960099750623, 0.004987531172069825, 221.38154613466335, 192.4214463840399, 0.004987531172069825, 0.004987531172069825, 143.4788029925187, 0.007481296758104738, 0.004987531172069825, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127], [415.0299251870324, 335.90274314214463, 288.6334164588529, 0.0024937655860349127, 0.0024937655860349127, 196.83042394014961, 176.69576059850374, 159.30174563591024, 145.60099750623442, 133.9152119700748, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127, 0.0024937655860349127]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-avg-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[439.97506234413964, 369.24688279301745, 315.33915211970077, 274.4638403990025, 239.96758104738154, 213.17456359102243, 190.87032418952617, 173.88778054862843, 159.1720698254364, 146.02493765586036, 135.35411471321694, 125.99002493765586, 118.9925187032419, 111.71820448877806, 105.04738154613466], [443.55610972568576, 365.3690773067332, 311.74563591022445, 270.211970074813, 239.2942643391521, 216.03990024937656, 194.01246882793018, 177.2069825436409, 162.4139650872818, 149.85785536159602, 138.64837905236908, 129.8054862842893, 120.87531172069825, 114.28927680798004, 108.20199501246883], [438.3142144638404, 370.18952618453864, 310.70324189526184, 270.05486284289276, 239.66583541147133, 211.1845386533666, 190.58104738154614, 172.67082294264338, 156.8229426433915, 144.8229426433915, 134.89526184538653, 125.31172069825436, 117.02992518703242, 109.87032418952619, 103.93266832917706], [434.46134663341644, 370.8628428927681, 314.3915211970075, 270.58354114713217, 238.46882793017457, 210.83291770573567, 189.9351620947631, 172.20947630922694, 157.8927680798005, 145.41147132169576, 134.11970074812967, 124.34164588528678, 116.67581047381546, 109.90274314214464, 103.88528678304239], [432.55610972568576, 360.99002493765585, 321.1546134663342, 274.9850374064838, 235.67581047381546, 210.87531172069825, 190.92768079800499, 172.39900249376558, 157.89526184538653, 145.2793017456359, 134.91271820448878, 125.6932668329177, 117.08977556109726, 110.50623441396509, 104.30423940149626], [443.25436408977555, 378.66583541147133, 319.1147132169576, 276.9700748129676, 243.54613466334163, 216.33167082294264, 192.5561097256858, 174.19700748129677, 159.66334164588528, 146.70074812967582, 135.58104738154614, 126.22693266832918, 118.33915211970074, 111.47381546134663, 104.44638403990025], [446.286783042394, 380.5860349127182, 322.4339152119701, 271.1371571072319, 237.8503740648379, 212.27431421446383, 190.92768079800499, 173.8354114713217, 158.66334164588528, 146.30423940149626, 136.32668329177056, 126.29675810473816, 118.08977556109726, 111.36159600997506, 105.21945137157107], [443.91521197007484, 379.42394014962593, 321.9625935162095, 272.00249376558605, 237.5137157107232, 211.81795511221947, 190.86284289276807, 173.7581047381546, 160.1845386533666, 147.2568578553616, 137.5361596009975, 127.6857855361596, 119.03740648379052, 111.16458852867831, 104.54613466334165], [440.1496259351621, 372.5436408977556, 313.54613466334166, 271.7705735660848, 239.49875311720697, 212.01745635910225, 191.83042394014961, 173.99501246882792, 160.1945137157107, 147.69326683291771, 135.6359102244389, 126.46633416458853, 118.34912718204488, 111.68079800498754, 105.24688279301746], [446.9426433915212, 375.3241895261845, 313.15211970074813, 275.49625935162095, 243.69825436408976, 215.5211970074813, 192.93765586034914, 173.90523690773068, 159.77805486284288, 145.54862842892769, 135.0498753117207, 126.29925187032418, 118.38902743142144, 111.19451371571073, 103.65087281795512], [445.4139650872818, 369.27431421446386, 319.93266832917703, 279.1695760598504, 236.94763092269326, 210.00249376558602, 189.3790523690773, 172.03491271820448, 158.20947630922694, 144.38154613466335, 133.69825436408976, 124.15960099750623, 116.26932668329177, 109.12718204488777, 103.01246882793018], [446.6184538653367, 370.1496259351621, 319.2942643391521, 277.6758104738155, 240.643391521197, 214.069825436409, 190.9850374064838, 173.59850374064837, 158.92518703241896, 146.52618453865335, 135.21695760598504, 126.22443890274315, 117.66583541147132, 110.93017456359102, 104.63092269326684], [447.0374064837905, 371.25935162094765, 319.43142144638404, 277.40149625935163, 240.68329177057356, 213.28927680798006, 190.8778054862843, 181.28428927680798, 165.95261845386534, 153.02992518703243, 142.73067331670822, 132.0997506234414, 124.02493765586036, 116.28927680798004, 109.50872817955113], [446.39401496259353, 378.1097256857855, 327.6483790523691, 284.6982543640898, 251.29177057356608, 222.5436408977556, 200.02493765586036, 181.2418952618454, 165.50623441396507, 152.39900249376558, 142.13715710723193, 132.54114713216958, 119.43391521197007, 112.70573566084788, 106.06234413965088], [438.85536159600997, 367.1695760598504, 310.5436408977556, 273.90773067331673, 237.32418952618454, 212.53865336658353, 193.32418952618454, 174.7206982543641, 159.65336658354116, 147.78304239401496, 136.9152119700748, 127.00498753117208, 119.12967581047381, 112.2568578553616, 105.9501246882793]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-avg-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[397.97531172069824, 347.8072319201995, 297.54463840399, 246.55498753117203, 227.78379052369078, 182.47955112219452, 146.02867830423943, 140.930174563591, 144.46433915211975, 132.7056109725686, 122.91882793017456, 108.22269326683292, 107.19189526184539, 89.86683291770572, 79.61271820448877], [421.34189526184537, 347.67755610972563, 267.8077306733167, 258.72269326683295, 227.89139650872818, 191.5511221945137, 180.39177057356608, 156.11932668329177, 142.98990024937652, 124.86558603491274, 103.00972568578554, 107.75985037406485, 106.32680798004988, 99.9007481296758, 98.96022443890276], [417.06234413965086, 347.5952618453865, 268.98516209476304, 259.2856608478803, 228.13179551122192, 181.53566084788028, 171.78815461346636, 163.4721945137157, 142.07481296758104, 124.32306733167084, 121.50311720698255, 118.93441396508729, 105.66970074812969, 99.25847880299254, 93.59451371571073], [420.6514962593516, 353.3514962593516, 300.1488778054863, 246.22107231920194, 204.26084788029928, 181.74077306733165, 163.08640897755612, 155.48827930174562, 149.64451371571073, 124.66122194513716, 115.44912718204486, 107.49987531172071, 100.671072319202, 94.54950124688278, 79.10124688279302], [421.073566084788, 333.67518703241893, 301.32680798004986, 260.57369077306737, 227.83129675810474, 201.81995012468826, 181.4761845386534, 164.68354114713216, 135.33453865336656, 131.9577306733167, 115.634289276808, 107.55536159600997, 100.57082294264339, 95.29862842892767, 89.72992518703242], [426.4052369077307, 356.00511221945135, 285.31246882793016, 246.63628428927677, 204.59937655860352, 182.34788029925187, 173.29164588528678, 165.10124688279302, 143.74663341645888, 139.24301745635913, 122.68042394014961, 108.14002493765585, 101.25311720698252, 95.21583541147133, 89.8422693266833], [405.39401496259353, 355.9620947630923, 299.443391521197, 257.74551122194515, 202.64800498753118, 191.2805486284289, 162.13728179551123, 163.4941396508728, 149.2620947630923, 137.62418952618455, 127.48890274314218, 113.20461346633417, 111.18366583541146, 104.5869077306733, 98.59663341645886], [421.74127182044896, 354.73129675810475, 299.3677057356609, 257.6547381546135, 214.50511221945135, 191.48753117206985, 182.05399002493766, 165.53291770573566, 143.56508728179548, 139.08952618453864, 128.86957605985037, 114.10985037406485, 106.63852867830424, 100.1932668329177, 94.56620947630923], [423.9576059850375, 352.6266832917705, 299.3987531172069, 260.1770573566085, 228.55860349127178, 203.06184538653366, 182.35211970074815, 165.40586034912718, 151.33790523690774, 139.17917705735664, 129.49139650872817, 120.64189526184539, 112.97967581047381, 100.8423940149626, 95.02381546134663], [382.67244389027434, 355.02581047381545, 286.77730673316705, 261.25810473815466, 230.04451371571076, 204.4261845386534, 174.30660847880299, 157.91733167082293, 144.45087281795514, 132.78316708229426, 129.52406483790523, 120.61920199501246, 112.88441396508726, 106.10511221945137, 98.43229426433916], [425.68004987531174, 353.1384039900249, 301.718578553616, 246.47443890274317, 227.13790523690778, 201.1725685785536, 180.65012468827928, 163.68229426433916, 142.10324189526182, 131.006608478803, 121.3556109725686, 118.82493765586034, 111.3490024937656, 104.40698254364091, 98.39214463840399], [425.8371571072319, 336.52319201995016, 301.66608478802993, 261.87157107231917, 229.07955112219452, 192.74376558603495, 172.65486284289275, 164.85548628428927, 150.6589775561097, 138.7925187032419, 128.55386533665836, 119.75361596009972, 112.01932668329175, 105.25, 99.3639650872818], [424.9598503740648, 352.80598503740646, 304.2980049875312, 261.8983790523691, 229.0599750623441, 202.7850374064838, 172.61895261845387, 157.21197007481294, 151.29077306733168, 125.18204488778058, 122.38466334164589, 102.00910224438903, 95.46197007481297, 89.58703241895262, 84.4427680798005], [430.8490024937656, 355.3447630922693, 303.6783042394015, 249.29763092269323, 230.063216957606, 203.24114713216957, 173.40224438902743, 157.1279301745636, 151.38852867830423, 125.19825436408978, 122.29887780548627, 102.11209476309226, 101.28927680798004, 95.11608478802994, 89.69364089775561], [425.8839152119701, 352.51945137157105, 300.8941396508729, 248.3246882793018, 217.4897755610973, 204.24538653366588, 183.71583541147132, 166.2798004987531, 151.91683291770576, 139.8795511221945, 116.24887780548627, 108.24850374064837, 101.31770573566084, 95.16022443890273, 89.67256857855361]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-avg-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[8415.59986747595, 87.6710108146094, 77.02625941380958, 3250.449504340769, 37.50036386589636, 3732.182776910591, 5358.632639411446, 3527.9563808682788, 1116.0444086790508, 943.5611964322363, 808.0430130876051, 1312.5154508367484, 615.7052888197212, 1434.6243097990682, 1592.277609032282], [104.49095459605351, 64.76884975839701, 8009.009006722596, 36.62905056560599, 31.478360504598875, 1955.4966374587227, 20.165905000590797, 1300.9373724510422, 1092.298166973464, 1746.0410699560325, 2664.9766549337373, 1301.948770903166, 605.3201090011877, 535.1538172026293, 9.167550248443735], [116.18358592297314, 84.15541762799981, 8071.317260138307, 34.57815528199448, 33.088856583603345, 3699.302243518386, 1586.865236829995, 27.816407407292257, 1085.5972120820145, 1737.044676012587, 795.7434803732564, 16.222201416657846, 601.2966452167586, 530.9758945995361, 472.0908118730605], [100.32251284195993, 131.04013002095752, 71.65690704659809, 3247.142070183021, 4683.830562869634, 3706.4479502459567, 2987.0352045540762, 1298.2992889347702, 21.98172677719666, 1738.9536839167667, 1490.9416812706388, 1291.2810420799622, 1132.5200582707816, 999.1333071778163, 1567.8553363474107], [37.38230452546928, 5880.715367985895, 73.87257447092998, 43.968488053556925, 28.02983891580279, 25.484343132194418, 22.806457344792623, 20.089349506532905, 2049.9381666003314, 930.2472786083417, 1496.257800806587, 1294.587535587465, 1131.0614914708242, 1014.3784944589897, 899.6272766338518], [45.78980883203458, 79.5762398710207, 4335.024037226138, 3257.4668361981576, 4684.916366362771, 3720.0442854832995, 1602.5277246254686, 23.476243555699263, 1103.6888827805794, 12.652169125192017, 802.2729984732682, 1306.2914647763384, 1145.5372171192962, 1012.895480423007, 901.3897636675144], [8705.773139470526, 96.70303953333618, 113.3204542260308, 68.90708420656588, 4610.775291369458, 1969.2298029862995, 2949.7131954869683, 34.80065999278612, 27.70530898439685, 23.76179258835457, 22.1200685785536, 691.0037017649145, 17.31515306185907, 15.808075369556173, 14.109638543914519], [97.4384362503965, 101.92317515127397, 108.10741878159965, 68.31734906810289, 2471.128582829087, 1971.9228117362459, 41.69988512198306, 34.957857289444725, 1114.1218682719636, 24.37405482552971, 19.93283754454263, 701.9013740430719, 612.5598065155067, 540.2633742949358, 480.8167004402958], [144.1413834491079, 128.2417609965113, 89.91515904751844, 82.64492633752282, 64.98875131373555, 53.44750691848931, 41.19388536140943, 35.876975811717564, 31.742786736400888, 25.47940763739033, 9.505493420438928, 8.404899472018208, 7.000402531700674, 541.7715558982842, 481.0900861779466], [16398.218409882404, 98.04062305271722, 4378.632055832986, 45.10769118351257, 36.54794949969214, 28.75697781730214, 1618.417646329936, 1325.2535962307452, 1110.4297184719, 936.9016781456583, 8.82150687806669, 7.9986866375209145, 7.397141979838429, 6.261193820312068, 9.014262520133585], [100.47584598354484, 84.0292370694212, 81.65990527111138, 3276.4295065795613, 40.961189980161784, 33.71890883763156, 27.301697190937894, 27.000597259967265, 1086.0074516949521, 922.1475527359905, 791.4237954987841, 13.70246553193077, 11.809360933700654, 10.017007108164746, 9.468421760436826], [101.08451135254141, 6035.29598485084, 80.98564679324126, 53.78256571787491, 42.201270452298225, 1988.4221434412725, 1602.6388376937953, 31.123618307721966, 25.33150034825656, 20.440582832196313, 16.76340439425127, 14.766815256124039, 12.417303297243183, 11.22158187760025, 9.763841938172028], [103.58644840517158, 71.07716531613612, 60.75052300669771, 55.10421320451983, 40.49257869975931, 32.899723633559496, 1601.5038622894133, 1328.1710636127884, 25.94353480388803, 1762.253916953253, 807.6465599560946, 1851.7358967139505, 1622.2055210322076, 1428.2498133718077, 1268.6139230943834], [92.10516257672525, 90.50575548348581, 84.47960087312892, 3330.434241251609, 53.56883867326697, 45.90330663366522, 1618.1745226086898, 1327.5652533877278, 24.919446769609614, 1761.6423402217647, 806.2147034377895, 1856.0568488224574, 1146.6508404798476, 1011.5965115111223, 899.7184366235282], [45.74707276385099, 51.32395327143497, 32.3709401527354, 3274.6911011747443, 2502.3330609884265, 18.250340731711866, 21.53421028165247, 18.156252510867468, 15.242105008675319, 13.655625338150898, 1510.6871155030128, 1309.2350839080605, 1147.0186618242424, 1012.2689640456214, 898.9148314376152]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-var-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.007425326956921909, 53658.37405240018, 52097.88488877557, 0.0266789385638149, 48876.372323555195, 0.0024875467192368205, 0.004962655704877454, 0.004962655704877454, 0.0024875467192368205, 0.0024875467192368205, 0.012313356260222267, 0.012313356260222267, 0.004962655704877454, 0.0024875467192368205, 0.004962655704877454], [51386.15208860642, 54015.83884428579, 0.0024875467192368205, 54016.43427590624, 50128.3865771979, 0.012313356260222267, 44680.31196323407, 0.014738714311478166, 0.004962655704877454, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205, 26930.487422341903], [52055.00850119092, 55270.7052194949, 0.0024875467192368205, 54616.293194694066, 51664.96938451875, 0.0024875467192368205, 0.004962655704877454, 42425.96577135714, 0.007425326956921909, 0.004962655704877454, 0.019552117213201412, 32929.14744311292, 0.009875560475370181, 0.009875560475370181, 0.009875560475370181], [51618.51183761296, 56785.74292448431, 55506.242075608985, 0.01715163462913787, 0.004962655704877454, 0.0024875467192368205, 0.0024875467192368205, 0.009875560475370181, 40789.06097598895, 0.009875560475370181, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.0024875467192368205], [50802.88531787738, 0.019552117213201412, 57482.24518504239, 55917.309444593004, 54063.21938296404, 50686.834074414954, 48211.466209787264, 44682.1196883104, 0.004962655704877454, 0.009875560475370181, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454], [53575.265390140616, 56738.138742918265, 0.004962655704877454, 0.007425326956921909, 0.0024875467192368205, 0.0024875467192368205, 0.004962655704877454, 45574.04805940261, 0.004962655704877454, 40398.50376552384, 0.007425326956921909, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454], [0.009875560475370181, 56966.5078575382, 58019.02040410196, 56215.755834851756, 0.0024875467192368205, 0.004962655704877454, 0.0024875467192368205, 45250.08922830082, 42534.31358013943, 40091.43195626892, 38168.73518199514, 0.007425326956921909, 34301.915037841805, 32458.663242144008, 30595.972748925695], [52906.22035932612, 57018.4147486645, 58196.78847768359, 57049.03067766992, 0.004962655704877454, 0.014738714311478166, 45816.49875311721, 43682.56762084812, 0.0024875467192368205, 39021.69028799572, 37071.34067574207, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205], [54801.97602004963, 57773.41047630301, 57968.711065229705, 55572.00986312275, 52392.66607794727, 49235.78322274115, 46614.7055180005, 43778.8254301901, 41627.08352559998, 39171.72015099408, 39989.403685300465, 37414.77932351166, 35515.23190776176, 0.0024875467192368205, 0.0024875467192368205], [0.0024875467192368205, 56493.59406968862, 0.014738714311478166, 58333.25684541763, 55132.010472571696, 52910.83413660362, 0.0024875467192368205, 0.014738714311478166, 0.004962655704877454, 0.0024875467192368205, 40464.6265135167, 38206.11443958682, 35765.72515096299, 34024.07748708031, 32397.292628777173], [54341.957052505895, 55170.38610456403, 58922.117362454206, 0.0024875467192368205, 56103.7017555861, 53583.53880883826, 50833.32849920088, 47757.817774765084, 0.004962655704877454, 0.0024875467192368205, 0.0024875467192368205, 38537.886729560145, 36503.13591333388, 34262.762383318506, 32552.70224687657], [53824.79324133557, 0.01715163462913787, 59546.33661482205, 56244.24718751749, 56591.615350650805, 0.007425326956921909, 0.004962655704877454, 48455.711954527644, 45873.595400526116, 43203.24346241628, 40877.75159358462, 38763.90364487783, 36456.74172424301, 34704.49401434071, 32973.506371229036], [52577.00516787831, 57854.18564561166, 59595.67153189346, 56362.64439897762, 56483.88855790698, 53647.903669753294, 0.004962655704877454, 0.004962655704877454, 46119.17195788583, 0.007425326956921909, 0.004962655704877454, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205], [52341.62543765275, 57647.51296322783, 57278.62793141834, 0.004962655704877454, 54538.06333293948, 52866.558429363, 0.004962655704877454, 0.004962655704877454, 46318.2584436664, 0.007425326956921909, 0.004962655704877454, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205], [54461.85949092356, 57725.082903713286, 59244.66335408362, 0.0024875467192368205, 0.0024875467192368205, 54485.43259059335, 52057.70981523747, 48153.188251316846, 45408.02593267454, 42787.27959403238, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205, 0.0024875467192368205]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-var-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[63134.66922469387, 62628.59349133401, 60157.33434493567, 58554.047686270605, 54477.10897320291, 52059.11570201679, 49958.63085428573, 46837.805361906954, 43664.985354568686, 40865.75000155471, 38496.69754541327, 36153.49615984975, 34613.42388417982, 32500.456750890855, 30266.434163966645], [60173.98253742203, 62475.712290346455, 60368.66846599212, 58645.28979297393, 57685.07234407745, 54284.026355557486, 50998.79998258717, 48381.861903843885, 45201.0516601265, 43303.94533616084, 41102.00560941786, 38769.669865237156, 36096.29066983415, 34131.525177082236, 31986.31366720356], [59931.0175682987, 62674.418890429784, 61768.36871661246, 59838.3341521508, 58259.36456862831, 54212.142362298735, 51533.477304245615, 48649.338760331084, 45745.785884416146, 43570.84177337206, 41194.62718515433, 38754.57114072673, 36253.22693266833, 33802.48097959589, 31989.527142244147], [64216.16478753241, 63143.473821680214, 63799.48383405576, 63554.72422435185, 58821.064383927944, 55779.58249015864, 53065.231136622286, 49888.75380128233, 47297.73543696867, 44764.212237486085, 41783.5026896599, 39416.34854260857, 37299.24154700531, 35113.66076081616, 33105.92699050379], [62017.98975130752, 62753.011971318585, 64317.83286173594, 63397.84460295645, 60379.44686911151, 58203.297865063025, 54151.93472677409, 51980.54262100359, 49152.04707682166, 45624.727557664446, 43025.05721979341, 40564.506912270444, 38018.45854192449, 36028.048880293034, 33894.89496955864], [61317.94369438001, 63618.5629815735, 65127.076821661554, 62795.84573479021, 61274.81316658478, 57038.5086784286, 57204.82041778347, 54752.56717308971, 50030.97310340109, 47125.91621942649, 44620.12327037766, 41045.78640680096, 38985.92487608908, 37116.86776823527, 34765.02731948185], [60315.06389885635, 63572.90835255999, 65799.64739025256, 62469.40923252964, 59540.69354046307, 57202.62978464064, 54449.95169184272, 52308.54819310825, 49193.45073724666, 46950.259898881224, 44435.7997151759, 41945.098115061475, 39903.294506874954, 37948.810430283396, 35948.371925547726], [60096.128780293664, 67171.32068830419, 66299.6303381198, 63002.02742520259, 59754.69223450104, 57479.11837612949, 55707.95874403766, 52597.43496620045, 50386.763950472945, 47462.520058954855, 45319.420762308684, 42587.297777998894, 40060.37515935847, 37611.31455650151, 35573.49475438585], [61691.360625866764, 66938.9893222057, 64136.291528037764, 64453.758857221044, 60549.42157076138, 58469.77952873426, 56528.10590730158, 52998.35294556626, 50816.96964571116, 48145.24506688391, 45460.8549698074, 43285.69525065143, 41173.19481844019, 39436.54150160758, 37526.52009626806], [61842.052624050855, 63347.663385177955, 65450.09157903247, 63922.34887842737, 61698.98376253879, 61955.46152076168, 57063.977276260724, 53480.85885038028, 50979.51433137854, 47665.98329612378, 45434.27681419892, 43526.8580792408, 41538.14292199675, 39466.32126665879, 37305.459157592304], [60534.84539275253, 66213.91301049122, 68496.73443573114, 67714.39300750618, 62258.379226497345, 58830.276801761196, 56868.33540836189, 52948.959198014934, 50700.215471296826, 48115.16182113295, 45463.50573690461, 43325.61542527721, 41216.372149426934, 39108.47784528704, 37360.084228331914], [60230.64566762645, 66374.45176335968, 68751.81274992072, 66492.64153829889, 64774.99889926058, 61205.136149650825, 58287.38584959049, 55527.84920491788, 52551.73521308947, 49521.27905920983, 47026.513404767386, 44301.287579057345, 42431.645686283046, 40117.26619859329, 38434.9261260813], [63378.95994427896, 66850.91980771265, 66615.88598329613, 66543.76674274413, 64726.908850069354, 61751.38336204377, 58455.65379568535, 56561.89424195124, 53953.96533603647, 51064.452969819846, 49169.26910902295, 46128.13967574828, 44220.46321851231, 42022.739261571754, 39982.244936287716], [65673.91968955417, 67076.90067847837, 66739.93946555057, 65739.99902985677, 64521.638061952355, 62766.0585692875, 59656.94202150482, 56746.41779590922, 53855.58163195502, 50816.35950025187, 48955.83904328953, 46673.26077574144, 40931.521905958296, 38998.26253568075, 37361.35776518803], [64243.325451956145, 66133.3897799143, 65359.78256354126, 65778.1344643379, 63572.00297261833, 60833.065764516396, 57010.895765573594, 53931.90959011449, 51350.98164812408, 48755.93000043533, 45766.271565475334, 43517.71852165098, 41247.17828869223, 39190.3797613199, 37435.831518460705]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-var-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[53031.13767762638, 57582.95417379246, 56458.619752986604, 51791.29248449948, 51758.08007164135, 43893.181767526316, 36998.698458342915, 37128.23275850275, 39182.11554157002, 36564.43680200994, 34286.59890174812, 30331.5780990168, 30175.554022052103, 25170.77167243985, 22219.880882581576], [56357.218586949086, 57973.35012282262, 52111.272230272196, 55934.565621482456, 53472.492263729706, 47891.144265271985, 47265.93372802409, 42361.197391185386, 39767.5250477298, 35486.12714721924, 29659.161903843884, 31386.731961244026, 31036.380693528034, 29223.010646078073, 29015.427251696197], [56346.9960684324, 58662.27129308898, 53050.4033426409, 56986.08874633864, 54683.05324966884, 46429.56917805238, 46184.041131585, 45811.84154762719, 40836.49295153637, 36557.4161634567, 36283.08730791475, 35888.285217753626, 32023.30136441937, 30186.50255595426, 28491.87170166853], [57638.743688161136, 59795.95639517166, 59231.30347199334, 55562.12763540028, 50271.82059750872, 47434.58323020379, 44832.70333890959, 44463.88074825405, 44168.82344885914, 37745.59351558758, 35492.996503753086, 33435.64052897681, 31601.426611152914, 29833.74840703727, 25114.579300501864], [56511.91103662291, 57123.54259488436, 61019.73122057699, 59843.13817637951, 57022.07025391634, 53865.218650381525, 50895.14122984311, 47957.195791070946, 40803.88570282523, 40592.80991225179, 36344.92553715462, 34217.96189327181, 32258.19346770231, 30772.555393934115, 29053.703523609925], [57535.65819366794, 60298.47373399419, 57773.38630605531, 56384.687782414294, 51837.2125359917, 48747.58008034776, 49096.68085894988, 48751.3287174831, 43719.96637396533, 43431.07393548549, 38941.6850971076, 34804.05862898863, 32995.89946268991, 31328.161550612254, 29760.928125446975], [54283.62971747688, 60241.78180794895, 61499.491677912454, 59420.38388691613, 50930.10866350334, 51071.45857177505, 45897.58553926904, 48239.049305663524, 45500.964650717346, 43058.34610108146, 40690.39813744939, 36702.791713359984, 36504.92231080653, 34699.32215222542, 32930.309826431425], [57189.43489779292, 61647.89128177064, 61799.048271465974, 59881.814442696246, 54307.84558056231, 51624.45770610879, 52246.76390818464, 49644.66811649182, 44441.66304749349, 44198.97628435146, 41829.42396751264, 37666.303890523064, 35623.57225017258, 33812.11174246429, 32203.576796164205], [58182.9640512186, 60662.911142965524, 61124.91860498381, 60389.051155776404, 58461.20744025224, 55587.72921685809, 52814.48586700331, 49957.80256590444, 47300.86048967358, 44644.63374979011, 42330.22946996598, 40128.94117573895, 38132.52649112879, 34413.94325532801, 32690.025930187003], [51269.40808763627, 60590.826665878936, 58505.28069601556, 60488.903745623466, 58285.569395712715, 55912.34991760001, 50461.85131249184, 47800.20104103829, 45276.74754385855, 42767.41551980398, 42710.03015839453, 40474.492216466315, 38417.79710387373, 36552.02314413468, 34414.47629057033], [57634.41854403891, 60962.95011100677, 63384.394687222106, 58598.37470289365, 58894.34223605576, 56225.32163543758, 53519.94172548679, 50552.78300445892, 45355.4903682191, 42959.68320159701, 40680.04326154688, 40532.80379537441, 38577.92382385682, 36518.84728328804, 34704.991890597696], [57744.01091597689, 58249.780409947714, 63551.20484885045, 62080.78897021784, 59943.77394730132, 54707.47292367584, 52064.03306509288, 52123.904998725135, 49309.7919789056, 46696.1091367591, 44225.49192355769, 41919.3637514692, 39764.84504138656, 37810.871404406695, 36075.1210191479], [58772.04061790659, 61306.68419537191, 63120.81403660425, 62281.776607110645, 60148.28449760885, 57778.60419213811, 52251.059170030036, 49242.46156118432, 49017.05695362591, 41693.1423691395, 41582.908341987924, 35323.004294749415, 33558.6447783285, 31849.967175577272, 30323.144023358058], [57895.09011697689, 62235.83061983444, 62571.459554356, 59384.9678229613, 60623.117065192375, 57736.64377833471, 52229.41928781538, 49399.14481439792, 49303.877977748896, 41888.39192107015, 41731.50058208593, 35579.540186939135, 35637.18767296223, 33882.342257199896, 32287.613019197637], [58824.34755629629, 62440.23364842258, 62180.93967388263, 58236.532902780455, 56664.32007636768, 57388.81912052786, 54914.98341925733, 51940.03204271117, 49186.91893333996, 46625.67300887432, 39715.337478000765, 37691.19106721973, 35845.86892991959, 34081.23466582918, 32449.349528298953]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-var-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[155705279.55531293, 5416272.833894962, 3543296.2826922974, 145354669.5173394, 2463130.3872672794, 217061363.64533916, 345144557.4175336, 245948008.9330197, 82965826.08174211, 72865757.57273318, 64133303.12549677, 104374227.4598563, 50060196.416390374, 113627250.92850316, 124866166.2601906], [6459424.181717824, 5015016.979904527, 304357024.84983295, 1935982.511546082, 4634643.343982078, 124081166.7705503, 3243969.00503082, 97842778.8699157, 86234423.32541552, 142415232.03801888, 222283071.94338614, 111710273.68784496, 52669013.985223934, 46977536.26644239, 1798066.749263746], [4419164.9614576725, 3994322.0218685083, 315584801.1218989, 2291977.4658437064, 4072019.6909585237, 242587499.2353266, 115129156.94472125, 2423631.4789199885, 89998696.43199843, 150658590.87155768, 71359344.12337872, 1925679.629323878, 55647778.58862951, 49405487.967128284, 43989245.957902566], [9844375.729569437, 2936863.1519069746, 4533296.867287366, 166468304.93079665, 283527387.9294489, 253234294.6142262, 226907787.5424555, 106804483.36036184, 2352158.0656181257, 161063001.1053997, 142510809.54843324, 126109199.5053428, 112689527.50925633, 100364035.08773513, 158779036.7439492], [6782149.729303698, 175178154.8152141, 2240442.97830294, 3706393.9036510484, 3248638.689113998, 3600646.1620157138, 2777026.5393179776, 3435435.365881911, 187992881.85401434, 89273694.80409642, 149242414.93641734, 132523365.15135741, 117512208.41672537, 106217235.19824368, 94796284.50685358], [4231211.066170557, 3648020.708788416, 178893636.326209, 169017020.72474438, 300180813.35758936, 265883577.69844708, 130117928.93461993, 3885397.894296224, 103565174.19638054, 2478716.6885286425, 81963907.13864568, 135795472.31432137, 122147846.03427348, 110146795.17266881, 99279464.17974274], [159169908.14554006, 3268783.046164791, 4183967.9798734277, 2607876.8569085333, 290705058.5982447, 140218369.6795227, 236847554.97675118, 3305417.3927154723, 2814698.2376703164, 2994669.2205963656, 2718091.352956773, 73417761.95322737, 2502125.833151248, 2336326.5930327, 2158323.3676364194], [4396839.621605505, 5797019.327715157, 4218164.945934756, 2874802.665829503, 157555033.28571433, 142809546.72321495, 4356723.8322410565, 4066032.5868178783, 108020853.55317521, 3719567.23391481, 3070771.4488824727, 77205717.93503039, 68952671.03618574, 61897694.7356794, 56007709.32087239], [3487711.421815592, 3827750.1241943007, 3418770.508400583, 5187754.061685256, 3902145.2441658974, 4662363.537483169, 4545592.489121235, 4424229.222124043, 4439322.6212374475, 4085131.507036769, 2021036.7540346268, 1812904.929043067, 1697974.7094632066, 63936675.02989521, 57736634.64009114], [295536116.7425185, 3343075.6911628162, 184360787.21545345, 2409174.45807472, 2216179.42847585, 3374665.0706848213, 136664705.2749854, 122389557.87796488, 109675465.50214107, 97723080.21752527, 1711175.7645398402, 1799157.5486168738, 1737846.7945687056, 1563791.1189914015, 1803623.5900500598], [2460431.353478051, 4735966.637080395, 6199219.755149759, 184781137.09632316, 1826480.7191144018, 2197335.78716921, 2558172.7140136817, 2714893.5010999357, 111222767.96742657, 99465390.2147805, 89396359.40709493, 2080121.2258317017, 1991932.5841856196, 1757310.0364374623, 1775034.1051776758], [2744225.1480164398, 181406143.3570104, 6033233.9872651445, 5983583.701169062, 5020793.43136664, 161577586.58675772, 146923059.67949975, 3822922.2905812645, 3319259.077809562, 2553158.116795452, 2322045.1204147963, 2187717.0686391206, 1982547.1030444386, 1779608.1840774964, 1660539.2276709368], [6815213.588028833, 5045109.897048123, 2943208.1379857687, 5942655.514659908, 4916233.311466051, 3940946.065217891, 147736300.43946812, 130657566.69505873, 3744040.4734973884, 196362333.26324216, 94274906.58228165, 222792131.31734496, 201294149.80229872, 181338261.94753265, 164261395.13294044], [8523369.27720039, 7124351.780784907, 7119685.012845153, 190684918.7210532, 6318007.986760128, 4516784.810827906, 146990992.29895818, 131375648.34511629, 3310706.355730277, 197933391.4250632, 94751555.00440499, 226192245.79649097, 142663705.75521117, 128934547.5899481, 117013128.73441789], [5233259.802572632, 5812873.24480578, 2237874.8454646347, 183637858.33051682, 171573558.5524438, 2236138.4799568206, 2005179.830392785, 2107665.899096263, 2166616.3062410187, 2138010.618791857, 176987608.55527163, 159476989.61445087, 144169775.97322085, 130522314.62615478, 118189648.00449426]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-final-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 74.0, 51.0, 0.0, 14.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [129.0, 71.0, 0.0, 22.0, 14.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [134.0, 71.0, 0.0, 22.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [131.0, 71.0, 35.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [134.0, 0.0, 33.0, 22.0, 11.0, 5.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [138.0, 69.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 69.0, 35.0, 19.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [133.0, 69.0, 31.0, 18.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [111.0, 67.0, 35.0, 24.0, 7.0, 6.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 69.0, 0.0, 21.0, 10.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [122.0, 68.0, 34.0, 0.0, 10.0, 4.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [122.0, 0.0, 34.0, 19.0, 7.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [118.0, 70.0, 37.0, 18.0, 7.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [118.0, 69.0, 35.0, 0.0, 9.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [126.0, 64.0, 35.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-final-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[177.0, 119.0, 74.0, 51.0, 31.0, 21.0, 13.0, 8.0, 4.0, 2.0, 3.0, 2.0, 1.0, 1.0, 1.0], [171.0, 113.0, 71.0, 45.0, 28.0, 20.0, 13.0, 8.0, 6.0, 4.0, 2.0, 2.0, 2.0, 2.0, 1.0], [175.0, 100.0, 75.0, 44.0, 26.0, 17.0, 12.0, 9.0, 6.0, 4.0, 2.0, 2.0, 1.0, 1.0, 0.0], [178.0, 101.0, 62.0, 36.0, 29.0, 15.0, 10.0, 8.0, 5.0, 2.0, 3.0, 3.0, 2.0, 2.0, 2.0], [166.0, 103.0, 64.0, 39.0, 28.0, 14.0, 10.0, 6.0, 4.0, 3.0, 3.0, 3.0, 2.0, 1.0, 0.0], [181.0, 108.0, 60.0, 43.0, 29.0, 17.0, 10.0, 8.0, 5.0, 3.0, 4.0, 1.0, 1.0, 1.0, 0.0], [170.0, 107.0, 61.0, 38.0, 23.0, 16.0, 12.0, 7.0, 5.0, 4.0, 5.0, 2.0, 2.0, 2.0, 1.0], [160.0, 104.0, 62.0, 35.0, 25.0, 16.0, 9.0, 7.0, 4.0, 3.0, 2.0, 1.0, 1.0, 1.0, 0.0], [161.0, 105.0, 63.0, 35.0, 23.0, 20.0, 9.0, 8.0, 4.0, 3.0, 2.0, 2.0, 2.0, 1.0, 1.0], [167.0, 104.0, 64.0, 39.0, 23.0, 12.0, 10.0, 6.0, 4.0, 4.0, 2.0, 2.0, 2.0, 1.0, 1.0], [160.0, 97.0, 65.0, 36.0, 25.0, 13.0, 8.0, 6.0, 5.0, 3.0, 3.0, 2.0, 1.0, 1.0, 1.0], [159.0, 98.0, 65.0, 41.0, 25.0, 13.0, 7.0, 5.0, 4.0, 3.0, 2.0, 2.0, 2.0, 1.0, 1.0], [156.0, 96.0, 62.0, 41.0, 24.0, 13.0, 7.0, 9.0, 6.0, 4.0, 2.0, 1.0, 1.0, 1.0, 0.0], [165.0, 102.0, 73.0, 38.0, 24.0, 15.0, 10.0, 9.0, 6.0, 4.0, 2.0, 1.0, 1.0, 1.0, 1.0], [159.0, 94.0, 59.0, 40.0, 20.0, 15.0, 9.0, 7.0, 4.0, 3.0, 2.0, 2.0, 1.0, 1.0, 1.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-final-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[152.4, 93.45, 59.05, 34.1, 20.75, 12.55, 5.15, 3.35, 2.25, 1.05, 0.6, 0.3, 0.25, 0.05, 0.05], [155.6, 90.15, 50.05, 33.5, 20.8, 10.5, 6.8, 4.0, 2.7, 1.4, 0.7, 0.65, 0.3, 0.2, 0.15], [153.05, 88.4, 48.25, 33.15, 18.7, 10.0, 5.8, 3.45, 2.0, 1.0, 0.75, 0.4, 0.2, 0.15, 0.0], [153.55, 90.0, 52.8, 28.4, 15.65, 9.45, 4.95, 2.7, 2.05, 1.2, 0.95, 0.65, 0.6, 0.35, 0.15], [149.75, 83.2, 49.85, 31.45, 18.2, 10.25, 6.0, 3.5, 1.9, 1.4, 0.95, 0.65, 0.55, 0.1, 0.0], [153.3, 87.25, 48.0, 26.15, 16.1, 10.35, 5.6, 4.25, 2.05, 1.4, 0.85, 0.4, 0.2, 0.1, 0.0], [142.35, 85.95, 49.25, 28.05, 15.2, 9.55, 5.05, 3.25, 1.7, 1.15, 0.9, 0.45, 0.25, 0.2, 0.1], [146.05, 87.0, 48.6, 26.85, 16.05, 9.3, 5.5, 3.35, 1.8, 1.3, 0.5, 0.2, 0.05, 0.05, 0.0], [141.85, 84.4, 49.3, 28.75, 16.35, 10.6, 5.5, 3.35, 1.75, 1.3, 0.7, 0.35, 0.2, 0.15, 0.1], [131.7, 85.5, 46.6, 29.65, 16.8, 9.5, 6.05, 2.9, 1.7, 1.1, 0.7, 0.35, 0.2, 0.15, 0.05], [144.1, 83.55, 47.65, 25.5, 17.0, 8.9, 5.0, 2.6, 1.6, 0.8, 0.6, 0.3, 0.15, 0.05, 0.05], [143.65, 78.45, 47.65, 26.0, 15.7, 7.85, 4.25, 2.55, 1.75, 1.1, 0.6, 0.45, 0.35, 0.15, 0.15], [139.5, 82.8, 47.6, 25.95, 15.7, 8.15, 4.25, 3.05, 1.75, 1.1, 0.7, 0.2, 0.05, 0.05, 0.0], [144.65, 85.15, 48.25, 25.7, 16.55, 8.2, 5.05, 3.05, 1.7, 1.1, 0.7, 0.15, 0.25, 0.15, 0.05], [140.25, 79.1, 48.25, 24.9, 13.85, 9.6, 4.7, 3.3, 1.95, 1.15, 0.4, 0.35, 0.25, 0.15, 0.05]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Infected-final-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[1349.94, 123.04750000000001, 28.747499999999995, 98.39000000000001, 22.7875, 24.6475, 13.427500000000004, 5.027500000000001, 1.7875, 0.7474999999999999, 1.0399999999999998, 0.30999999999999994, 0.1875, 0.0475, 0.04749999999999999], [146.54000000000002, 67.6275, 319.2475, 30.55, 13.959999999999999, 28.35, 5.36, 4.2, 2.9099999999999997, 1.3400000000000003, 0.8100000000000002, 0.6275, 0.41, 0.36000000000000004, 0.1275], [119.74750000000002, 64.84, 305.1875, 28.127499999999998, 11.71, 21.1, 9.459999999999999, 5.1475, 3.0, 1.2, 0.5875, 0.4400000000000001, 0.16000000000000006, 0.1275, 0.0], [173.4475, 59.6, 43.260000000000005, 58.24000000000001, 52.427499999999995, 16.1475, 7.7475000000000005, 4.01, 2.3475, 0.76, 0.5474999999999999, 0.7275, 0.5399999999999998, 0.4274999999999999, 0.22749999999999998], [97.2875, 428.16, 54.827499999999986, 25.0475, 16.76, 5.6875, 5.4, 3.55, 1.49, 0.74, 0.5474999999999999, 0.7275, 0.5475000000000001, 0.09000000000000001, 0.0], [149.31, 105.1875, 144.5, 59.427499999999995, 46.69, 19.527500000000003, 6.4399999999999995, 2.4875, 1.7475, 0.9399999999999998, 1.0274999999999999, 0.24000000000000005, 0.16000000000000006, 0.09000000000000001, 0.0], [1173.0275, 84.74750000000002, 46.9875, 25.647499999999997, 34.46, 14.547500000000003, 9.947500000000002, 3.8875, 1.31, 1.1275000000000002, 1.2899999999999998, 0.44750000000000023, 0.2875, 0.26000000000000006, 0.09000000000000001], [54.347500000000004, 54.7, 57.74000000000001, 19.627499999999998, 25.947499999999998, 16.21, 4.25, 3.9274999999999998, 1.36, 1.0100000000000002, 0.35, 0.16000000000000003, 0.04749999999999999, 0.04749999999999999, 0.0], [191.42749999999998, 103.34, 50.010000000000005, 10.7875, 15.9275, 11.940000000000001, 4.65, 4.027500000000001, 1.3875, 1.0100000000000002, 0.51, 0.32749999999999996, 0.26000000000000006, 0.1275, 0.09000000000000001], [2039.4099999999999, 60.65, 161.44, 21.127499999999998, 12.059999999999999, 5.55, 4.9475, 2.79, 1.7100000000000002, 0.8900000000000002, 0.51, 0.32749999999999996, 0.26000000000000006, 0.1275, 0.04749999999999999], [106.99000000000001, 76.54750000000001, 61.82750000000001, 57.15, 14.5, 7.19, 2.6, 2.3400000000000007, 1.8400000000000003, 0.86, 0.6399999999999999, 0.41, 0.1275, 0.04749999999999999, 0.04749999999999999], [119.2275, 387.1474999999999, 54.92750000000001, 34.7, 18.81, 9.9275, 3.2875, 0.8475000000000001, 0.9875, 0.7900000000000001, 0.43999999999999995, 0.4475000000000001, 0.3274999999999999, 0.1275, 0.1275], [114.75, 50.459999999999994, 49.64, 36.2475, 18.11, 7.727500000000001, 3.3875, 3.5475000000000008, 2.1875, 1.2900000000000003, 0.41000000000000003, 0.16000000000000006, 0.04749999999999999, 0.04749999999999999, 0.0], [114.62750000000001, 73.92750000000001, 77.0875, 63.510000000000005, 15.147499999999999, 8.559999999999999, 6.647499999999999, 3.5475000000000003, 2.3100000000000005, 1.2900000000000003, 0.41000000000000003, 0.1275, 0.1875, 0.1275, 0.0475], [68.8875, 65.19000000000001, 28.9875, 52.29, 16.327499999999997, 14.24, 4.31, 3.21, 1.3475, 0.6275000000000001, 0.5400000000000001, 0.5275, 0.1875, 0.1275, 0.0475]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Infected ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-min-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-min-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-min-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-min-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-max-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[1.0, 881.0, 926.0, 1.0, 969.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [829.0, 887.0, 1.0, 955.0, 972.0, 1.0, 987.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 999.0], [825.0, 900.0, 1.0, 956.0, 974.0, 1.0, 1.0, 991.0, 1.0, 1.0, 1.0, 998.0, 1.0, 1.0, 1.0], [822.0, 899.0, 938.0, 1.0, 1.0, 1.0, 1.0, 1.0, 995.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [834.0, 1.0, 936.0, 961.0, 972.0, 986.0, 990.0, 994.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [819.0, 892.0, 1.0, 1.0, 1.0, 1.0, 1.0, 992.0, 1.0, 997.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 893.0, 939.0, 962.0, 1.0, 1.0, 1.0, 993.0, 995.0, 996.0, 995.0, 1.0, 998.0, 998.0, 999.0], [840.0, 896.0, 938.0, 965.0, 1.0, 1.0, 991.0, 993.0, 1.0, 997.0, 998.0, 1.0, 1.0, 1.0, 1.0], [839.0, 895.0, 937.0, 965.0, 977.0, 980.0, 991.0, 992.0, 996.0, 997.0, 998.0, 998.0, 998.0, 1.0, 1.0], [1.0, 896.0, 1.0, 961.0, 977.0, 988.0, 1.0, 1.0, 1.0, 1.0, 998.0, 998.0, 998.0, 999.0, 999.0], [840.0, 903.0, 935.0, 1.0, 975.0, 987.0, 992.0, 994.0, 1.0, 1.0, 1.0, 998.0, 999.0, 999.0, 999.0], [841.0, 1.0, 935.0, 959.0, 975.0, 1.0, 1.0, 995.0, 996.0, 997.0, 998.0, 998.0, 998.0, 999.0, 999.0], [844.0, 904.0, 938.0, 959.0, 976.0, 987.0, 1.0, 1.0, 994.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [835.0, 898.0, 927.0, 1.0, 976.0, 985.0, 1.0, 1.0, 994.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [841.0, 906.0, 941.0, 1.0, 1.0, 985.0, 991.0, 993.0, 996.0, 997.0, 1.0, 1.0, 1.0, 1.0, 1.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-max-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[868.0, 926.0, 949.0, 974.0, 986.0, 989.0, 998.0, 998.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [871.0, 929.0, 957.0, 978.0, 986.0, 996.0, 997.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [866.0, 929.0, 957.0, 978.0, 988.0, 994.0, 998.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [869.0, 929.0, 965.0, 979.0, 994.0, 994.0, 998.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [866.0, 927.0, 967.0, 978.0, 989.0, 995.0, 998.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [862.0, 931.0, 958.0, 982.0, 987.0, 996.0, 998.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [870.0, 931.0, 965.0, 981.0, 988.0, 995.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [867.0, 931.0, 969.0, 982.0, 989.0, 996.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [889.0, 933.0, 965.0, 976.0, 993.0, 994.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [874.0, 931.0, 964.0, 979.0, 990.0, 996.0, 997.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [878.0, 932.0, 966.0, 983.0, 990.0, 996.0, 999.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [878.0, 930.0, 966.0, 981.0, 993.0, 996.0, 999.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [882.0, 930.0, 963.0, 982.0, 993.0, 996.0, 999.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [882.0, 931.0, 965.0, 985.0, 991.0, 996.0, 997.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [874.0, 936.0, 965.0, 981.0, 990.0, 997.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-max-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[797.65, 906.55, 940.95, 915.95, 979.25, 887.55, 795.05, 846.8, 947.75, 948.9, 949.3, 899.6, 949.45, 849.65, 799.5], [844.4, 909.85, 850.05, 966.5, 979.2, 939.55, 993.2, 946.05, 947.35, 898.7, 799.5, 899.45, 949.75, 949.85, 999.8], [846.95, 911.6, 851.85, 966.85, 981.3, 890.1, 944.25, 996.55, 948.05, 899.1, 949.3, 999.6, 949.85, 949.9, 950.05], [846.45, 910.0, 947.2, 921.65, 884.45, 890.7, 895.15, 947.35, 997.95, 898.95, 899.15, 899.45, 899.55, 899.8, 800.15], [850.25, 866.85, 950.15, 968.55, 981.8, 989.75, 994.0, 996.5, 898.2, 948.65, 899.15, 899.45, 899.6, 900.0, 900.1], [846.7, 912.75, 902.05, 923.9, 884.0, 889.75, 944.45, 995.75, 948.0, 998.6, 949.2, 899.7, 899.9, 900.0, 900.1], [807.7, 914.05, 950.75, 971.95, 884.9, 940.5, 895.05, 996.75, 998.3, 998.85, 999.1, 949.6, 999.75, 999.8, 999.9], [853.95, 913.0, 951.4, 973.15, 934.0, 940.75, 994.5, 996.65, 948.25, 998.7, 999.5, 949.85, 950.0, 950.0, 950.05], [858.15, 915.6, 950.7, 971.25, 983.65, 989.4, 994.5, 996.65, 998.25, 998.7, 999.3, 999.65, 999.8, 949.9, 949.95], [768.4, 914.5, 903.45, 970.35, 983.2, 990.5, 944.0, 947.15, 948.35, 948.95, 999.3, 999.65, 999.8, 999.85, 999.95], [855.9, 916.45, 952.35, 924.55, 983.0, 991.1, 995.0, 997.4, 948.45, 949.25, 949.45, 999.7, 999.85, 999.95, 999.95], [856.35, 871.6, 952.35, 974.0, 984.3, 942.2, 945.8, 997.45, 998.25, 998.9, 999.4, 999.55, 999.65, 999.85, 999.85], [860.5, 917.2, 952.4, 974.05, 984.3, 991.85, 945.8, 947.0, 998.25, 899.0, 949.35, 849.95, 850.1, 850.1, 850.15], [855.35, 914.85, 951.75, 924.35, 983.45, 991.8, 945.0, 947.0, 998.3, 899.0, 949.35, 850.0, 899.85, 899.95, 900.05], [859.75, 920.9, 951.75, 925.15, 936.2, 990.4, 995.3, 996.7, 998.05, 998.85, 899.7, 899.75, 899.85, 899.95, 900.05]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-max-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[33530.22749999999, 123.04749999999999, 28.747500000000002, 44096.84749999999, 22.7875, 87337.2475, 157635.6475, 126246.16, 47177.1875, 47290.89, 47331.61, 89720.84000000001, 47345.5475, 127095.72750000001, 159401.15], [146.54, 67.62750000000003, 80139.3475, 30.55, 13.959999999999999, 46384.447499999995, 5.36, 47009.64750000001, 47138.22749999999, 89541.70999999999, 159401.25, 89690.8475, 47375.4875, 47385.42749999999, 0.16000000000000003], [119.74750000000002, 64.84, 80484.9275, 28.127500000000005, 11.71, 87843.19, 46835.0875, 5.147500000000001, 47208.247500000005, 89621.49000000002, 47330.71000000001, 0.4400000000000002, 47385.22749999999, 47390.19, 47405.0475], [173.44749999999996, 59.6, 43.25999999999999, 44626.12750000001, 86745.6475, 87859.21000000002, 88838.82749999998, 47139.32750000001, 2.3475000000000006, 89491.3475, 89630.82749999998, 89690.94749999998, 89610.9475, 89660.76, 159460.72749999998], [97.2875, 39521.527500000004, 54.8275, 25.047500000000003, 16.76, 5.6875, 5.4, 3.55, 89441.95999999999, 47265.9275, 89630.82749999998, 89690.94749999998, 89620.94, 89800.2, 89820.09000000001], [149.31000000000003, 105.1875, 42754.3475, 44852.08999999999, 86650.0, 87771.6875, 46852.04749999999, 2.4875, 47202.0, 0.9400000000000001, 47321.16, 89740.41, 89780.29000000001, 89800.2, 89820.09000000001], [34357.310000000005, 84.74750000000002, 46.9875, 25.6475, 86817.59, 46465.55, 88821.04750000002, 3.8875, 1.31, 1.1275000000000002, 1.2900000000000003, 47360.54, 0.2875, 0.25999999999999995, 0.09], [54.34750000000001, 54.7, 57.74000000000001, 19.627499999999998, 45827.6, 46492.1875, 4.25, 3.9275000000000007, 47226.5875, 1.01, 0.35, 47385.22749999999, 47400.1, 47400.1, 47405.0475], [191.4275, 103.34, 50.00999999999999, 10.7875, 15.927499999999998, 11.939999999999998, 4.65, 4.027500000000001, 1.3875, 1.01, 0.5100000000000001, 0.32749999999999996, 0.25999999999999995, 47390.19, 47395.147499999985], [65545.84000000001, 60.65, 42911.1475, 21.127499999999998, 12.060000000000002, 5.55, 46805.6, 47118.1275, 47236.927500000005, 47296.0475, 0.5100000000000001, 0.32749999999999996, 0.25999999999999995, 0.12750000000000003, 0.047500000000000014], [106.98999999999998, 76.54750000000001, 61.8275, 44914.747500000005, 14.5, 7.19, 2.6, 2.34, 47247.0475, 47325.9875, 47345.747500000005, 0.41000000000000003, 0.12750000000000003, 0.047500000000000014, 0.047500000000000014], [119.22749999999999, 39955.03999999999, 54.927499999999995, 34.7, 18.810000000000002, 46630.759999999995, 46983.76, 0.8475000000000001, 0.9875, 0.79, 0.44000000000000006, 0.4475000000000001, 0.32749999999999996, 0.12750000000000003, 0.12750000000000003], [114.75, 50.459999999999994, 49.64, 36.2475, 18.110000000000003, 7.727499999999997, 46983.86, 47103.9, 2.1875, 89601.6, 47335.527500000004, 127185.34749999999, 127230.18999999999, 127230.18999999999, 127245.12749999999], [114.62749999999998, 73.92750000000001, 77.0875, 44901.1275, 15.147500000000003, 8.56, 46907.2, 47103.9, 2.31, 89601.6, 47335.527500000004, 127200.3, 89770.32749999998, 89790.24749999998, 89810.14749999999], [68.8875, 65.18999999999998, 28.9875, 44969.8275, 46037.76, 14.239999999999998, 4.3100000000000005, 3.210000000000001, 1.3474999999999997, 0.6275000000000002, 89740.71, 89750.6875, 89770.32749999998, 89790.24749999998, 89810.14749999999]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-avg-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.9925187032418953, 498.54114713216956, 548.8478802992519, 0.972568578553616, 653.4039900249377, 0.9925187032418953, 0.9750623441396509, 0.9850374064837906, 0.9975062344139651, 0.9975062344139651, 0.9875311720698254, 0.9800498753117207, 0.9950124688279302, 0.9850374064837906, 0.972568578553616], [480.91022443890273, 524.9775561097257, 0.9875311720698254, 628.2718204488779, 626.8628428927681, 0.9875311720698254, 707.142144638404, 0.9850374064837906, 0.9950124688279302, 0.9850374064837906, 0.9875311720698254, 0.9950124688279302, 0.9975062344139651, 0.9975062344139651, 786.7955112219452], [493.93765586034914, 559.209476309227, 0.9900249376558603, 641.2219451371571, 677.5885286783042, 0.9775561097256857, 0.9950124688279302, 719.9201995012469, 0.9925187032418953, 0.9775561097256857, 0.9800498753117207, 787.4588528678304, 0.9900249376558603, 0.9900249376558603, 0.9900249376558603], [445.359102244389, 558.1645885286783, 603.925187032419, 0.9825436408977556, 0.9925187032418953, 0.9975062344139651, 0.9975062344139651, 0.9900249376558603, 758.1346633416459, 0.9900249376558603, 0.9950124688279302, 0.9950124688279302, 0.9950124688279302, 0.9950124688279302, 0.9950124688279302], [493.58354114713217, 0.9800498753117207, 613.1022443890274, 650.9875311720698, 684.576059850374, 709.5610972568578, 742.2892768079801, 762.5037406483791, 0.9950124688279302, 0.9900249376558603, 0.9950124688279302, 0.9950124688279302, 0.9950124688279302, 0.9925187032418953, 0.9925187032418953], [499.5162094763092, 567.3291770573566, 0.9950124688279302, 0.9925187032418953, 0.9950124688279302, 0.9950124688279302, 0.9950124688279302, 762.4089775561097, 0.9950124688279302, 769.7431421446385, 0.9925187032418953, 0.9925187032418953, 0.9925187032418953, 0.9925187032418953, 0.9925187032418953], [0.9900249376558603, 566.0473815461347, 625.1620947630922, 654.2892768079801, 0.9925187032418953, 0.9950124688279302, 0.9900249376558603, 770.8329177057357, 781.0274314214464, 798.9925187032419, 794.6359102244389, 0.9925187032418953, 828.5311720698254, 834.3615960099751, 832.3790523690773], [507.9700748129676, 573.1920199501246, 631.8179551122195, 658.4688279301746, 0.9950124688279302, 0.9850374064837906, 755.9576059850374, 762.8653366583541, 0.9975062344139651, 796.0099750623441, 781.1720698254364, 0.9975062344139651, 0.9975062344139651, 0.9975062344139651, 0.9975062344139651], [512.8254364089776, 580.9526184538653, 644.3291770573566, 670.2394014962593, 701.6533665835411, 738.6059850374065, 759.3491271820449, 767.1371571072319, 775.7281795511221, 799.5286783042394, 816.3690773067332, 826.6159600997506, 833.9925187032419, 0.9975062344139651, 0.9975062344139651], [0.9975062344139651, 586.0099750623441, 0.9850374064837906, 688.8204488778055, 714.5536159600997, 737.0673316708229, 0.9975062344139651, 0.9850374064837906, 0.9950124688279302, 0.9975062344139651, 819.7356608478804, 829.5885286783042, 837.8029925187033, 843.3765586034913, 842.8379052369078], [515.0399002493766, 592.0074812967581, 627.8054862842893, 0.9975062344139651, 723.3890274314215, 742.6533665835411, 764.8379052369078, 782.6758104738154, 0.9950124688279302, 0.9975062344139651, 0.9975062344139651, 824.5386533665835, 833.2668329177058, 840.4214463840399, 846.4937655860349], [516.7755610972569, 0.9825436408977556, 631.4438902743142, 679.4613466334165, 721.8254364089776, 0.9925187032418953, 0.9950124688279302, 783.4314214463841, 797.7680798004988, 814.6982543640897, 818.8029925187033, 825.4937655860349, 833.1097256857855, 839.9800498753117, 846.0224438902743], [523.720698254364, 602.6009975062344, 638.5586034912718, 679.2543640897755, 723.7730673316709, 749.6758104738154, 0.9950124688279302, 0.9950124688279302, 798.1895261845386, 0.9925187032418953, 0.9950124688279302, 0.9950124688279302, 0.9950124688279302, 0.9950124688279302, 0.9950124688279302], [518.925187032419, 591.2394014962593, 640.2867830423941, 0.9950124688279302, 714.6683291770573, 742.6982543640897, 0.9950124688279302, 0.9950124688279302, 800.3915211970075, 0.9925187032418953, 0.9950124688279302, 0.9950124688279302, 0.9975062344139651, 0.9975062344139651, 0.9975062344139651], [524.9052369077307, 595.9476309226933, 650.7381546134663, 0.9975062344139651, 0.9975062344139651, 753.790523690773, 772.6384039900249, 788.2568578553615, 802.7057356608478, 822.0224438902743, 0.9850374064837906, 0.9850374064837906, 0.9975062344139651, 0.9975062344139651, 0.9975062344139651]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-avg-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[507.1321695760598, 582.423940149626, 625.8129675810474, 671.2319201995012, 696.279301745636, 724.5586034912718, 736.6184538653366, 757.6658354114713, 779.0149625935162, 790.4389027431422, 793.4139650872818, 799.5187032418953, 811.4563591022444, 817.6807980049875, 817.6882793017456], [526.4488778054863, 593.3092269326684, 636.5062344139651, 673.4788029925187, 716.0548628428928, 735.351620947631, 750.4862842892768, 770.8428927680798, 781.8977556109726, 794.9201995012469, 806.9775561097257, 816.291770573566, 820.0324189526184, 825.8628428927681, 830.0149625935162], [532.8628428927681, 607.3890274314215, 645.3266832917706, 683.9850374064838, 717.6982543640897, 747.5985037406484, 769.7955112219452, 779.925187032419, 792.9775561097257, 805.219451371571, 814.8678304239402, 823.4563591022444, 830.5386533665835, 836.4114713216958, 842.1970074812967], [540.8852867830424, 607.85536159601, 659.3915211970075, 703.5411471321696, 726.9775561097257, 754.8279301745636, 775.5461346633416, 786.4189526184539, 799.8154613466335, 816.4039900249377, 822.5885286783042, 831.0224438902743, 838.6558603491272, 843.6907730673316, 847.7007481296758], [542.3216957605985, 609.6184538653366, 667.6334164588528, 704.0523690773067, 733.1097256857855, 752.3466334164589, 768.351620947631, 795.4887780548628, 814.5311720698254, 821.428927680798, 828.1895261845386, 836.4812967581047, 843.7356608478804, 852.7680798004988, 858.6259351620947], [535.5586034912718, 610.3067331670823, 663.1147132169576, 700.428927680798, 738.3017456359103, 760.9177057356609, 776.5187032418953, 793.1920199501246, 809.3266832917706, 824.1745635910224, 836.428927680798, 844.6957605985037, 851.0498753117207, 857.0224438902743, 862.6658354114713], [541.3615960099751, 615.9326683291771, 672.783042394015, 706.8478802992519, 743.281795511222, 766.6309226932668, 784.571072319202, 801.1745635910224, 816.1022443890274, 828.8927680798005, 839.2967581047382, 845.2044887780548, 852.3990024937656, 858.5835411471322, 864.1795511221945], [552.4812967581047, 622.4763092269327, 675.576059850374, 712.645885286783, 743.6159600997506, 767.5062344139651, 790.5635910224439, 812.2992518703242, 824.6084788029925, 838.1122194513715, 844.2344139650872, 852.2269326683291, 859.5236907730673, 865.2394014962593, 870.3117206982544], [567.6034912718204, 636.4663341645885, 678.9900249376559, 731.0448877805486, 744.5261845386534, 778.4937655860349, 793.1670822942643, 815.3042394014963, 827.5985037406484, 840.8653366583541, 839.0199501246883, 846.6633416458853, 854.1645885286783, 860.3366583541147, 866.1695760598503], [551.3715710723192, 628.0299251870324, 678.5660847880299, 710.3715710723192, 748.3291770573566, 770.5810473815461, 786.9750623441397, 802.2119700748129, 820.3915211970075, 831.6408977556109, 841.4463840399003, 848.9426433915212, 856.5261845386534, 863.1147132169576, 876.0523690773067], [562.7132169576059, 629.0299251870324, 677.4538653366584, 724.6683291770573, 753.5386533665835, 773.3266832917706, 796.3665835411472, 813.7605985037407, 830.279301745636, 841.2593516209477, 850.5561097256858, 859.2693266832918, 866.3167082294265, 872.648379052369, 878.2967581047382], [564.8104738154614, 631.2219451371571, 679.9501246882793, 718.9750623441397, 755.0648379052369, 783.4538653366584, 800.4713216957606, 810.4613466334165, 827.3366583541147, 837.9201995012469, 850.8029925187033, 859.6009975062344, 867.2892768079801, 871.1920199501246, 876.7730673316709], [561.6084788029925, 628.4214463840399, 685.7132169576059, 719.5436408977556, 755.1122194513715, 784.3416458852868, 801.8827930174564, 808.1745635910224, 826.783042394015, 836.0, 846.0249376558603, 855.6359102244389, 862.6807980049875, 868.9002493765586, 874.720698254364], [552.6408977556109, 634.5286783042394, 682.6533665835411, 723.206982543641, 747.9152119700748, 774.4638403990025, 791.4837905236908, 809.780548628429, 827.4962593516209, 836.997506234414, 847.9426433915212, 857.0249376558603, 863.1795511221945, 869.7281795511221, 875.8827930174564], [557.2244389027431, 631.8628428927681, 683.5536159600997, 718.2269326683291, 749.4064837905237, 776.0997506234414, 794.7581047381547, 812.790523690773, 826.8703241895262, 835.7605985037407, 849.1645885286783, 857.2618453865337, 864.3890274314215, 871.1970074812967, 876.8478802992519]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-avg-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[465.8441396508729, 559.2850374064839, 603.2239401496261, 607.6445137157107, 672.2381546134662, 634.0578553615961, 579.209476309227, 624.5960099750623, 718.7097256857855, 721.7634663341646, 729.3160847880299, 699.0574812967582, 749.1900249376561, 678.2780548628429, 641.7310473815461], [500.85573566084787, 572.7906483790523, 553.3982543640898, 655.0831670822943, 685.6572319201996, 680.0958852867831, 732.6142144638403, 711.2374064837906, 722.5435162094764, 694.787157107232, 628.6576059850374, 714.4604738154612, 759.356608478803, 765.386783042394, 810.5043640897755], [512.0551122194513, 579.3612219451372, 565.83927680798, 668.1861596009974, 698.4999999999999, 654.4758104738155, 714.5108478802993, 761.5917705735661, 735.8670822942644, 705.6700748129676, 755.3092269326684, 803.5071072319201, 769.9390274314213, 775.5617206982544, 780.8512468827929], [511.24713216957616, 580.5017456359103, 636.6140897755611, 643.6447630922693, 634.1977556109725, 657.4079800498753, 681.2410224438903, 729.2265586034913, 782.584663341646, 713.0195760598505, 724.5745635910225, 732.2120947630923, 736.1956359102245, 741.8052369077307, 665.2659600997506], [522.7719451371571, 559.1526184538652, 641.4352867830423, 679.967705735661, 713.7410224438902, 737.974438902743, 760.0864089775562, 775.9628428927679, 710.8608478802992, 759.7765586034913, 730.8037406483792, 738.7094763092268, 743.2361596009976, 749.3412718204489, 754.7567331670823], [518.4945137157108, 589.1683291770573, 611.4059850374064, 652.265710723192, 644.1509975062344, 670.2800498753118, 725.9450124688278, 779.9019950124689, 754.2369077306732, 804.2906483790523, 774.7807980049876, 743.3403990024938, 750.0039900249376, 755.0615960099751, 760.0946384039901], [497.9687032418953, 596.8471321695761, 651.6795511221945, 694.4076059850374, 651.7047381546136, 713.0268079800499, 693.1800498753117, 786.7680798004988, 800.3381546134663, 813.9072319201996, 823.9174563591025, 789.5612219451372, 839.4741895261844, 846.0280548628429, 850.9002493765587], [530.6026184538653, 595.959975062344, 654.9386533665836, 696.3269326683292, 691.5033665835412, 716.3443890274314, 772.4941396508729, 787.2215710723192, 761.9270573566084, 816.6844139650873, 823.6069825436409, 791.5238154613467, 798.4733167082296, 804.780548628429, 810.3997506234415], [533.4734413965087, 606.9056109725686, 658.8082294264341, 698.0054862842893, 727.2381546134663, 754.547132169576, 774.9007481296758, 790.3147132169577, 804.5996259351621, 819.6299251870325, 828.9438902743143, 836.5527431421445, 843.9562344139651, 808.6033665835413, 814.2630922693268], [481.7799251870325, 606.0192019950125, 625.4462593516209, 699.1597256857856, 732.7643391521198, 754.1370324189526, 733.9890274314214, 752.3524937655859, 767.6985037406482, 778.030174563591, 831.6293017456359, 839.3780548628429, 846.810349127182, 854.175685785536, 861.4400249376561], [536.5374064837904, 610.0249376558603, 659.856234413965, 671.3061097256857, 737.8335411471321, 760.9950124688279, 781.9866583541145, 799.0593516209477, 771.6283042394014, 782.166583541147, 792.3526184538653, 842.9639650872817, 851.2662094763093, 858.0845386533665, 864.0064837905236], [537.9658354114713, 582.4872817955112, 661.8799251870324, 702.7973815461346, 738.0781795511223, 725.6683291770574, 743.0983790523691, 799.8849127182044, 815.0513715710724, 828.1689526184539, 837.1279301745635, 846.8169576059851, 854.4521197007482, 860.8564837905236, 866.7214463840398], [541.7584788029926, 615.8364089775562, 662.9397755610973, 705.3886533665835, 740.0652119700748, 765.7980049875313, 744.9600997506235, 759.6041147132171, 814.4725685785536, 743.9125935162095, 796.8162094763092, 720.3078553615961, 726.8135910224439, 732.6492518703242, 737.8105985037407], [537.6034912718205, 612.5622194513716, 665.2614713216957, 670.6756857855362, 737.684663341646, 764.4376558603492, 745.6235660847881, 761.3819201995013, 816.2644638403991, 745.5357855361597, 798.5556109725685, 721.680548628429, 770.7250623441395, 776.8815461346634, 782.2945137157107], [543.919451371571, 614.5283042394015, 668.1456359102243, 673.0592269326684, 704.4897755610973, 766.0418952618454, 783.4870324189526, 803.5285536159602, 817.6007481296758, 830.0108478802993, 757.126059850374, 765.1416458852867, 772.1531172069825, 778.1779301745635, 783.6442643391521]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-avg-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[11489.671576980241, 279.73474113966984, 269.1528688254425, 19877.790145257186, 177.40508610021098, 44739.747736394675, 83670.14919248017, 68873.09224445121, 27216.759058339183, 27538.357440734202, 28231.109315162845, 54318.62079121087, 29696.395139084947, 81043.93849820584, 102788.05126415569], [136.5975853850411, 242.35590355470444, 34095.09221155341, 173.06420064240874, 331.649031085006, 24439.559474428017, 184.25525220614264, 26731.763781692902, 27576.09208181231, 53725.05002660122, 98676.90530910877, 56778.97096925704, 30598.187680424868, 31074.904050907637, 147.59719459145123], [127.11942705580184, 178.00334281192278, 35667.50549901742, 104.08409168786253, 109.8420236814447, 47589.256912954515, 26887.31147895536, 144.66414394189098, 28556.024045310663, 55316.0326721227, 30058.883845871605, 120.30873954453014, 31258.381454390823, 31732.55807045665, 32164.385027005424], [345.65218493666066, 176.47415351894588, 179.42226035596764, 21888.09373603087, 44747.75743565028, 48019.433362603464, 51492.631170375185, 28019.865630981767, 120.49743687850193, 56461.12616045608, 58256.49397292306, 59493.63316053695, 60142.8882497466, 61057.43296552884, 110310.20925322294], [101.17509746518994, 16522.712988476436, 121.66678097462065, 153.5280635537095, 128.42350002487535, 73.55720354661972, 34.973563146373394, 85.2772401291034, 56078.168315246796, 30453.648554673164, 59252.56488336516, 60535.92010777297, 61235.14741705587, 62370.85517893235, 63273.816878299884], [86.9316298406103, 168.46048065621483, 19722.294014713836, 22413.704595416075, 46104.67310991537, 49834.985152517715, 27722.978886620735, 62.547377877003456, 29946.93464655071, 132.45936000087053, 31628.070876984595, 61338.65752109749, 62438.82788564748, 63303.693383187914, 64151.81942492585], [13087.576786509411, 147.72956828626675, 121.73063818011107, 147.37803152654516, 47144.760514175905, 26723.643198036705, 53272.54857594169, 77.60127238014692, 88.75629156535103, 80.1608905417255, 119.78716046541975, 32795.38589714926, 62.30355052207401, 61.5378666021978, 60.76895790449076], [103.33697755300022, 178.3366151174437, 94.11525264146346, 151.50807078314173, 25182.795222215656, 26980.853849105413, 90.74941839603017, 171.32745460227244, 30610.484558476008, 90.96153162915662, 163.88615331994185, 33045.57665031623, 33617.09287292989, 34145.6387037394, 34619.28066933663], [181.60034034303257, 166.64027355240356, 87.87046529561404, 195.64361763919382, 130.02608845716156, 89.25272069203541, 87.66967531296456, 150.05787252566842, 140.67594944994147, 83.7209099445898, 41.374762283816736, 39.55706324898473, 37.088117284718386, 34361.24597699951, 34844.01580618279], [25795.254167495852, 120.62808322087551, 20623.695977310468, 39.576453178151986, 78.00714205757424, 58.67355953943072, 28356.945514269184, 29763.95509559953, 30983.953114657248, 31829.064717197034, 36.89045918557719, 36.058572023805894, 32.50803382752597, 26.90370176491434, 55.64452924733034], [155.37529337504077, 116.83706071479659, 108.79838450942486, 23717.284036713078, 59.02813345377179, 56.358452994695234, 44.855624825094225, 63.129038127872285, 31324.121519440185, 32182.933795560974, 33019.874367945464, 60.04620585381929, 55.449874612098164, 52.7109065864017, 49.59638397771166], [200.57877320414661, 17879.249067729677, 103.54650796636847, 110.90381768459142, 66.71990862929951, 27696.287216497418, 29040.212904444004, 51.62131284942247, 55.36954397049762, 32.67954544747857, 52.826075770673015, 52.46091342715526, 51.20658459835461, 48.06085501644891, 46.51212747433162], [117.72542352037621, 58.252331390973985, 101.91805167567358, 107.15693700598892, 58.25629397516167, 55.48684523106201, 29183.681211559637, 30348.479186618864, 39.46149370961619, 61357.414979679845, 33349.74200539799, 91329.70130128233, 92987.17673887288, 94485.61678178309, 95821.21739135639], [118.36868116491821, 93.79079823819524, 108.74560560879584, 23708.402380877604, 93.57591586806049, 58.854202088295516, 29209.020989592733, 30488.405381978355, 37.50249903607558, 61623.40433658684, 33495.839224631694, 91678.91518330111, 65846.70390972382, 66903.42569480289, 67839.67566302448], [68.56810162872132, 69.01042547931907, 50.76620132959368, 23819.819780893773, 26072.74632769697, 36.386551451794546, 45.86399406720121, 39.70840136255386, 42.84193437851765, 18.47488216802138, 63546.2630894553, 64897.81826642868, 66090.0353171933, 67126.29358727558, 68072.94329778731]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-var-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.007425326956921909, 81039.18328866115, 89824.91831518461, 0.026678938563814897, 98665.93578398145, 0.00248754671923682, 0.004962655704877454, 0.004962655704877454, 0.00248754671923682, 0.00248754671923682, 0.012313356260222267, 0.012313356260222267, 0.004962655704877454, 0.00248754671923682, 0.004962655704877454], [64806.185658049384, 81317.44773975285, 0.00248754671923682, 93814.32436365446, 92308.37984838402, 0.012313356260222267, 94555.63909428424, 0.014738714311478164, 0.004962655704877454, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682, 91468.42614162847], [65362.497758098514, 79695.01546632174, 0.00248754671923682, 89860.82591526171, 85438.5271111498, 0.00248754671923682, 0.004962655704877454, 90281.83505077705, 0.007425326956921909, 0.004962655704877454, 0.019552117213201412, 86039.54137101138, 0.009875560475370181, 0.009875560475370181, 0.009875560475370181], [65694.52589225191, 77830.97615064583, 82154.85336533976, 0.01715163462913787, 0.004962655704877454, 0.00248754671923682, 0.00248754671923682, 0.009875560475370181, 85944.4014527273, 0.009875560475370181, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.00248754671923682], [63440.603217641685, 0.019552117213201412, 81830.18589436634, 84871.68324823852, 86503.17998022403, 87672.76198531104, 87884.9575562341, 81250.12518578864, 0.004962655704877454, 0.009875560475370181, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454], [64188.273692327784, 75717.77982723988, 0.004962655704877454, 0.007425326956921909, 0.00248754671923682, 0.00248754671923682, 0.004962655704877454, 82630.76710965727, 0.004962655704877454, 77516.00942780206, 0.007425326956921909, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454, 0.004962655704877454], [0.009875560475370181, 72884.00141790163, 80106.65012033506, 79989.95425401584, 0.00248754671923682, 0.004962655704877454, 0.00248754671923682, 77237.35107368736, 77432.10473815461, 74399.31531520328, 73056.56630244837, 0.007425326956921909, 70176.83830324438, 69015.51484132562, 67856.35678882593], [62621.30046454936, 74284.50879036821, 77750.36415196423, 80224.44889024322, 0.004962655704877454, 0.014738714311478164, 78797.78767544978, 74502.7333909615, 0.00248754671923682, 69821.54601028601, 68423.61609691482, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682], [64238.37303250602, 72762.42549486631, 75982.02440283331, 76244.7012269824, 80575.89352056268, 76859.02801599493, 77717.49627178935, 72656.7054433741, 71315.06323965648, 68032.27613012357, 70305.42145882177, 69492.97144918251, 68054.47166373343, 0.00248754671923682, 0.00248754671923682], [0.00248754671923682, 72288.09859391421, 0.014738714311478164, 77858.69046834287, 78189.80618279737, 76886.15736220546, 0.00248754671923682, 0.014738714311478164, 0.004962655704877454, 0.00248754671923682, 68921.48873452279, 67959.88533653397, 66462.87774329763, 65544.71502042898, 61531.07207044732], [63407.83612042214, 70449.54593565961, 75617.31012866837, 0.00248754671923682, 78154.73569194222, 76164.30472447311, 75311.1816841935, 72375.22020385446, 0.004962655704877454, 0.00248754671923682, 0.00248754671923682, 64460.550904534175, 62890.19645400215, 61358.70678664933, 59938.99173512603], [61799.137505363775, 0.01715163462913787, 75272.693963346, 72185.64715393561, 77347.65242753466, 0.007425326956921909, 0.004962655704877454, 74113.13769192978, 71428.86671102792, 69903.3688969596, 66252.8764000224, 64160.843241024624, 62120.95871294333, 60987.00302858812, 59627.03827712514], [60092.651625300845, 69872.9147579928, 75415.10754286355, 71483.81057331734, 76590.27330675804, 72819.30223070752, 0.004962655704877454, 0.004962655704877454, 70563.54644560668, 0.007425326956921909, 0.004962655704877454, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682], [58920.45860411316, 68394.05207679057, 71668.86569113376, 0.004962655704877454, 74641.26624834423, 74752.53882749485, 0.004962655704877454, 0.004962655704877454, 70136.2400109452, 0.007425326956921909, 0.004962655704877454, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682], [61960.38060708577, 69231.17106236902, 74090.68082909932, 0.00248754671923682, 0.00248754671923682, 73410.35014707621, 72356.26073220938, 70222.07083289283, 67862.94806624336, 66771.73865834168, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682, 0.00248754671923682]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-var-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[81568.81157455489, 97472.19548385893, 107904.29356782607, 121669.71590972692, 113151.48527683286, 120746.21532204402, 116959.97787327193, 125261.55638335584, 121904.07256173779, 129140.81243275851, 133378.5947599828, 125473.5383486421, 130025.98512447061, 115367.0064614026, 129795.58525133549], [78490.29780909323, 92707.11611246197, 103910.7320974372, 107789.04011790971, 120872.31784628205, 115284.54092947184, 118202.89689740735, 118085.40642160186, 124140.81826605556, 122692.07503684679, 117252.66102822743, 120675.30672072934, 137537.22444512162, 137495.11437117928, 117016.97564069874], [77619.39642166405, 90423.79797389319, 100939.59955472914, 103346.69138873514, 109883.08505544119, 106777.22874857743, 104886.12070820456, 117424.36769671831, 114892.27751071201, 116296.41421384196, 109155.31496694672, 108226.37903993134, 111123.68170595953, 113022.19468784399, 112357.32291465849], [78470.67043115405, 92760.21545885908, 95081.97507478188, 102746.18205110666, 104713.1719827613, 113227.54216702632, 101373.06106305309, 111504.9743596122, 109726.5903445874, 113063.97712700789, 102376.96261839167, 101888.88418604362, 109098.81407453933, 108474.13256136463, 107627.44884671117], [74552.97120042786, 87228.68600319649, 91056.08379301122, 100427.45356061218, 102761.8452124054, 102249.07419729976, 99156.2305333922, 99595.17708223207, 99928.34436353008, 108176.36722408443, 97875.98899260578, 96876.29753546308, 97423.62443019633, 106054.04680319152, 105382.77228375446], [74035.1559878359, 86317.31424555818, 91753.52740343654, 95812.40898999384, 104631.83791145576, 99386.67758285085, 98199.15160975368, 98912.54775778757, 99328.20400370643, 107430.64474723415, 100272.09032282137, 103345.3961480339, 102447.23580077237, 101308.14082001978, 100514.45488523082], [73121.3405762402, 82193.47333660859, 90573.03878707223, 97262.9088376316, 93294.82306702073, 92188.0263555575, 96452.07655425028, 91361.05188400569, 98094.67385153078, 92574.28963750225, 95332.90484511912, 87738.24545867254, 86491.96473902525, 85858.08121840039, 89937.696718304], [72602.51513361235, 87151.14894807868, 90793.50848564376, 95728.827581918, 93209.63812414101, 89852.9444468629, 96157.35231746071, 101352.14146678192, 98904.29814491204, 89613.24678329115, 104693.3594194066, 104237.28709398572, 103431.39509082657, 102705.51980398131, 101935.12012984992], [74866.06570854658, 83269.32292709622, 84419.22177100889, 91568.43645250963, 95459.6828377933, 89801.31888483278, 94310.70604038534, 99090.10338244165, 96250.8313505513, 87524.57835461221, 86145.44188158035, 84732.11186497597, 83543.7680238307, 84023.32655891443, 83108.90559138315], [72242.2694386229, 80613.90513740586, 88527.18680853974, 86690.28227436397, 87957.29737999142, 91627.91815971294, 90868.51328039003, 92457.7556234103, 94465.8244787035, 87929.85746357299, 83837.03379954104, 82537.60495270551, 81086.03849478549, 78929.05770486502, 85033.35277765685], [69506.41111684628, 81287.94944061294, 87559.97027381671, 85405.72705393622, 87991.69903172244, 89751.3087729554, 86394.72933626034, 85434.02956449275, 89199.31490475805, 89214.33884117636, 88027.14223170254, 86533.99756220421, 85460.10087001947, 83931.96452758378, 82598.16517310216], [68808.12406639263, 80688.05023600599, 87688.26523466893, 87717.25189519968, 88409.21259196149, 86398.94376278754, 87275.50241602976, 85444.81387553559, 84004.51728534026, 79761.75184233929, 88855.40507832661, 83308.43449978545, 82056.54656376515, 80776.03451471073, 79633.0144588653], [72240.4526961897, 82553.3264345371, 86173.2440718652, 86770.9940858577, 87168.95550400806, 86471.66048718602, 85836.3353337355, 86696.32775915573, 80794.62089166112, 80748.3893881257, 77306.47852936239, 74722.69145092381, 73248.25313275415, 71682.26422721252, 69863.48843601717], [73644.83008190247, 82661.95894304139, 83276.8001442777, 88717.92409251186, 96548.0022139166, 91337.15988084649, 84616.00135571296, 85490.30673938595, 79683.9701991903, 79430.30063245875, 75998.41279594031, 73722.45115391073, 69366.32023432691, 67770.91810374313, 66370.16239948757], [71826.25576955367, 80362.77941057581, 82266.61571756394, 82682.19052120323, 87439.63469132654, 84822.33517204494, 84422.56141441906, 83892.64973476533, 82191.71889478299, 77544.79790548567, 74799.05327703185, 72850.44877830362, 68248.85570363369, 66732.92041716159, 65283.38552620941]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-var-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[70306.3175969055, 88817.57279059211, 98112.14361540039, 98493.05019247392, 107173.304779821, 95383.80303107566, 86040.51590475182, 93938.10464735914, 101361.91229345588, 105107.05631183887, 105649.75773284992, 99544.13912164724, 101904.72211802164, 89228.26274090336, 84031.03737290189], [72748.74257498397, 85865.81460749623, 85993.12574051155, 99807.78786015013, 102391.36303008065, 97134.12197996283, 104547.36499462067, 99293.26713826405, 99782.40465295615, 94239.32324985541, 81517.07645972351, 91421.80864049352, 96699.00884074104, 96101.8902382448, 101309.52286117624], [72110.7640692533, 84500.44360731587, 82346.0827588137, 95291.9402304712, 97677.71421073252, 87820.87105552827, 90729.31097194669, 99012.70386813514, 93743.99444717383, 89150.81807824576, 92783.79933582502, 96887.41552415717, 91433.29076311713, 90947.9878707222, 90257.99671084135], [71766.95132928279, 82859.78232722434, 88427.30499748135, 88235.4053824292, 86719.7343797613, 86560.04432932632, 83900.7442789535, 91133.91533448176, 94554.07307603807, 85070.2980199128, 82666.46044241017, 81780.67958594784, 82550.16811524805, 81876.52137113575, 71484.34831624181], [69481.35057431235, 77512.48616302137, 87649.02566464138, 91829.77301322753, 92430.44970491478, 93194.04052213606, 91722.07869602801, 91130.8767408163, 81381.96942867272, 85452.06860156343, 78997.09610014863, 77889.09498945902, 78298.5648913875, 76867.67910274191, 75868.04401776109], [69300.05350215486, 79709.28400258704, 82373.67856791937, 84529.64013905384, 82763.98177063576, 80340.44664398853, 84803.5209575811, 88995.37269295589, 83184.3197019919, 87215.21688671091, 80902.77209594467, 74631.84630816971, 73666.46511588858, 73233.41454344192, 72433.1792246317], [64712.45976517559, 77746.58222523492, 84815.36442994759, 86314.34622483692, 79140.15579753857, 81874.65845237281, 77648.35217318301, 85092.73496557857, 84094.10616787209, 81568.07514194565, 80166.87385650587, 75733.87232479897, 78038.01087057918, 76867.26820417785, 76421.14627894104], [68078.85760411937, 79107.5708851313, 83718.7141510314, 85630.19177741432, 81720.30962929335, 80225.22854459862, 84603.50777918048, 84394.86048407659, 78548.87907351322, 79542.58712818951, 80101.60826176454, 74294.11168525071, 73267.77137766556, 72119.6186236404, 71013.2887071598], [68208.98262013294, 76281.93273735858, 81477.05435476147, 83858.50298567794, 85697.47679492043, 84158.00977108351, 83292.42221938919, 82671.46303319008, 81096.9327037767, 77699.88951623435, 76398.02657819292, 75735.64077835337, 74542.68365806183, 69314.1252585494, 68164.32445258423], [59725.33119010454, 75333.68002686552, 76642.55711966965, 82743.73257318052, 81810.00664859048, 83500.05192691588, 79581.22194638093, 77216.5302535432, 74649.2527434531, 73893.34733987974, 74687.25977947898, 73900.08827805796, 72646.29901617527, 70883.95707862513, 69615.29414307125], [66464.56009042231, 75063.01443709928, 81765.96960031342, 77464.40891847687, 81395.33081635066, 81989.32232013482, 80550.61913483126, 78745.37492055396, 73675.12299115055, 72464.14568628305, 70559.43844938774, 72621.57356795044, 70625.70382149365, 69149.22808129303, 67831.12925976826], [66131.92529648448, 70461.95089520587, 81040.46064514524, 81891.93131261622, 80905.5269718472, 76485.62671811742, 76677.37654430009, 78725.7795318437, 76264.6006349463, 73639.69926617373, 72660.63461545637, 70318.21480898751, 68730.89997574642, 67471.95059296893, 66121.98733776531], [66798.27447341745, 73696.5076896288, 78893.61360812435, 80801.43702402349, 79952.13783247618, 79480.31649243477, 75625.9573460364, 74155.53678148768, 75760.13987350823, 66628.61491159882, 67297.38481414916, 58951.25018314563, 57628.98140558826, 56319.77178997644, 55104.52466589139], [65199.43669317977, 74449.22814845678, 77706.03777277505, 76410.99455911343, 80854.65569430539, 79776.15550214241, 74617.03169694218, 73109.99451558136, 74652.58878178618, 65576.87455737214, 66148.03785735162, 58013.268303679695, 59877.07922774113, 58505.04655816816, 57243.936351763994], [66145.97304121245, 74845.78715244308, 77263.02730206902, 74541.26112524176, 74555.82526352447, 77728.29024695119, 78206.80254600407, 74801.26671849056, 73076.17547154558, 71009.47699516793, 61971.97451073065, 60397.796333356135, 58894.33874416202, 57575.167147592365, 56274.15920672135]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-var-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[271903526.9856235, 14086177.659044575, 23107201.781574775, 554936810.4259281, 24061896.46331645, 1055619763.6211798, 1869131043.9420555, 1604568243.3596165, 569798776.2490357, 640563878.5079788, 674623135.8780196, 1161379291.43465, 627428952.132341, 1439178435.3198094, 1817306477.9093537], [10488922.775130972, 7423255.4990681885, 837959932.1760412, 19408882.038492464, 40968415.80236991, 526064035.8614343, 38049279.45489974, 566226797.4839246, 568817558.9810121, 1051311154.9908968, 1715679958.7754629, 1002113688.6811607, 594461347.4997118, 591393562.9651756, 52748278.19868851], [7107897.8402977465, 5992345.137940535, 767089784.2206709, 13639481.539856043, 32628164.860114645, 874634760.577995, 450666015.36541736, 33306989.815842055, 506492585.3869724, 935308168.3343067, 500352140.3938879, 52112574.905094385, 503031968.3558652, 508104893.3673212, 503215718.42880553], [14635430.713352442, 11375419.933464961, 11250914.591730138, 423912046.26852655, 856497191.9489262, 868468454.5353553, 795381833.4923143, 468733810.30999804, 40642525.71131314, 860194169.7033911, 784995991.0149866, 771620875.3425975, 816475206.1562295, 804422940.2510742, 1337110047.443672], [7731256.232072338, 325265462.2179229, 6218100.250467721, 16044883.332841087, 16303577.646196539, 13994140.644690594, 8771751.800862687, 24891578.10925066, 759211318.9330003, 430232310.627076, 717101521.6947322, 697407929.2536316, 720323972.594034, 714102421.4979024, 699144110.2538428], [7742914.130974801, 7123215.861005142, 361202462.499188, 384715851.662993, 782949624.7798389, 728206527.8372288, 392959528.93519133, 22738741.470094595, 386697133.3665402, 42839128.84035718, 385838561.0380102, 658409239.7591268, 643086448.0448191, 645528230.0822897, 635553152.8737414], [227826999.87656647, 5245906.292794714, 6948684.262100032, 10996923.40793659, 706099021.5401033, 361724877.2102084, 682144922.904548, 16411836.332095537, 30565936.93551963, 28082742.268985044, 31577944.048820324, 322725574.1221565, 20067973.07173027, 21267197.134822123, 30661156.84249586], [8126078.692456027, 9417513.067730399, 9187342.754917983, 11030921.727272041, 362401710.1618539, 343270195.7249842, 21717159.835387915, 44284481.94488518, 356237275.79319537, 21869732.067006566, 61883420.83808303, 349713801.31184447, 341400021.03838956, 335080222.5198144, 327778587.9578069], [6185563.430343639, 6042972.3929147925, 5324605.664088282, 11434580.832007993, 10898786.07407335, 10252844.731165478, 20351680.565305226, 37806065.45530765, 32278852.791899115, 19877110.98528656, 20651429.1427905, 21350678.048307933, 21385791.824307285, 270354018.1819259, 262605337.97257295], [402300852.5086517, 6183528.22448982, 316058688.8902379, 5955513.759893417, 5236070.456015761, 11341831.735526618, 348990234.59912324, 333514021.243316, 312925806.4774942, 304892124.0335975, 18693556.526603647, 19777529.205896545, 19003454.857336946, 13715862.752591055, 29647452.643440813], [3035598.8661428797, 8730413.921459021, 10746293.792159569, 320661061.48032707, 5865963.4490171615, 7763123.242303379, 9462891.636952171, 10274927.16025972, 305205039.3361324, 298128282.77788, 285026832.9444531, 25148553.420109455, 26507129.54709527, 26781393.11591684, 26532094.85298827], [3185100.690100304, 266709840.24250406, 10852070.753027234, 15513145.029534746, 9132976.398555746, 316946575.1576017, 323869415.3910029, 8576132.622481432, 9766776.375479478, 6974201.927048999, 22777411.550643906, 17011453.245212775, 18357128.4195402, 16996226.464308653, 17419153.804924715], [9761904.595436784, 8232137.649531809, 6687735.497339319, 14657196.09578656, 8470645.348448163, 8808494.306279164, 314271619.1102454, 301198531.7556181, 9565240.076732883, 503123305.58649224, 242614067.11028752, 617877220.9076537, 590779306.2353677, 564334269.5203438, 540213737.0290288], [9362202.972870188, 10424802.365032041, 10609848.463884395, 317446951.57811344, 28817317.453926396, 12817096.777365986, 304076815.8092589, 292371424.1978512, 8304667.3917812165, 486670844.0366133, 234244923.1846811, 598452323.6480973, 404268549.55423176, 386179115.55741465, 370065135.06548893], [6678765.368670135, 6904101.136143079, 5913403.388987118, 298195570.67096734, 301364656.93187255, 7770800.7895888295, 12690413.060269494, 14308249.346685465, 11745411.541179929, 6878933.866544594, 433760444.515484, 412135377.29859406, 390678722.98422855, 373905182.14705336, 357377629.3856]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-final-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[1.0, 881.0, 926.0, 1.0, 969.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [829.0, 887.0, 1.0, 955.0, 972.0, 1.0, 987.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 999.0], [825.0, 900.0, 1.0, 956.0, 974.0, 1.0, 1.0, 991.0, 1.0, 1.0, 1.0, 998.0, 1.0, 1.0, 1.0], [822.0, 899.0, 938.0, 1.0, 1.0, 1.0, 1.0, 1.0, 995.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [834.0, 1.0, 936.0, 961.0, 972.0, 986.0, 990.0, 994.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [819.0, 892.0, 1.0, 1.0, 1.0, 1.0, 1.0, 992.0, 1.0, 997.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 893.0, 939.0, 962.0, 1.0, 1.0, 1.0, 993.0, 995.0, 996.0, 995.0, 1.0, 998.0, 998.0, 999.0], [840.0, 896.0, 938.0, 965.0, 1.0, 1.0, 991.0, 993.0, 1.0, 997.0, 998.0, 1.0, 1.0, 1.0, 1.0], [839.0, 895.0, 937.0, 965.0, 977.0, 980.0, 991.0, 992.0, 996.0, 997.0, 998.0, 998.0, 998.0, 1.0, 1.0], [1.0, 896.0, 1.0, 961.0, 977.0, 988.0, 1.0, 1.0, 1.0, 1.0, 998.0, 998.0, 998.0, 999.0, 999.0], [840.0, 903.0, 935.0, 1.0, 975.0, 987.0, 992.0, 994.0, 1.0, 1.0, 1.0, 998.0, 999.0, 999.0, 999.0], [841.0, 1.0, 935.0, 959.0, 975.0, 1.0, 1.0, 995.0, 996.0, 997.0, 998.0, 998.0, 998.0, 999.0, 999.0], [844.0, 904.0, 938.0, 959.0, 976.0, 987.0, 1.0, 1.0, 994.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [835.0, 898.0, 927.0, 1.0, 976.0, 985.0, 1.0, 1.0, 994.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [841.0, 906.0, 941.0, 1.0, 1.0, 985.0, 991.0, 993.0, 996.0, 997.0, 1.0, 1.0, 1.0, 1.0, 1.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-final-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[868.0, 926.0, 949.0, 974.0, 986.0, 989.0, 998.0, 998.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [871.0, 929.0, 957.0, 978.0, 986.0, 996.0, 997.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [866.0, 929.0, 957.0, 978.0, 988.0, 994.0, 998.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [869.0, 929.0, 965.0, 979.0, 994.0, 994.0, 998.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [866.0, 927.0, 967.0, 978.0, 989.0, 995.0, 998.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [862.0, 931.0, 958.0, 982.0, 987.0, 996.0, 998.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [870.0, 931.0, 965.0, 981.0, 988.0, 995.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [867.0, 931.0, 969.0, 982.0, 989.0, 996.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [889.0, 933.0, 965.0, 976.0, 993.0, 994.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [874.0, 931.0, 964.0, 979.0, 990.0, 996.0, 997.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [878.0, 932.0, 966.0, 983.0, 990.0, 996.0, 999.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [878.0, 930.0, 966.0, 981.0, 993.0, 996.0, 999.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [882.0, 930.0, 963.0, 982.0, 993.0, 996.0, 999.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [882.0, 931.0, 965.0, 985.0, 991.0, 996.0, 997.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], [874.0, 936.0, 965.0, 981.0, 990.0, 997.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-final-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[797.65, 906.55, 940.95, 915.95, 979.25, 887.55, 795.05, 846.8, 947.75, 948.9, 949.3, 899.6, 949.45, 849.65, 799.5], [844.4, 909.85, 850.05, 966.5, 979.2, 939.55, 993.2, 946.05, 947.35, 898.7, 799.5, 899.45, 949.75, 949.85, 999.8], [846.95, 911.6, 851.85, 966.85, 981.3, 890.1, 944.25, 996.55, 948.05, 899.1, 949.3, 999.6, 949.85, 949.9, 950.05], [846.45, 910.0, 947.2, 921.65, 884.45, 890.7, 895.15, 947.35, 997.95, 898.95, 899.15, 899.45, 899.55, 899.8, 800.15], [850.25, 866.85, 950.15, 968.55, 981.8, 989.75, 994.0, 996.5, 898.2, 948.65, 899.15, 899.45, 899.6, 900.0, 900.1], [846.7, 912.75, 902.05, 923.9, 884.0, 889.75, 944.45, 995.75, 948.0, 998.6, 949.2, 899.7, 899.9, 900.0, 900.1], [807.7, 914.05, 950.75, 971.95, 884.9, 940.5, 895.05, 996.75, 998.3, 998.85, 999.1, 949.6, 999.75, 999.8, 999.9], [853.95, 913.0, 951.4, 973.15, 934.0, 940.75, 994.5, 996.65, 948.25, 998.7, 999.5, 949.85, 950.0, 950.0, 950.05], [858.15, 915.6, 950.7, 971.25, 983.65, 989.4, 994.5, 996.65, 998.25, 998.7, 999.3, 999.65, 999.8, 949.9, 949.95], [768.4, 914.5, 903.45, 970.35, 983.2, 990.5, 944.0, 947.15, 948.35, 948.95, 999.3, 999.65, 999.8, 999.85, 999.95], [855.9, 916.45, 952.35, 924.55, 983.0, 991.1, 995.0, 997.4, 948.45, 949.25, 949.45, 999.7, 999.85, 999.95, 999.95], [856.35, 871.6, 952.35, 974.0, 984.3, 942.2, 945.8, 997.45, 998.25, 998.9, 999.4, 999.55, 999.65, 999.85, 999.85], [860.5, 917.2, 952.4, 974.05, 984.3, 991.85, 945.8, 947.0, 998.25, 899.0, 949.35, 849.95, 850.1, 850.1, 850.15], [855.35, 914.85, 951.75, 924.35, 983.45, 991.8, 945.0, 947.0, 998.3, 899.0, 949.35, 850.0, 899.85, 899.95, 900.05], [859.75, 920.9, 951.75, 925.15, 936.2, 990.4, 995.3, 996.7, 998.05, 998.85, 899.7, 899.75, 899.85, 899.95, 900.05]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Recovered-final-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[33530.22749999999, 123.04749999999999, 28.747500000000002, 44096.84749999999, 22.7875, 87337.2475, 157635.6475, 126246.16, 47177.1875, 47290.89, 47331.61, 89720.84000000001, 47345.5475, 127095.72750000001, 159401.15], [146.54, 67.62750000000003, 80139.3475, 30.55, 13.959999999999999, 46384.447499999995, 5.36, 47009.64750000001, 47138.22749999999, 89541.70999999999, 159401.25, 89690.8475, 47375.4875, 47385.42749999999, 0.16000000000000003], [119.74750000000002, 64.84, 80484.9275, 28.127500000000005, 11.71, 87843.19, 46835.0875, 5.147500000000001, 47208.247500000005, 89621.49000000002, 47330.71000000001, 0.4400000000000002, 47385.22749999999, 47390.19, 47405.0475], [173.44749999999996, 59.6, 43.25999999999999, 44626.12750000001, 86745.6475, 87859.21000000002, 88838.82749999998, 47139.32750000001, 2.3475000000000006, 89491.3475, 89630.82749999998, 89690.94749999998, 89610.9475, 89660.76, 159460.72749999998], [97.2875, 39521.527500000004, 54.8275, 25.047500000000003, 16.76, 5.6875, 5.4, 3.55, 89441.95999999999, 47265.9275, 89630.82749999998, 89690.94749999998, 89620.94, 89800.2, 89820.09000000001], [149.31000000000003, 105.1875, 42754.3475, 44852.08999999999, 86650.0, 87771.6875, 46852.04749999999, 2.4875, 47202.0, 0.9400000000000001, 47321.16, 89740.41, 89780.29000000001, 89800.2, 89820.09000000001], [34357.310000000005, 84.74750000000002, 46.9875, 25.6475, 86817.59, 46465.55, 88821.04750000002, 3.8875, 1.31, 1.1275000000000002, 1.2900000000000003, 47360.54, 0.2875, 0.25999999999999995, 0.09], [54.34750000000001, 54.7, 57.74000000000001, 19.627499999999998, 45827.6, 46492.1875, 4.25, 3.9275000000000007, 47226.5875, 1.01, 0.35, 47385.22749999999, 47400.1, 47400.1, 47405.0475], [191.4275, 103.34, 50.00999999999999, 10.7875, 15.927499999999998, 11.939999999999998, 4.65, 4.027500000000001, 1.3875, 1.01, 0.5100000000000001, 0.32749999999999996, 0.25999999999999995, 47390.19, 47395.147499999985], [65545.84000000001, 60.65, 42911.1475, 21.127499999999998, 12.060000000000002, 5.55, 46805.6, 47118.1275, 47236.927500000005, 47296.0475, 0.5100000000000001, 0.32749999999999996, 0.25999999999999995, 0.12750000000000003, 0.047500000000000014], [106.98999999999998, 76.54750000000001, 61.8275, 44914.747500000005, 14.5, 7.19, 2.6, 2.34, 47247.0475, 47325.9875, 47345.747500000005, 0.41000000000000003, 0.12750000000000003, 0.047500000000000014, 0.047500000000000014], [119.22749999999999, 39955.03999999999, 54.927499999999995, 34.7, 18.810000000000002, 46630.759999999995, 46983.76, 0.8475000000000001, 0.9875, 0.79, 0.44000000000000006, 0.4475000000000001, 0.32749999999999996, 0.12750000000000003, 0.12750000000000003], [114.75, 50.459999999999994, 49.64, 36.2475, 18.110000000000003, 7.727499999999997, 46983.86, 47103.9, 2.1875, 89601.6, 47335.527500000004, 127185.34749999999, 127230.18999999999, 127230.18999999999, 127245.12749999999], [114.62749999999998, 73.92750000000001, 77.0875, 44901.1275, 15.147500000000003, 8.56, 46907.2, 47103.9, 2.31, 89601.6, 47335.527500000004, 127200.3, 89770.32749999998, 89790.24749999998, 89810.14749999999], [68.8875, 65.18999999999998, 28.9875, 44969.8275, 46037.76, 14.239999999999998, 4.3100000000000005, 3.210000000000001, 1.3474999999999997, 0.6275000000000002, 89740.71, 89750.6875, 89770.32749999998, 89790.24749999998, 89810.14749999999]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Recovered ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-min-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-min-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[999.0, 0.0, 0.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 999.0, 0.0, 0.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 1.0], [0.0, 0.0, 999.0, 0.0, 0.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0], [0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 0.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0, 999.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 0.0, 0.0, 999.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0], [999.0, 0.0, 999.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 999.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0], [0.0, 999.0, 0.0, 0.0, 0.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 0.0, 999.0, 0.0, 0.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 0.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-min-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[49.95, 0.0, 0.0, 49.95, 0.0, 99.9, 199.8, 149.85, 50.0, 50.05, 50.1, 100.1, 50.3, 150.3, 200.45], [0.0, 0.0, 99.9, 0.0, 0.0, 49.95, 0.0, 49.95, 49.95, 99.9, 199.8, 99.9, 49.95, 49.95, 0.05], [0.0, 0.0, 99.9, 0.0, 0.0, 99.9, 49.95, 0.0, 49.95, 99.9, 49.95, 0.0, 49.95, 49.95, 49.95], [0.0, 0.0, 0.0, 49.95, 99.9, 99.85, 99.9, 49.95, 0.0, 99.85, 99.9, 99.9, 99.85, 99.85, 199.7], [0.0, 49.95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 99.9, 49.95, 99.9, 99.9, 99.85, 99.9, 99.9], [0.0, 0.0, 49.95, 49.95, 99.9, 99.9, 49.95, 0.0, 49.95, 0.0, 49.95, 99.9, 99.9, 99.9, 99.9], [49.95, 0.0, 0.0, 0.0, 99.9, 49.95, 99.9, 0.0, 0.0, 0.0, 0.0, 49.95, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 49.95, 49.95, 0.0, 0.0, 49.95, 0.0, 0.0, 49.95, 49.95, 49.95, 49.95], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 49.95, 49.95], [99.9, 0.0, 49.95, 0.0, 0.0, 0.0, 49.95, 49.95, 49.95, 49.95, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 49.95, 0.0, 0.0, 0.0, 0.0, 49.95, 49.95, 49.95, 0.0, 0.0, 0.0, 0.0], [0.0, 49.95, 0.0, 0.0, 0.0, 49.95, 49.95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 49.95, 49.95, 0.0, 99.9, 49.95, 149.85, 149.85, 149.85, 149.85], [0.0, 0.0, 0.0, 49.95, 0.0, 0.0, 49.95, 49.95, 0.0, 99.9, 49.95, 149.85, 99.9, 99.9, 99.9], [0.0, 0.0, 0.0, 49.95, 49.95, 0.0, 0.0, 0.0, 0.0, 0.0, 99.9, 99.9, 99.9, 99.9, 99.9]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-min-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[47405.047499999986, 0.0, 0.0, 47405.047499999986, 0.0, 89820.09000000001, 159680.16000000006, 127245.12749999999, 47400.1, 47395.147499999985, 47390.19, 89780.29, 47370.409999999996, 127110.70999999999, 159420.94749999998], [0.0, 0.0, 89820.09000000001, 0.0, 0.0, 47405.047499999986, 0.0, 47405.047499999986, 47405.0475, 89820.09000000001, 159680.16000000006, 89820.09000000001, 47405.047499999986, 47405.047499999986, 0.04749999999999999], [0.0, 0.0, 89820.09000000001, 0.0, 0.0, 89820.09000000001, 47405.047499999986, 0.0, 47405.0475, 89820.09000000001, 47405.047499999986, 0.0, 47405.0475, 47405.0475, 47405.0475], [0.0, 0.0, 0.0, 47405.047499999986, 89820.09000000001, 89730.22749999998, 89820.09000000001, 47405.047499999986, 0.0, 89730.2275, 89820.09000000001, 89820.09000000001, 89730.22749999998, 89730.22749999998, 159520.40999999997], [0.0, 47405.04749999999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 89820.09000000001, 47405.047499999986, 89820.09000000001, 89820.09000000001, 89730.22749999998, 89820.09000000001, 89820.09000000001], [0.0, 0.0, 47405.04749999999, 47405.047499999986, 89820.09000000001, 89820.09000000001, 47405.047499999986, 0.0, 47405.047499999986, 0.0, 47405.047499999986, 89820.09000000001, 89820.09000000001, 89820.09000000001, 89820.09000000001], [47405.047499999986, 0.0, 0.0, 0.0, 89820.09000000001, 47405.04749999999, 89820.09000000001, 0.0, 0.0, 0.0, 0.0, 47405.04749999999, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 0.0, 0.0, 47405.047499999986, 0.0, 0.0, 47405.0475, 47405.0475, 47405.0475, 47405.0475], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986], [89820.09000000001, 0.0, 47405.047499999986, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 47405.047499999986, 47405.047499999986, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 47405.047499999986, 0.0, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 47405.047499999986, 0.0, 0.0, 0.0, 0.0], [0.0, 47405.04749999999, 0.0, 0.0, 0.0, 47405.04749999999, 47405.047499999986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 0.0, 89820.09000000001, 47405.04749999999, 127245.12749999999, 127245.12749999999, 127245.12749999999, 127245.12749999999], [0.0, 0.0, 0.0, 47405.047499999986, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 0.0, 89820.09000000001, 47405.04749999999, 127245.12749999999, 89820.09000000001, 89820.09000000001, 89820.09000000001], [0.0, 0.0, 0.0, 47405.0475, 47405.047499999986, 0.0, 0.0, 0.0, 0.0, 0.0, 89820.09000000001, 89820.09000000001, 89820.09000000001, 89820.09000000001, 89820.09000000001]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-max-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-max-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-max-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-max-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-avg-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[77.14713216957605, 73.84538653366583, 69.38403990024938, 71.34912718204488, 71.74812967581047, 69.10972568578553, 79.18952618453865, 77.10473815461347, 71.53366583541147, 72.1072319201995, 79.39900249376558, 81.07980049875312, 77.45885286783043, 78.9426433915212, 78.05486284289277], [64.53117206982543, 61.51620947630923, 65.55112219451371, 64.9002493765586, 63.930174563591024, 65.35910224438902, 70.16209476309227, 66.89775561097257, 69.80299251870325, 68.26683291770574, 66.91770573566085, 66.96009975062344, 70.90523690773067, 71.79800498753117, 74.51870324189527], [53.261845386533665, 54.98753117206982, 58.19201995012469, 60.281795511221944, 52.1571072319202, 58.81546134663342, 53.29925187032419, 61.15960099750623, 56.403990024937656, 54.97256857855361, 57.88279301745636, 58.53615960099751, 58.54862842892768, 58.71321695760599, 58.84788029925187], [54.4788029925187, 51.915211970074814, 50.45137157107232, 52.86533665835412, 55.204488778054866, 51.50374064837905, 52.266832917705734, 54.109725685785534, 49.775561097256855, 50.399002493765586, 53.082294264339154, 52.895261845386536, 52.84788029925187, 54.51620947630923, 55.05486284289277], [41.907730673316706, 42.239401496259354, 43.932668329177055, 41.9501246882793, 39.70822942643392, 48.89775561097257, 49.224438902743145, 44.86284289276808, 40.87032418952619, 45.22693266832918, 47.32917705735661, 48.089775561097255, 47.93516209476309, 44.17705735660848, 44.19201995012469], [42.261845386533665, 40.17206982543641, 45.68329177057357, 41.246882793017456, 42.85286783042394, 44.25935162094763, 43.067331670822945, 46.438902743142144, 42.55361596009975, 41.35411471321696, 38.86034912718205, 38.775561097256855, 40.34413965087282, 40.37406483790524, 40.236907730673316], [39.30922693266833, 37.566084788029926, 39.44638403990025, 37.738154613466335, 40.583541147132166, 36.97506234413965, 42.067331670822945, 40.65087281795511, 35.80548628428928, 35.70573566084788, 39.244389027431424, 39.5785536159601, 39.48129675810474, 39.37406483790524, 39.32418952618454], [32.745635910224436, 35.68827930174564, 35.12967581047381, 35.46384039900249, 35.51870324189526, 38.19950124688279, 33.256857855361595, 35.67331670822943, 36.69077306733167, 35.72069825436409, 32.089775561097255, 32.13216957605985, 35.49376558603491, 35.433915211970074, 35.53615960099751], [34.34413965087282, 33.96259351620947, 34.42643391521197, 30.905236907730675, 32.55860349127182, 35.97007481296758, 31.00498753117207, 33.35162094763092, 33.85286783042394, 33.30922693266833, 31.738154613466335, 33.35910224438903, 33.63341645885287, 35.65835411471322, 36.16957605985037], [31.773067331670823, 32.53865336658354, 29.67082294264339, 34.02493765586035, 31.07231920199501, 29.25436408977556, 30.154613466334165, 30.763092269326684, 31.389027431421447, 32.7930174563591, 29.788029925187033, 30.640897755610972, 31.256857855361595, 32.880299251870326, 30.82793017456359], [30.359102244389028, 28.027431421446384, 28.75062344139651, 27.28428927680798, 28.48877805486284, 27.179551122194514, 28.23441396508728, 29.104738154613468, 28.523690773067333, 28.503740648379054, 28.48877805486284, 28.698254364089774, 28.69077306733167, 28.80798004987531, 28.768079800498754], [25.374064837905237, 26.967581047381547, 27.159600997506235, 25.99501246882793, 28.91271820448878, 24.877805486284288, 27.58852867830424, 24.508728179551124, 27.683291770573565, 28.81296758104738, 25.960099750623442, 26.286783042394013, 25.543640897755612, 28.049875311720697, 28.01496259351621], [24.92269326683292, 26.139650872817956, 24.508728179551124, 24.35411471321696, 24.069825436408976, 23.600997506234414, 26.109725685785538, 29.246882793017456, 26.952618453865338, 26.58852867830424, 27.800498753117207, 27.059850374064837, 27.25935162094763, 27.31920199501247, 27.23940149625935], [26.623441396508728, 24.783042394014963, 23.366583541147133, 21.75062344139651, 25.366583541147133, 27.76059850374065, 26.743142144638405, 27.28428927680798, 25.33416458852868, 25.246882793017456, 26.286783042394013, 25.785536159600998, 25.32917705735661, 25.31920199501247, 25.301745635910226], [23.114713216957608, 25.76558603491272, 25.06733167082294, 23.074812967581046, 22.44638403990025, 21.521197007481298, 21.518703241895263, 23.82793017456359, 24.7356608478803, 22.743142144638405, 22.054862842892767, 22.012468827930174, 24.044887780548628, 24.16708229426434, 24.134663341645886]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-avg-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[999.0, 149.49376558603493, 146.97256857855362, 999.0, 120.85536159600997, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [96.55361596009975, 109.65336658354114, 999.0, 116.24937655860349, 137.03740648379053, 999.0, 113.44139650872818, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 115.9925187032419], [89.60847880299252, 90.01995012468828, 999.0, 98.9426433915212, 104.3067331670823, 999.0, 999.0, 117.24189526184539, 999.0, 999.0, 999.0, 97.62593516209476, 999.0, 999.0, 999.0], [137.214463840399, 99.68329177057356, 89.03241895261846, 999.0, 999.0, 999.0, 999.0, 999.0, 92.20199501246883, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [80.79052369077307, 999.0, 72.83291770573567, 85.00997506234414, 84.61346633416458, 84.01246882793018, 73.10473815461347, 79.03241895261846, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [70.0, 73.95261845386534, 999.0, 999.0, 999.0, 999.0, 999.0, 72.70822942643392, 999.0, 89.78054862842893, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 62.46134663341646, 58.748129675810475, 75.10972568578553, 999.0, 999.0, 999.0, 63.750623441396506, 73.9650872817955, 66.50124688279301, 74.9501246882793, 999.0, 57.251870324189525, 57.85037406483791, 65.94014962593516], [57.81296758104738, 68.91521197007481, 58.753117206982544, 69.5286783042394, 999.0, 999.0, 62.63341645885287, 73.82793017456359, 999.0, 56.733167082294266, 88.48877805486285, 999.0, 999.0, 999.0, 999.0], [60.54364089775561, 52.95511221945137, 51.2069825436409, 65.38154613466334, 64.56359102244389, 58.591022443890274, 57.82793017456359, 68.70822942643392, 71.00997506234414, 52.77805486284289, 54.35411471321696, 54.795511221945134, 54.89775561097257, 999.0, 999.0], [999.0, 58.29925187032419, 999.0, 48.16957605985037, 48.45635910224439, 52.09725685785536, 999.0, 999.0, 999.0, 999.0, 50.571072319201996, 50.85286783042394, 51.3715710723192, 50.64339152119701, 62.33416458852868], [59.43142144638404, 55.605985037406484, 52.261845386533665, 999.0, 47.957605985037404, 49.66334164588529, 47.01995012468828, 48.566084788029926, 999.0, 999.0, 999.0, 58.952618453865334, 58.7930174563591, 58.69077306733167, 58.70074812967581], [56.05985037406484, 999.0, 49.261845386533665, 47.17456359102244, 41.39650872817955, 999.0, 999.0, 42.97007481296758, 45.17955112219451, 39.900249376558605, 56.728179551122196, 51.38403990024938, 51.53865336658354, 51.51371571072319, 51.418952618453865], [43.561097256857856, 45.67581047381546, 57.15211970074813, 44.82044887780549, 39.204488778054866, 41.13715710723192, 999.0, 999.0, 44.276807980049874, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [45.45386533665835, 46.96508728179551, 38.042394014962596, 999.0, 60.82294264339152, 52.94513715710723, 999.0, 999.0, 42.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [41.45137157107232, 48.057356608478806, 46.1072319201995, 999.0, 999.0, 39.057356608478806, 44.750623441396506, 42.5211970074813, 43.728179551122196, 38.65087281795511, 999.0, 999.0, 999.0, 999.0, 999.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-avg-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[136.18054862842897, 92.90773067331669, 99.23142144638405, 145.8004987531172, 99.97805486284288, 183.4625935162095, 274.7618453865337, 234.47381546134656, 136.82593516209477, 145.53092269326686, 147.7650872817955, 192.719825436409, 143.61807980049875, 231.8551122194514, 278.6562344139651], [77.80236907730674, 79.53179551122196, 178.7940149625935, 86.19413965087281, 86.45137157107231, 128.35299251870325, 86.99401496259352, 132.64326683291773, 134.46658354114712, 180.34725685785537, 268.33266832917707, 177.77967581047378, 134.3165835411471, 134.71246882793017, 90.53541147132168], [70.88254364089775, 73.04351620947631, 165.1755610972569, 72.5281795511222, 73.36820448877805, 163.98852867830425, 113.7009975062344, 74.9360349127182, 122.05810473815464, 170.0068578553616, 123.18765586034912, 77.55847880299254, 124.39127182044888, 125.17980049875311, 125.55423940149626], [68.10137157107232, 66.14675810473815, 63.237032418952616, 110.13416458852866, 161.54139650872816, 160.85124688279296, 155.6725685785536, 115.28516209476308, 67.77082294264338, 162.31920199501243, 159.97630922693267, 160.28802992518703, 163.13329177057355, 163.64526184538653, 255.63279301745632], [56.15448877805486, 107.17219451371572, 57.237905236907736, 59.45860349127182, 58.427680798004985, 60.20561097256858, 58.437406483790525, 59.35361596009974, 153.80461346633416, 108.26571072319203, 153.561970074813, 153.7351620947631, 156.1930174563591, 155.36009975062345, 155.51334164588525], [55.10024937655861, 54.82655860349128, 103.28154613466333, 101.09800498753117, 151.2496259351621, 147.37206982543643, 100.76334164588529, 54.99675810473815, 102.01645885286783, 56.46633416458853, 102.53877805486283, 148.51957605985038, 148.7428927680798, 149.72256857855362, 150.06309226932666], [96.63728179551121, 47.190773067331676, 48.87705735660848, 47.84688279301746, 145.64725685785538, 95.6926433915212, 144.68266832917706, 49.73778054862842, 50.39975062344139, 48.468578553615956, 48.593640897755606, 97.23416458852867, 49.34214463840399, 49.38503740648379, 50.50311720698255], [47.65610972568579, 49.30872817955112, 45.69364089775561, 46.01832917705736, 93.99152119700749, 92.16807980049876, 45.45187032418952, 47.24551122194514, 94.50785536159603, 44.22605985037406, 47.52344139650874, 94.36633416458854, 94.88815461346634, 95.02618453865337, 95.03403990024938], [42.56895261845387, 40.46770573566085, 41.793017456359095, 41.817456359102245, 44.20324189526184, 42.39102244389028, 42.74713216957606, 44.27942643391522, 44.062468827930175, 41.190897755610976, 41.56471321695761, 42.80536159600997, 43.0640897755611, 90.55423940149628, 90.7130922693267], [135.54763092269326, 38.954987531172065, 87.77643391521195, 39.58216957605985, 37.191147132169576, 41.436783042394026, 91.70436408977554, 89.73017456359102, 87.85062344139651, 89.18665835411471, 38.84663341645886, 40.00274314214464, 40.305236907730674, 39.71920199501246, 40.12768079800499], [37.78254364089776, 36.83665835411472, 38.42518703241895, 82.21945137157107, 35.02855361596009, 37.83241895261846, 37.363216957605985, 37.258354114713214, 86.26845386533665, 86.82680798004989, 86.2917705735661, 38.211097256857855, 37.38478802992519, 37.50847880299252, 37.60137157107232], [36.197007481296765, 80.98952618453866, 36.45399002493765, 35.33104738154613, 32.8422693266833, 81.58790523690773, 84.24675810473815, 35.25960099750623, 34.28965087281796, 33.03852867830424, 34.31820448877805, 33.42942643391522, 33.5285536159601, 33.8935162094763, 33.91458852867831], [33.281670822942644, 31.357605985037406, 32.76221945137157, 32.71296758104738, 30.874812967581043, 31.41695760598504, 82.42094763092271, 83.18391521197009, 34.23665835411471, 130.90536159600998, 80.79912718204488, 177.683042394015, 177.72443890274315, 177.76371571072318, 177.74663341645885], [31.54750623441397, 32.09301745635911, 31.060224438902747, 80.02668329177055, 32.252119700748125, 32.3211970074813, 80.97418952618453, 81.49014962593517, 32.34700748129676, 129.2659600997506, 79.14551122194514, 176.20735660847882, 127.98566084788028, 128.0023690773067, 128.01184538653368], [30.196633416458848, 32.95224438902743, 30.960224438902742, 78.61608478802992, 78.02044887780549, 29.712718204488777, 32.79713216957606, 30.19164588528678, 30.482418952618453, 30.10960099750623, 126.62506234413964, 126.60985037406485, 126.5291770573566, 126.66184538653367, 126.68316708229426]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-avg-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[39296.362105583925, 284.5056740940667, 301.6212123058936, 38813.15596358232, 178.63761892028035, 74122.8751130279, 131202.78518261702, 103359.50837246035, 39232.74584150597, 38546.100630530906, 38441.8627866742, 72419.73498191863, 38760.32563620563, 103954.27711575176, 129871.98314206689], [87.89451425986155, 108.42542762482819, 74975.98246926322, 189.8283861885187, 257.61934440706216, 40068.00050091418, 176.04658018295902, 39686.81861211995, 39532.542105397355, 74699.72251470762, 133638.02228928925, 75149.16243821556, 39671.711898853246, 39632.28773645687, 136.64035553261482], [67.61412484996985, 82.95314673105267, 77413.33100565296, 96.10064713527903, 174.14707574890707, 77571.01789317232, 41317.69678789312, 137.08924712843822, 40612.60816729996, 76517.55118430543, 40509.217989238256, 143.5954275626395, 40424.198784149354, 40369.807928992974, 40333.4886486247], [309.2338488411141, 124.27854383679205, 104.03169723757938, 41640.160171640724, 78038.1767730922, 78128.83411873993, 79057.25574287472, 41197.733118746146, 117.58321832575669, 77859.73715648534, 78298.06537614815, 78241.88737538944, 77697.61362894198, 77597.93390207461, 138117.96721965348], [67.76546692806637, 41979.68461170951, 48.58781251360377, 119.4776362709187, 101.53308530419585, 60.068249249071854, 31.6141338673267, 79.9913791580898, 79444.39525455376, 41883.345243173244, 79486.08767313325, 79450.66993277404, 78934.11892426045, 79209.10227200077, 79176.98321109633], [62.09118823887911, 77.09262596314703, 42260.36869602802, 42491.83449176312, 79966.31995814703, 80625.21760225369, 42504.01871499555, 58.061718583839635, 42397.89261783198, 119.04354948041369, 42376.51205308114, 80454.17764023543, 80410.00521197007, 80248.89229723386, 80186.71140732957], [42907.612174349044, 42.79943252840467, 32.20892289227058, 65.25286123842514, 80947.72415250838, 42982.87086266565, 81136.34611344145, 35.85547121908445, 80.69767109657279, 66.1945124097487, 68.52747773645686, 42837.25283791768, 33.60009863122742, 34.22527185776208, 52.37777680176121], [48.4573640089303, 51.69066212274798, 46.35050421017283, 55.73441164855941, 43149.18452024552, 43300.36976971537, 57.51700026741128, 111.08133125726829, 43137.77043505637, 31.598612119949497, 142.53765642004714, 43203.66354742819, 43147.550548986015, 43136.51904185918, 43135.90098150821], [38.78517190502546, 25.992816260471017, 20.99739242915156, 65.00230943837411, 52.12166124588778, 31.979909080167424, 46.57636295794181, 90.66763917823894, 73.41619919963183, 27.825053622178974, 42.69963400414176, 46.4053584710294, 45.77967120851238, 43471.48266918427, 43456.85608327996], [82858.00509287877, 37.261529763496505, 43737.950329460014, 17.703591069085384, 21.858765352827415, 37.022794183493886, 43379.108007708295, 43562.283114906, 43736.22072306765, 43603.339810868725, 37.065898532969314, 40.858926188269976, 40.32012823303337, 25.633791705275463, 59.57305837650263], [38.7219032219949, 45.39679324133557, 36.77628590618217, 44247.888784895615, 25.99016515755499, 25.244114526650954, 28.470895874403766, 29.16173991455276, 43893.43861498062, 43840.669609937126, 43894.38696090198, 51.99923214096926, 53.03359935572539, 52.83028084402459, 52.131273608373064], [60.919470650058145, 44374.02076516936, 27.994094237598016, 39.71568079489555, 11.767835943184433, 44310.98265488088, 44071.232332183885, 23.99426054564337, 22.672022733067575, 12.634894357000269, 42.911123935796425, 29.4315095055379, 30.068683947861025, 26.067020167785024, 25.635164504573975], [23.64242042959932, 25.536903004334555, 43.86650659821767, 33.0623167144483, 14.2323565151958, 15.446998215185227, 44244.40374475284, 44162.968969020716, 22.89294836474897, 83761.08410114054, 44382.61506736587, 119048.82935858607, 119036.47021007331, 119025.25691810061, 119030.21516619921], [21.049129964987777, 21.68826132922059, 15.024115070801798, 44481.80953171933, 78.79966163145752, 30.105492254401405, 44379.724414198296, 44324.78977274706, 20.03446513081386, 84073.7717136554, 44541.836290990104, 119476.13327732726, 84305.9140707303, 84302.48317639505, 84300.57121527541], [18.906123267268246, 25.886094162971624, 24.422206624958804, 44603.92793420128, 44667.87972811115, 22.635419307093862, 37.66075539020279, 32.17822294326528, 26.819175549281415, 13.572386661152601, 84573.63864545306, 84576.67312795008, 84586.77538236702, 84561.48273854019, 84557.14998008407]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-var-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 55237.003526097484, 51886.30139116051, 0.0, 53355.73456632733, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [49265.396160471624, 46473.75597166684, 0.0, 49877.80052362858, 49143.94026156555, 0.0, 52670.79417416558, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 56469.90052300668], [40840.16335719305, 42726.98986946599, 0.0, 46380.641289544204, 39387.523945746616, 0.0, 0.0, 47707.57053749666, 0.0, 0.0, 0.0, 44359.126497969526, 0.0, 0.0, 0.0], [43125.97024894126, 40472.840691289224, 39330.846139016554, 0.0, 0.0, 0.0, 0.0, 0.0, 38073.67032543331, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [32938.68225943868, 0.0, 33986.10768589748, 32284.172076044288, 30402.15676519424, 38024.061865286894, 38698.877307976945, 34661.69440488555, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [33488.58230981151, 31376.52650170087, 0.0, 0.0, 0.0, 0.0, 0.0, 36596.88965864641, 0.0, 31998.188817233724, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 29528.29052058133, 31535.57380862059, 29732.697023028468, 0.0, 0.0, 0.0, 32120.985342130938, 27450.151690598952, 27364.83610176553, 30603.416583230213, 0.0, 30688.349400812192, 30618.692993202774, 30569.93480140049], [25912.843029583142, 28611.990112001793, 27534.995653012113, 28117.26614884234, 0.0, 0.0, 26160.619809578293, 28329.791033637837, 0.0, 28106.241192529884, 24726.75004508678, 0.0, 0.0, 0.0, 0.0], [27596.33044570619, 27297.656954869683, 27534.20468778178, 24320.659349133406, 26197.68297460836, 28885.181149370957, 24496.16955118437, 26597.52972929272, 27050.983339655842, 26272.68243356695, 24763.50001554716, 26112.953339842425, 26325.518983090897, 0.0, 0.0], [0.0, 26001.425563273868, 0.0, 27688.20885442254, 24854.36135347417, 23004.44901462055, 0.0, 0.0, 0.0, 0.0, 23350.067288138755, 24104.629150316225, 24571.333026535904, 26028.36971163115, 24318.177374518822], [24810.23513535363, 22444.724933302645, 23271.274469686134, 0.0, 22742.998003743756, 21476.86052947432, 22316.792930392225, 23207.55002767396, 0.0, 0.0, 0.0, 22752.963812414102, 22731.89440364176, 22792.195048538248, 22743.953694317814], [20076.63314282871, 0.0, 22036.94709610014, 20853.750598565923, 23525.989888122585, 0.0, 0.0, 19281.16264202337, 22248.366030062003, 23325.62836052016, 20566.79142542646, 20821.526234289584, 20097.455078015686, 22458.216963824852, 22428.72795567193], [19860.90424810792, 21149.68124576339, 19696.359649504666, 19461.794802271128, 19227.296870044338, 18704.07521097506, 0.0, 0.0, 21804.563839777114, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [22212.139999129366, 20098.863153836104, 18782.82571625798, 0.0, 20696.5015267318, 22849.384083432305, 0.0, 0.0, 20532.53671308014, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [18848.695070304293, 21027.78544909546, 20610.636364201702, 0.0, 0.0, 17355.810647943727, 17247.376832233622, 19387.459170030033, 20389.241845510904, 18414.305595114452, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-var-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[91792.46851698685, 114179.55669429917, 111593.34338716802, 131421.23983059806, 93427.8743415775, 100318.38544536414, 85742.8828800816, 101689.53166957918, 92791.85981430464, 104182.69610263615, 108945.85211534752, 98310.52391465228, 105312.04012412859, 86750.87653683746, 104508.15971293711], [76031.05011784751, 86633.79755101026, 97514.15971293712, 91135.79317292804, 106823.50732893455, 93559.74737719294, 88203.46354811228, 93530.49194967691, 98057.93052282014, 98147.30466850329, 87162.30285881307, 92588.30062002104, 117269.3810361876, 117003.25063898857, 88557.76303629953], [72271.360426863, 71666.28887880048, 87654.81375115826, 79296.19870523195, 83968.69643845498, 81596.10693963346, 67693.88828427685, 93164.2282697247, 81877.89580910567, 85661.41987922961, 77335.12063979702, 77152.37877873894, 79391.06124961909, 83649.02882444763, 83594.08657906356], [109484.6771972811, 81047.36852382758, 71832.6049340489, 66373.16017935214, 75165.71049931282, 82288.85713397306, 61025.95812215099, 78089.47858533218, 74158.46044489773, 83113.46362273867, 70726.85964639523, 70440.52290719585, 79560.15496172286, 79278.57784466515, 79079.842849236], [66802.17058351629, 77893.57262703593, 59774.418467546835, 69680.09965112159, 69351.91293586484, 68622.89011884255, 59632.39800747507, 64067.26328816365, 62823.57207977561, 76313.31862364043, 64646.680493280524, 64680.06144240395, 65228.697346409564, 74949.45232927657, 74702.34408989994], [57910.18952618454, 61549.551370949164, 54027.00728229303, 57323.77446657668, 69105.31274059242, 60691.23243014656, 54788.915665947316, 59854.16175272543, 58962.292324052694, 73767.67752688103, 62736.4713901033, 69759.3084744498, 69574.9063252094, 69448.2521874864, 69189.34725530316], [57297.57257728499, 52091.42057574265, 48560.971474057995, 62819.499182219, 51440.86672346566, 51895.56557484096, 55943.749118475636, 52824.53631507267, 61556.25314519186, 55160.743764031315, 62687.852874049284, 51410.91783011302, 46900.19341919514, 47287.95766195483, 54304.37547030183], [48544.972394450255, 57919.59380849625, 49168.44528330046, 58584.62324239277, 51150.993551035106, 44786.24080696017, 52374.262125235546, 62033.49907027941, 63971.59823632938, 47282.32530892221, 74731.34713092582, 74599.11425923965, 74610.88368853428, 74454.24461290664, 74493.2102287921], [51084.3478460955, 44606.37703745623, 42811.46089887502, 55326.96414823291, 54945.2783751345, 49537.28909646082, 48696.38685082803, 58155.3737228002, 60044.72309251807, 44275.29986753814, 45575.87460276987, 45886.95070304289, 45951.49827426447, 48382.970043718626, 48870.44262162548], [40241.38099887438, 49784.74835355499, 44158.25937649642, 40631.10840106715, 40935.20071392589, 43648.67110279163, 51175.87524953205, 52464.98821524739, 54245.296981983956, 48079.355538833726, 42627.75118313941, 42830.76388828427, 43208.12876785593, 42734.43392764969, 53184.77611457643], [51050.28519723138, 47574.10909136134, 44487.170838489816, 35223.80707831418, 40651.66653192455, 42410.18341925734, 39871.45596109476, 40994.325433299535, 46196.95402391778, 50754.36897780487, 50723.024931436965, 50641.77580985191, 50540.413517328896, 50400.971710374935, 50359.99024881687], [48392.55003389284, 38636.429375439206, 42086.188294848915, 40304.273766954175, 35182.19938930728, 34143.555910721945, 40409.78020037188, 36549.430525929565, 38334.38172648179, 33672.08481290538, 48795.36501638671, 43937.29390986376, 44035.33080018158, 43999.51165726582, 43916.73220937682], [37359.273698546654, 39105.79016299649, 49637.99431595575, 38555.08496837708, 33422.64147611022, 35004.12832009751, 38250.797283599, 39579.69505164769, 37750.67898831476, 40126.468852805636, 33910.02727594977, 32132.6000087064, 32079.41985435415, 31977.87506296603, 31934.49314369936], [39365.47979179235, 40609.22571377045, 32446.97825262279, 38859.20896014327, 52834.33024670242, 45832.28626687646, 36341.001623124226, 37726.2366030062, 35911.2668329177, 37956.31819453858, 32299.563348486634, 30572.732134750415, 29692.97986952818, 29763.37122281579, 29688.82288045473], [35748.965839764685, 41846.39820647883, 39938.91368834769, 33602.76708478184, 39762.41405215142, 33491.05157306237, 38877.00015547167, 36849.97024894124, 37599.12062735929, 33346.56638951249, 32090.290172324803, 32053.630810753657, 28300.83326596227, 28538.455842936295, 28501.397217678983]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-var-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[66124.96838887817, 70822.86087462143, 75812.3726133544, 73057.42244015895, 76195.46813390465, 63269.47922338792, 56807.51969577304, 64098.0721139794, 65290.66351079906, 71855.97110652298, 73295.19250315605, 69436.27467490874, 69490.42513417205, 60570.44777706607, 57904.22598988812], [60694.123659678735, 61891.414085111406, 61594.36213332006, 67261.692651787, 67255.33253027032, 60660.184246988516, 67332.33592763726, 63913.776697906105, 65282.753161982844, 61970.18819472516, 52558.15058364065, 59590.029542726734, 64408.68800069652, 64553.27273151286, 68975.82185682925], [56086.690283642514, 57797.90543342392, 51545.603010553416, 57321.00965603448, 57842.270092847684, 50147.850553790086, 49512.9078245782, 58594.202796002515, 56321.80466601576, 54791.95437963695, 57113.47285589019, 60375.24342199364, 57811.12617707602, 58329.52233630388, 58513.12524238033], [54480.62133631009, 52977.31500550369, 50353.80102113793, 47855.77319979353, 49212.226126703186, 48531.43415277269, 44024.110362497755, 51886.12309500563, 53667.32336179501, 49620.23327280303, 47551.71760374625, 47739.88901499369, 50085.98818042177, 50420.84013407877, 44094.03571992712], [45190.75592813478, 46271.425762277606, 46094.208705791636, 47969.029253549415, 46971.98001380589, 48483.54496116318, 46902.0957885834, 47586.129711258014, 43227.143003463905, 46763.802483815394, 42910.175693559126, 42977.36217249892, 45067.445316260484, 44098.43688409898, 44141.61548870965], [44950.46833788347, 44587.85048413878, 43415.77871903783, 41360.6017885461, 41680.58306540383, 38273.75717874888, 40996.28961697999, 44437.06146292623, 41998.03479207218, 45578.06890815356, 42330.710757395784, 38973.00314861226, 39131.04913277903, 39930.311906642375, 40181.34246739759], [38164.166859658835, 38352.91205340763, 39933.96848091741, 38892.72219762315, 37398.09693098923, 37139.082923613656, 36447.49520711936, 40439.29759018911, 40927.09414929012, 39163.553253400176, 39227.92073618945, 38256.40380034949, 39850.23620499873, 39855.46861897625, 40794.512612483755], [39369.34632060745, 40885.163151970446, 37542.77247280801, 37756.64941698123, 36135.80119340053, 34472.07778993912, 37096.020458827996, 38666.52559996517, 36407.44932867332, 35903.17060901363, 38747.60605842004, 36126.47482043023, 36552.50913613722, 36629.87503560302, 36607.77953059993], [35095.17827812016, 33167.77658969782, 34351.409142356075, 34342.06386962768, 36527.72580954099, 34853.13377590936, 35123.0307672216, 36438.4319624878, 36232.253090465856, 33610.38027499829, 33912.34368442982, 35011.34241826854, 35223.06609660388, 33165.34344127213, 33269.42232386615], [29543.46957108475, 32176.929586258786, 31310.35093562851, 32714.769332902157, 30480.126767246467, 34345.664855318064, 34775.30995329631, 32953.235600524866, 31221.252973551156, 32417.818739311326, 31835.60758763938, 32859.83558000262, 33108.665505189645, 32563.695091448433, 32824.00889360141], [31462.635547664504, 30550.587997587078, 32033.10053606632, 26477.961310563995, 28812.22011679032, 31368.10535817563, 30901.988823452593, 30776.25405687776, 30054.93383125727, 30553.2708434649, 30036.837634716205, 31528.8518417174, 30754.7761941779, 30829.806929061386, 30882.16805119371], [30260.63249046959, 25652.029997947775, 30513.61239233586, 29508.24617322032, 27186.245065640145, 26186.359119035325, 28625.800169775066, 29347.46877071661, 28424.798069663742, 27251.982449114126, 28395.957946157054, 27556.732213108124, 27622.202944633427, 27944.396952755265, 27957.109036635346], [27860.68784211541, 26057.727484281815, 27415.546654560603, 27326.611405401705, 25599.83750785132, 26071.334759112193, 27173.251477291808, 27811.485610164127, 28554.54281503224, 25849.32277784342, 25531.491340849872, 23042.875166821108, 23062.52118767918, 23075.28987008787, 23044.013906008047], [26470.500608205173, 26948.099595151776, 25976.68609834516, 25172.56955678136, 26988.713083251972, 27061.972886362648, 25998.122675232116, 26462.336439450002, 27039.499609455164, 24541.448449325566, 24215.332934496677, 21880.775471545578, 23379.336721164676, 23381.277042431328, 23370.795352640842], [25405.324663403833, 27928.46237336832, 26081.376086591503, 24082.814824534675, 23500.913369941725, 24906.586289264364, 27775.850084265647, 25308.044026467494, 25569.154954260237, 25213.5077455986, 22322.561299991918, 22296.126151578657, 22215.255811220075, 22318.903411670322, 22324.793153027655]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-var-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[307675767.9345023, 175034150.20861366, 183500380.84293073, 566146514.5171965, 114643989.14518741, 587546750.4083045, 854313103.8886962, 861570173.439181, 295204893.1713842, 402510074.6470064, 469185935.76201546, 654498284.5563821, 411715156.5974724, 715535469.2272123, 927825315.6913154], [59599358.581624135, 73429190.48525797, 571796891.2786232, 125708433.71076396, 165191748.24435502, 303347539.6793393, 115314659.34697577, 332613470.4405544, 345539929.63093376, 575959059.1663932, 800781867.1030362, 533087686.35514736, 410940174.8442614, 408923948.33833086, 85418849.83891809], [50503199.57383886, 59409024.88238858, 406866418.73054314, 67754780.35077816, 122992589.40464354, 347828295.3146988, 177434203.99152482, 93052454.28822632, 262761135.8928903, 442972015.6241239, 268827113.14833647, 101038750.8602089, 291359379.19543964, 306091153.5075006, 305406225.7675251], [202950855.26137087, 90158237.37398386, 74494773.81025559, 162490988.3828111, 350801886.3312499, 382114500.0771341, 241864742.66023102, 210078150.54351237, 85825259.74349885, 395014818.2080709, 308346946.00739527, 311974510.46666545, 392039017.3926512, 392257242.6325494, 594615482.4700973], [52411094.01343542, 200430628.73444182, 38001914.65064071, 90221274.12390375, 78256036.03195015, 44897889.82175264, 23644442.103681777, 59610160.598477796, 261706312.09941572, 208023400.137291, 254713887.24944234, 252850606.8622819, 300917679.0884478, 309809835.0534387, 308231376.6194177], [48214397.34801234, 59775467.2112579, 125527634.97748454, 136144514.30139297, 278284243.71635383, 193579997.91646367, 119318884.77310827, 45403362.42811602, 132549984.11292633, 88649113.89024624, 157020655.80803877, 233898819.98489183, 233660492.14320427, 257611950.62697545, 261717760.07992524], [119337758.47647679, 34214834.68128414, 25802569.73592415, 51624185.62422673, 184132314.07862273, 102177179.23101026, 179498649.2855059, 28804051.711932797, 63633264.85208319, 53121930.16370093, 54543471.4973015, 108286376.1154323, 27408759.57723207, 27873117.674682416, 41563585.68498001], [40378217.25008087, 40248732.6790685, 37911864.0414364, 44604017.50947942, 102632467.57190093, 78128321.65159164, 45638516.448746465, 87970516.17740312, 132256845.61046691, 25983717.1518866, 111770754.00136587, 172019544.15758148, 168372676.02695268, 169982998.44494775, 169722338.25039393], [31526444.219960112, 21723363.32918767, 17171717.17268231, 53179259.12927403, 42748760.931683384, 26382099.612202138, 37614138.97449668, 73109214.31884202, 59126524.031105086, 23086179.656920627, 35951109.49655253, 39242571.659210086, 38583832.65676548, 87565357.70557636, 88365915.55403337], [112823157.11615035, 31173361.51519292, 82545307.31604007, 14723207.434685588, 18330239.52092717, 30822576.84101246, 106836530.56941627, 96673368.58967702, 86056675.49310973, 85978192.1065065, 31634734.563602973, 35105195.392370895, 34372580.813152194, 21586525.287689254, 50342762.612445846], [32140844.75601364, 37948655.1269636, 30135355.861326605, 47016240.71480311, 21677820.384426832, 21861050.382737063, 24423676.274325065, 25045297.90273592, 87983459.13113098, 90142962.39798349, 90493989.74088368, 44399052.32514885, 45640156.21729778, 45388582.51733254, 44663610.902633], [51970454.77016143, 51117365.10722424, 23135991.740370184, 33780775.32018234, 10214028.489587314, 48095060.57080536, 69374796.09672564, 20875869.008115746, 19490540.59614522, 11006650.585895807, 36266348.7875781, 25094829.203550614, 25740866.536874883, 22134708.3892922, 21804974.013803244], [20362383.70938937, 21480575.366942897, 37119746.63751452, 28497584.66736988, 12489730.733046351, 13343264.694920257, 62883756.49034692, 57458525.30766084, 19968277.366421424, 99022025.49697986, 42423889.21127172, 101299400.18689944, 101193134.91614613, 101407460.19014168, 101127979.64626935], [18161652.07137699, 18392705.55426479, 13000381.836605141, 62676577.50622237, 65578567.69496939, 25258098.89005434, 55244349.789624095, 52413811.581071384, 17582360.39411918, 88635364.45268783, 38485373.72671103, 91432755.00873941, 69097173.71778695, 68947021.78207664, 68820608.76101583], [16583132.546864366, 22235424.62593316, 20600834.318784874, 47063905.5155579, 51237276.07659987, 19555622.65708689, 32727600.07900352, 27796724.75985222, 22622064.36774727, 11819115.575468598, 67380850.27396923, 67296676.36395893, 62135725.01935575, 62994473.56987629, 62858484.128409825]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-final-min": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-final-max": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[999.0, 0.0, 0.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 999.0, 0.0, 0.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 1.0], [0.0, 0.0, 999.0, 0.0, 0.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0], [0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 0.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0], [999.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0, 999.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 0.0, 0.0, 999.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0], [999.0, 0.0, 999.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 999.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0], [0.0, 999.0, 0.0, 0.0, 0.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 0.0, 999.0, 0.0, 0.0, 999.0, 999.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], [0.0, 0.0, 0.0, 999.0, 999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.0, 999.0, 999.0, 999.0, 999.0]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-final-avg": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[49.95, 0.0, 0.0, 49.95, 0.0, 99.9, 199.8, 149.85, 50.0, 50.05, 50.1, 100.1, 50.3, 150.3, 200.45], [0.0, 0.0, 99.9, 0.0, 0.0, 49.95, 0.0, 49.95, 49.95, 99.9, 199.8, 99.9, 49.95, 49.95, 0.05], [0.0, 0.0, 99.9, 0.0, 0.0, 99.9, 49.95, 0.0, 49.95, 99.9, 49.95, 0.0, 49.95, 49.95, 49.95], [0.0, 0.0, 0.0, 49.95, 99.9, 99.85, 99.9, 49.95, 0.0, 99.85, 99.9, 99.9, 99.85, 99.85, 199.7], [0.0, 49.95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 99.9, 49.95, 99.9, 99.9, 99.85, 99.9, 99.9], [0.0, 0.0, 49.95, 49.95, 99.9, 99.9, 49.95, 0.0, 49.95, 0.0, 49.95, 99.9, 99.9, 99.9, 99.9], [49.95, 0.0, 0.0, 0.0, 99.9, 49.95, 99.9, 0.0, 0.0, 0.0, 0.0, 49.95, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 49.95, 49.95, 0.0, 0.0, 49.95, 0.0, 0.0, 49.95, 49.95, 49.95, 49.95], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 49.95, 49.95], [99.9, 0.0, 49.95, 0.0, 0.0, 0.0, 49.95, 49.95, 49.95, 49.95, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 49.95, 0.0, 0.0, 0.0, 0.0, 49.95, 49.95, 49.95, 0.0, 0.0, 0.0, 0.0], [0.0, 49.95, 0.0, 0.0, 0.0, 49.95, 49.95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 49.95, 49.95, 0.0, 99.9, 49.95, 149.85, 149.85, 149.85, 149.85], [0.0, 0.0, 0.0, 49.95, 0.0, 0.0, 49.95, 49.95, 0.0, 99.9, 49.95, 149.85, 99.9, 99.9, 99.9], [0.0, 0.0, 0.0, 49.95, 49.95, 0.0, 0.0, 0.0, 0.0, 0.0, 99.9, 99.9, 99.9, 99.9, 99.9]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}, "Susceptible-final-var": {"data": [{"x": [0.004, 0.004642857142857143, 0.005285714285714286, 0.005928571428571429, 0.006571428571428572, 0.007214285714285715, 0.007857142857142858, 0.0085, 0.009142857142857144, 0.009785714285714286, 0.01042857142857143, 0.011071428571428572, 0.011714285714285714, 0.012357142857142856, 0.013], "y": [0.1, 0.1285714285714286, 0.15714285714285714, 0.18571428571428572, 0.2142857142857143, 0.24285714285714288, 0.27142857142857146, 0.30000000000000004, 0.3285714285714286, 0.3571428571428572, 0.3857142857142858, 0.41428571428571437, 0.44285714285714284, 0.4714285714285714, 0.5], "z": [[47405.047499999986, 0.0, 0.0, 47405.047499999986, 0.0, 89820.09000000001, 159680.16000000006, 127245.12749999999, 47400.1, 47395.147499999985, 47390.19, 89780.29, 47370.409999999996, 127110.70999999999, 159420.94749999998], [0.0, 0.0, 89820.09000000001, 0.0, 0.0, 47405.047499999986, 0.0, 47405.047499999986, 47405.0475, 89820.09000000001, 159680.16000000006, 89820.09000000001, 47405.047499999986, 47405.047499999986, 0.04749999999999999], [0.0, 0.0, 89820.09000000001, 0.0, 0.0, 89820.09000000001, 47405.047499999986, 0.0, 47405.0475, 89820.09000000001, 47405.047499999986, 0.0, 47405.0475, 47405.0475, 47405.0475], [0.0, 0.0, 0.0, 47405.047499999986, 89820.09000000001, 89730.22749999998, 89820.09000000001, 47405.047499999986, 0.0, 89730.2275, 89820.09000000001, 89820.09000000001, 89730.22749999998, 89730.22749999998, 159520.40999999997], [0.0, 47405.04749999999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 89820.09000000001, 47405.047499999986, 89820.09000000001, 89820.09000000001, 89730.22749999998, 89820.09000000001, 89820.09000000001], [0.0, 0.0, 47405.04749999999, 47405.047499999986, 89820.09000000001, 89820.09000000001, 47405.047499999986, 0.0, 47405.047499999986, 0.0, 47405.047499999986, 89820.09000000001, 89820.09000000001, 89820.09000000001, 89820.09000000001], [47405.047499999986, 0.0, 0.0, 0.0, 89820.09000000001, 47405.04749999999, 89820.09000000001, 0.0, 0.0, 0.0, 0.0, 47405.04749999999, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 0.0, 0.0, 47405.047499999986, 0.0, 0.0, 47405.0475, 47405.0475, 47405.0475, 47405.0475], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986], [89820.09000000001, 0.0, 47405.047499999986, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 47405.047499999986, 47405.047499999986, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 47405.047499999986, 0.0, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 47405.047499999986, 0.0, 0.0, 0.0, 0.0], [0.0, 47405.04749999999, 0.0, 0.0, 0.0, 47405.04749999999, 47405.047499999986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 0.0, 89820.09000000001, 47405.04749999999, 127245.12749999999, 127245.12749999999, 127245.12749999999, 127245.12749999999], [0.0, 0.0, 0.0, 47405.047499999986, 0.0, 0.0, 47405.047499999986, 47405.047499999986, 0.0, 89820.09000000001, 47405.04749999999, 127245.12749999999, 89820.09000000001, 89820.09000000001, 89820.09000000001], [0.0, 0.0, 0.0, 47405.0475, 47405.047499999986, 0.0, 0.0, 0.0, 0.0, 0.0, 89820.09000000001, 89820.09000000001, 89820.09000000001, 89820.09000000001, 89820.09000000001]], "type": "heatmap"}], "layout": {"title": {"text": "Parameter Sweep - Species: Susceptible ", "x": 0.5}, "xaxis": {"title": {"text": "beta "}}, "yaxis": {"title": {"text": "gamma "}}}, "config": {"responsive": true}}}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results.json
new file mode 100644
index 0000000000..1cea4a4499
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results.json
@@ -0,0 +1 @@
+"{'Infected': {'min': {'min': array([[0., 1., 1., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 0., 1., 1., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 0., 1., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n [0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 1., 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 1., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 1., 0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 1., 0., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],\n [1., 0., 1., 1., 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 1., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [1., 1., 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'max': array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]), 'avg': array([[0.95, 1. , 1. , 0.95, 1. , 0.9 , 0.8 , 0.85, 0.9 , 0.65, 0.3 ,\n 0.25, 0.25, 0.05, 0.05],\n [1. , 1. , 0.9 , 1. , 1. , 0.95, 1. , 0.95, 0.9 , 0.75, 0.4 ,\n 0.45, 0.2 , 0.1 , 0.15],\n [1. , 1. , 0.9 , 1. , 1. , 0.9 , 0.95, 0.95, 0.75, 0.6 , 0.55,\n 0.3 , 0.2 , 0.15, 0. ],\n [1. , 1. , 1. , 0.95, 0.9 , 0.9 , 0.9 , 0.9 , 0.75, 0.7 , 0.75,\n 0.45, 0.45, 0.25, 0.1 ],\n [1. , 0.95, 1. , 1. , 1. , 1. , 1. , 0.95, 0.85, 0.8 , 0.75,\n 0.45, 0.4 , 0.1 , 0. ],\n [1. , 1. , 0.95, 0.95, 0.9 , 0.9 , 0.95, 1. , 0.85, 0.8 , 0.55,\n 0.4 , 0.2 , 0.1 , 0. ],\n [0.95, 1. , 1. , 1. , 0.9 , 0.95, 0.9 , 0.9 , 0.9 , 0.65, 0.6 ,\n 0.35, 0.2 , 0.15, 0.1 ],\n [1. , 1. , 1. , 1. , 0.95, 0.95, 1. , 0.9 , 0.9 , 0.7 , 0.45,\n 0.2 , 0.05, 0.05, 0. ],\n [1. , 1. , 1. , 1. , 1. , 1. , 1. , 0.9 , 0.9 , 0.7 , 0.55,\n 0.3 , 0.15, 0.15, 0.1 ],\n [0.9 , 1. , 0.95, 1. , 1. , 1. , 0.95, 0.95, 0.75, 0.75, 0.55,\n 0.3 , 0.15, 0.15, 0.05],\n [1. , 1. , 1. , 0.95, 1. , 1. , 1. , 1. , 0.75, 0.55, 0.45,\n 0.2 , 0.15, 0.05, 0.05],\n [1. , 0.95, 1. , 1. , 1. , 0.95, 0.95, 1. , 0.9 , 0.75, 0.5 ,\n 0.35, 0.3 , 0.15, 0.15],\n [1. , 1. , 1. , 1. , 1. , 1. , 0.95, 0.95, 0.85, 0.65, 0.6 ,\n 0.2 , 0.05, 0.05, 0. ],\n [1. , 1. , 1. , 0.95, 1. , 1. , 0.95, 0.95, 0.8 , 0.65, 0.6 ,\n 0.15, 0.25, 0.15, 0.05],\n [1. , 1. , 1. , 0.95, 0.95, 1. , 0.95, 0.9 , 0.9 , 0.8 , 0.25,\n 0.2 , 0.25, 0.15, 0.05]]), 'var': array([[0.0475, 0. , 0. , 0.0475, 0. , 0.09 , 0.16 , 0.1275,\n 0.09 , 0.2275, 0.21 , 0.1875, 0.1875, 0.0475, 0.0475],\n [0. , 0. , 0.09 , 0. , 0. , 0.0475, 0. , 0.0475,\n 0.09 , 0.1875, 0.24 , 0.2475, 0.16 , 0.09 , 0.1275],\n [0. , 0. , 0.09 , 0. , 0. , 0.09 , 0.0475, 0.0475,\n 0.1875, 0.24 , 0.2475, 0.21 , 0.16 , 0.1275, 0. ],\n [0. , 0. , 0. , 0.0475, 0.09 , 0.09 , 0.09 , 0.09 ,\n 0.1875, 0.21 , 0.1875, 0.2475, 0.2475, 0.1875, 0.09 ],\n [0. , 0.0475, 0. , 0. , 0. , 0. , 0. , 0.0475,\n 0.1275, 0.16 , 0.1875, 0.2475, 0.24 , 0.09 , 0. ],\n [0. , 0. , 0.0475, 0.0475, 0.09 , 0.09 , 0.0475, 0. ,\n 0.1275, 0.16 , 0.2475, 0.24 , 0.16 , 0.09 , 0. ],\n [0.0475, 0. , 0. , 0. , 0.09 , 0.0475, 0.09 , 0.09 ,\n 0.09 , 0.2275, 0.24 , 0.2275, 0.16 , 0.1275, 0.09 ],\n [0. , 0. , 0. , 0. , 0.0475, 0.0475, 0. , 0.09 ,\n 0.09 , 0.21 , 0.2475, 0.16 , 0.0475, 0.0475, 0. ],\n [0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.09 ,\n 0.09 , 0.21 , 0.2475, 0.21 , 0.1275, 0.1275, 0.09 ],\n [0.09 , 0. , 0.0475, 0. , 0. , 0. , 0.0475, 0.0475,\n 0.1875, 0.1875, 0.2475, 0.21 , 0.1275, 0.1275, 0.0475],\n [0. , 0. , 0. , 0.0475, 0. , 0. , 0. , 0. ,\n 0.1875, 0.2475, 0.2475, 0.16 , 0.1275, 0.0475, 0.0475],\n [0. , 0.0475, 0. , 0. , 0. , 0.0475, 0.0475, 0. ,\n 0.09 , 0.1875, 0.25 , 0.2275, 0.21 , 0.1275, 0.1275],\n [0. , 0. , 0. , 0. , 0. , 0. , 0.0475, 0.0475,\n 0.1275, 0.2275, 0.24 , 0.16 , 0.0475, 0.0475, 0. ],\n [0. , 0. , 0. , 0.0475, 0. , 0. , 0.0475, 0.0475,\n 0.16 , 0.2275, 0.24 , 0.1275, 0.1875, 0.1275, 0.0475],\n [0. , 0. , 0. , 0.0475, 0.0475, 0. , 0.0475, 0.09 ,\n 0.09 , 0.16 , 0.1875, 0.16 , 0.1875, 0.1275, 0.0475]])}, 'max': {'min': array([[ 1., 840., 813., 1., 766., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1.],\n [885., 849., 1., 806., 780., 1., 747., 1., 1., 1., 1.,\n 1., 1., 1., 628.],\n [881., 854., 1., 814., 793., 1., 1., 749., 1., 1., 1.,\n 683., 1., 1., 1.],\n [902., 885., 856., 1., 1., 1., 1., 1., 751., 1., 1.,\n 1., 1., 1., 1.],\n [902., 1., 878., 851., 834., 821., 803., 785., 1., 1., 1.,\n 1., 1., 1., 1.],\n [920., 897., 1., 1., 1., 1., 1., 805., 1., 789., 1.,\n 1., 1., 1., 1.],\n [ 1., 901., 876., 869., 1., 1., 1., 807., 792., 782., 773.,\n 1., 755., 745., 732.],\n [918., 904., 883., 874., 1., 1., 806., 798., 1., 783., 779.,\n 1., 1., 1., 1.],\n [923., 900., 885., 874., 850., 831., 823., 808., 800., 791., 801.,\n 793., 781., 1., 1.],\n [ 1., 907., 1., 892., 881., 864., 1., 1., 1., 1., 809.,\n 801., 794., 783., 767.],\n [937., 919., 908., 1., 888., 874., 867., 848., 1., 1., 1.,\n 802., 796., 786., 777.],\n [939., 1., 912., 903., 883., 1., 1., 858., 848., 844., 835.,\n 825., 814., 804., 794.],\n [938., 915., 910., 903., 886., 878., 1., 1., 845., 1., 1.,\n 1., 1., 1., 1.],\n [944., 926., 916., 1., 885., 874., 1., 1., 852., 1., 1.,\n 1., 1., 1., 1.],\n [949., 933., 919., 1., 1., 894., 890., 875., 868., 857., 1.,\n 1., 1., 1., 1.]]), 'max': array([[910., 883., 865., 840., 817., 802., 782., 766., 746., 728., 712.,\n 697., 688., 673., 652.],\n [915., 895., 868., 854., 841., 830., 810., 790., 775., 755., 743.,\n 730., 712., 703., 686.],\n [921., 901., 886., 871., 857., 830., 810., 797., 780., 767., 755.,\n 739., 722., 711., 694.],\n [938., 913., 894., 875., 867., 849., 831., 820., 806., 807., 784.,\n 773., 765., 752., 737.],\n [937., 921., 904., 899., 882., 863., 853., 841., 830., 821., 807.,\n 798., 781., 772., 756.],\n [941., 923., 906., 898., 886., 868., 865., 858., 838., 824., 813.,\n 803., 794., 786., 776.],\n [943., 930., 931., 908., 898., 875., 862., 855., 843., 837., 828.,\n 819., 810., 800., 789.],\n [946., 938., 936., 911., 901., 881., 881., 873., 862., 851., 842.,\n 826., 819., 815., 805.],\n [954., 941., 933., 925., 917., 899., 886., 877., 869., 861., 845.,\n 838., 827., 821., 810.],\n [955., 940., 929., 916., 910., 897., 888., 883., 875., 861., 853.,\n 845., 839., 829., 822.],\n [958., 948., 937., 934., 926., 905., 895., 881., 874., 869., 858.,\n 851., 848., 836., 825.],\n [963., 951., 940., 933., 918., 913., 899., 895., 887., 879., 866.,\n 860., 849., 846., 839.],\n [964., 962., 952., 938., 925., 918., 903., 904., 891., 890., 884.,\n 873., 866., 857., 847.],\n [966., 952., 942., 935., 926., 923., 917., 909., 898., 892., 883.,\n 879., 859., 856., 856.],\n [968., 960., 946., 946., 934., 927., 918., 908., 902., 887., 882.,\n 873., 865., 858., 854.]]), 'avg': array([[843.8 , 861.45, 839.15, 775.2 , 791.1 , 694.85, 602.35, 624.8 ,\n 684.05, 667.45, 651.5 , 601.45, 621.7 , 540.1 , 496.35],\n [900.4 , 876.3 , 768.9 , 833.25, 814.05, 754.15, 774. , 720.6 ,\n 703.85, 652.8 , 569.35, 626.55, 647.8 , 635.1 , 654.3 ],\n [903.4 , 885.95, 782.75, 849. , 832.6 , 731.15, 754.25, 777.75,\n 724.15, 675.1 , 698.15, 719.45, 669.6 , 656.5 , 642.75],\n [916.45, 896.7 , 877.15, 817.95, 761.6 , 745.6 , 731.2 , 756.4 ,\n 783.15, 698.35, 686.3 , 673.95, 663.6 , 651.85, 570.5 ],\n [922.8 , 862.4 , 891.25, 877.85, 862.25, 845.35, 831.7 , 817.25,\n 724.55, 752.9 , 703.35, 691.3 , 680.45, 670.35, 658.25],\n [931.4 , 910.95, 850.55, 836.05, 781.45, 766.35, 798.85, 827.65,\n 776.1 , 806.1 , 753.5 , 703.55, 694.6 , 685.6 , 674.85],\n [886.5 , 915.6 , 903.5 , 886.3 , 782.9 , 814.4 , 758.35, 830.7 ,\n 819. , 808.55, 797.05, 748.65, 776.45, 767.4 , 756.25],\n [934.1 , 923.75, 907.85, 892.15, 835.05, 823.75, 858.35, 847.25,\n 794.55, 826.15, 814.55, 765.75, 755.95, 745.8 , 736.9 ],\n [941.45, 925.6 , 912.3 , 902. , 891.6 , 878.5 , 867.4 , 855.65,\n 845.15, 834.4 , 823.05, 813.85, 805.2 , 756.4 , 747.45],\n [848.35, 929.5 , 872.5 , 905.2 , 895. , 882.7 , 828.7 , 818.75,\n 809.8 , 798.7 , 832.8 , 823.95, 813.65, 804.95, 794.8 ],\n [946.5 , 934.3 , 923.75, 866.25, 900.95, 888.25, 878.7 , 867.2 ,\n 814.95, 807.5 , 798.6 , 830.85, 823.3 , 812.9 , 803.45],\n [949.1 , 891.7 , 927.15, 915.7 , 901.6 , 849.75, 840.5 , 876.3 ,\n 866.5 , 859.2 , 849.4 , 841.85, 833.05, 825.15, 817.1 ],\n [951.85, 943.35, 931.6 , 918.85, 906.15, 898.75, 845.25, 837.1 ,\n 872.1 , 777.85, 814.05, 719.85, 713.65, 705.8 , 699.45],\n [955.35, 942.85, 930.9 , 874.05, 912. , 901.6 , 850.35, 841.55,\n 877.75, 782.3 , 817.75, 725.45, 760.75, 753.45, 747.35],\n [958.6 , 943.75, 935.5 , 878.55, 871.1 , 908.85, 901.4 , 891. ,\n 882.15, 874.4 , 780. , 773.6 , 766.95, 759.2 , 753.15]]), 'var': array([[37480.46 , 125.8475, 186.6275, 31697.66 , 185.09 ,\n 53719.3275, 90726.6275, 69001.26 , 24889.6475, 23759.5475,\n 22688.25 , 40512.8475, 20760.61 , 51738.09 , 61739.1275],\n [ 80.44 , 167.61 , 65633.69 , 172.0875, 274.9475,\n 30065.4275, 184.9 , 27487.74 , 26263.9275, 47471.96 ,\n 81051.6275, 43797.0475, 22349.56 , 21537.29 , 329.91 ],\n [ 90.64 , 162.5475, 68000.9875, 194.1 , 237.64 ,\n 59347.0275, 29987.3875, 152.8875, 27652.7275, 50622.49 ,\n 25723.9275, 153.9475, 23677.74 , 22759.45 , 21814.1875],\n [ 61.1475, 77.31 , 77.8275, 35207.6475, 64387.34 ,\n 61643.94 , 59372.16 , 30167.64 , 143.0275, 54221.1275,\n 52471.21 , 50582.8475, 49073.34 , 47343.1275, 81242.95 ],\n [ 91.46 , 39105.54 , 45.3875, 151.7275, 138.5875,\n 129.4275, 175.11 , 207.4875, 58366.7475, 29967.29 ,\n 55056.3275, 53262.41 , 51507.7475, 49928.5275, 48133.8875],\n [ 34.04 , 66.6475, 38050.4475, 36763.7475, 67784.5475,\n 65193.4275, 33682.4275, 172.5275, 31714.69 , 103.29 ,\n 29918.95 , 54962.9475, 53594.94 , 52216.44 , 50592.6275],\n [41314.55 , 67.84 , 215.15 , 111.71 , 68063.79 ,\n 34950.34 , 63887.2275, 150.61 , 158.8 , 193.6475,\n 194.3475, 29631.3275, 221.4475, 194.74 , 176.8875],\n [ 57.19 , 62.3875, 209.7275, 96.2275, 36748.4475,\n 35716.9875, 253.6275, 221.7875, 33334.4475, 200.4275,\n 158.1475, 30949.7875, 30186.2475, 29411.46 , 28694.79 ],\n [ 58.9475, 107.54 , 106.41 , 120.6 , 202.24 ,\n 196.45 , 192.34 , 201.1275, 206.0275, 211.14 ,\n 158.1475, 188.0275, 205.46 , 30237.44 , 29499.8475],\n [79827.3275, 59.75 , 40011.55 , 56.46 , 70.5 ,\n 112.71 , 36144.81 , 35347.7875, 34569.96 , 33628.31 ,\n 137.86 , 164.6475, 187.3275, 203.6475, 170.56 ],\n [ 35.25 , 54.91 , 73.2875, 39489.8875, 69.4475,\n 69.4875, 78.51 , 75.26 , 34953.7475, 34320.55 ,\n 33586.64 , 127.3275, 168.11 , 144.59 , 144.0475],\n [ 41.99 , 41795.61 , 64.3275, 75.01 , 90.04 ,\n 38001.4875, 37176.25 , 98.21 , 100.85 , 102.76 ,\n 97.44 , 122.6275, 117.1475, 130.7275, 118.39 ],\n [ 47.3275, 104.1275, 101.54 , 82.2275, 100.1275,\n 78.4875, 37596.4875, 36970.39 , 181.59 , 67260.9275,\n 35035.4475, 91392.6275, 89856.0275, 87866.86 , 86269.8475],\n [ 34.8275, 49.0275, 40.69 , 40161.8475, 117.1 ,\n 148.14 , 38097.2275, 37331.8475, 155.3875, 67995.61 ,\n 35302.5875, 92809.8475, 64202.2875, 63003.1475, 62004.9275],\n [ 20.74 , 38.4875, 56.85 , 40640.0475, 39889.19 ,\n 68.1275, 65.34 , 79.4 , 65.3275, 53.94 ,\n 67484.1 , 66391.24 , 65246.7475, 63947.06 , 62945.7275]])}, 'avg': {'min': array([[ 0.0074813 , 332.02244389, 285.98503741, 0.02743142,\n 214.54862843, 0.00249377, 0.00498753, 0.00498753,\n 0.00249377, 0.00249377, 0.01246883, 0.01246883,\n 0.00498753, 0.00249377, 0.00498753],\n [401.78304239, 327.97256858, 0.00249377, 249.49625935,\n 220.01496259, 0.01246883, 174.07730673, 0.01496259,\n 0.00498753, 0.00249377, 0.00249377, 0.00249377,\n 0.00249377, 0.00249377, 95.19950125],\n [397.56608479, 327.26932668, 0.00249377, 249.87281796,\n 218.10473815, 0.00249377, 0.00498753, 152.7680798 ,\n 0.0074813 , 0.00498753, 0.01995012, 110.50623441,\n 0.00997506, 0.00997506, 0.00997506],\n [398.12718204, 330.81795511, 281.44638404, 0.01745636,\n 0.00498753, 0.00249377, 0.00249377, 0.00997506,\n 139.86783042, 0.00997506, 0.00498753, 0.00498753,\n 0.00498753, 0.00498753, 0.00249377],\n [407.25187032, 0.01995012, 283.43640898, 247.15461347,\n 216.90274314, 191.55610973, 173.83790524, 156.86783042,\n 0.00498753, 0.00997506, 0.00498753, 0.00498753,\n 0.00498753, 0.00498753, 0.00498753],\n [416.78553616, 341.7755611 , 0.00498753, 0.0074813 ,\n 0.00249377, 0.00249377, 0.00498753, 154.69326683,\n 0.00498753, 132.09975062, 0.0074813 , 0.00498753,\n 0.00498753, 0.00498753, 0.00498753],\n [ 0.00997506, 340.71321696, 281.52369077, 241.87281796,\n 0.00249377, 0.00498753, 0.00249377, 154.7680798 ,\n 141.10473815, 130.31421446, 120.840399 , 0.0074813 ,\n 104.06982544, 97.56109726, 92.18453865],\n [401.87032419, 337.43142145, 282.17206983, 242.77306733,\n 0.00498753, 0.01496259, 164. , 149.41895262,\n 0.00249377, 126.16708229, 117.1446384 , 0.00249377,\n 0.00249377, 0.00249377, 0.00249377],\n [395.8553616 , 324.12219451, 274.94513716, 237.60349127,\n 207.55361596, 183.82044888, 164.73067332, 148.99750623,\n 136.76309227, 125.82543641, 124.77306733, 115.34413965,\n 107.86783042, 0.00249377, 0.00249377],\n [ 0.00249377, 337.7605985 , 0.01496259, 246.79052369,\n 218.90024938, 196.8478803 , 0.00249377, 0.01496259,\n 0.00498753, 0.00249377, 124.79551122, 116.18703242,\n 107.840399 , 101.17955112, 93.11970075],\n [402.46134663, 335.50124688, 282.55860349, 0.00249377,\n 213.60598504, 188.82044888, 171.28678304, 154.73566085,\n 0.00498753, 0.00249377, 0.00249377, 112.03241895,\n 104.9925187 , 98.5436409 , 92.93516209],\n [402.34164589, 0.01745636, 282.28179551, 248.58354115,\n 216.02244389, 0.0074813 , 0.00498753, 156.60349127,\n 143.07481297, 131.56359102, 122.10723192, 113.96009975,\n 106.2319202 , 99.95261845, 94.25436409],\n [406.07730673, 337.28179551, 285.66334165, 248.12468828,\n 217.5436409 , 192.05735661, 0.00498753, 0.00498753,\n 143.63341646, 0.0074813 , 0.00498753, 0.00249377,\n 0.00249377, 0.00249377, 0.00249377],\n [416.50374065, 333.66084788, 291.159601 , 0.00498753,\n 221.38154613, 192.42144638, 0.00498753, 0.00498753,\n 143.47880299, 0.0074813 , 0.00498753, 0.00249377,\n 0.00249377, 0.00249377, 0.00249377],\n [415.02992519, 335.90274314, 288.63341646, 0.00249377,\n 0.00249377, 196.83042394, 176.6957606 , 159.30174564,\n 145.60099751, 133.91521197, 0.00249377, 0.00249377,\n 0.00249377, 0.00249377, 0.00249377]]), 'max': array([[439.97506234, 369.24688279, 315.33915212, 274.4638404 ,\n 239.96758105, 213.17456359, 190.87032419, 173.88778055,\n 159.17206983, 146.02493766, 135.35411471, 125.99002494,\n 118.9925187 , 111.71820449, 105.04738155],\n [443.55610973, 365.36907731, 311.74563591, 270.21197007,\n 239.29426434, 216.03990025, 194.01246883, 177.20698254,\n 162.41396509, 149.85785536, 138.64837905, 129.80548628,\n 120.87531172, 114.28927681, 108.20199501],\n [438.31421446, 370.18952618, 310.7032419 , 270.05486284,\n 239.66583541, 211.18453865, 190.58104738, 172.67082294,\n 156.82294264, 144.82294264, 134.89526185, 125.3117207 ,\n 117.02992519, 109.87032419, 103.93266833],\n [434.46134663, 370.86284289, 314.3915212 , 270.58354115,\n 238.46882793, 210.83291771, 189.93516209, 172.20947631,\n 157.89276808, 145.41147132, 134.11970075, 124.34164589,\n 116.67581047, 109.90274314, 103.88528678],\n [432.55610973, 360.99002494, 321.15461347, 274.98503741,\n 235.67581047, 210.87531172, 190.9276808 , 172.39900249,\n 157.89526185, 145.27930175, 134.9127182 , 125.69326683,\n 117.08977556, 110.50623441, 104.3042394 ],\n [443.25436409, 378.66583541, 319.11471322, 276.97007481,\n 243.54613466, 216.33167082, 192.55610973, 174.19700748,\n 159.66334165, 146.70074813, 135.58104738, 126.22693267,\n 118.33915212, 111.47381546, 104.44638404],\n [446.28678304, 380.58603491, 322.43391521, 271.13715711,\n 237.85037406, 212.27431421, 190.9276808 , 173.83541147,\n 158.66334165, 146.3042394 , 136.32668329, 126.2967581 ,\n 118.08977556, 111.36159601, 105.21945137],\n [443.91521197, 379.42394015, 321.96259352, 272.00249377,\n 237.51371571, 211.81795511, 190.86284289, 173.75810474,\n 160.18453865, 147.25685786, 137.5361596 , 127.68578554,\n 119.03740648, 111.16458853, 104.54613466],\n [440.14962594, 372.5436409 , 313.54613466, 271.77057357,\n 239.49875312, 212.01745636, 191.83042394, 173.99501247,\n 160.19451372, 147.69326683, 135.63591022, 126.46633416,\n 118.34912718, 111.680798 , 105.24688279],\n [446.94264339, 375.32418953, 313.1521197 , 275.49625935,\n 243.69825436, 215.52119701, 192.93765586, 173.90523691,\n 159.77805486, 145.54862843, 135.04987531, 126.29925187,\n 118.38902743, 111.19451372, 103.65087282],\n [445.41396509, 369.27431421, 319.93266833, 279.16957606,\n 236.94763092, 210.00249377, 189.37905237, 172.03491272,\n 158.20947631, 144.38154613, 133.69825436, 124.159601 ,\n 116.26932668, 109.12718204, 103.01246883],\n [446.61845387, 370.14962594, 319.29426434, 277.67581047,\n 240.64339152, 214.06982544, 190.98503741, 173.59850374,\n 158.92518703, 146.52618454, 135.21695761, 126.2244389 ,\n 117.66583541, 110.93017456, 104.63092269],\n [447.03740648, 371.25935162, 319.43142145, 277.40149626,\n 240.68329177, 213.28927681, 190.87780549, 181.28428928,\n 165.95261845, 153.02992519, 142.73067332, 132.09975062,\n 124.02493766, 116.28927681, 109.50872818],\n [446.39401496, 378.10972569, 327.64837905, 284.69825436,\n 251.29177057, 222.5436409 , 200.02493766, 181.24189526,\n 165.50623441, 152.39900249, 142.13715711, 132.54114713,\n 119.43391521, 112.70573566, 106.06234414],\n [438.8553616 , 367.16957606, 310.5436409 , 273.90773067,\n 237.32418953, 212.53865337, 193.32418953, 174.72069825,\n 159.65336658, 147.78304239, 136.91521197, 127.00498753,\n 119.12967581, 112.25685786, 105.95012469]]), 'avg': array([[397.97531172, 347.80723192, 297.5446384 , 246.55498753,\n 227.78379052, 182.47955112, 146.0286783 , 140.93017456,\n 144.46433915, 132.70561097, 122.91882793, 108.22269327,\n 107.19189526, 89.86683292, 79.6127182 ],\n [421.34189526, 347.67755611, 267.80773067, 258.72269327,\n 227.89139651, 191.55112219, 180.39177057, 156.11932668,\n 142.98990025, 124.86558603, 103.00972569, 107.75985037,\n 106.32680798, 99.90074813, 98.96022444],\n [417.06234414, 347.59526185, 268.98516209, 259.28566085,\n 228.13179551, 181.53566085, 171.78815461, 163.47219451,\n 142.07481297, 124.32306733, 121.50311721, 118.93441397,\n 105.66970075, 99.2584788 , 93.59451372],\n [420.65149626, 353.35149626, 300.14887781, 246.22107232,\n 204.26084788, 181.74077307, 163.08640898, 155.4882793 ,\n 149.64451372, 124.66122195, 115.44912718, 107.49987531,\n 100.67107232, 94.54950125, 79.10124688],\n [421.07356608, 333.67518703, 301.32680798, 260.57369077,\n 227.83129676, 201.81995012, 181.47618454, 164.68354115,\n 135.33453865, 131.95773067, 115.63428928, 107.5553616 ,\n 100.57082294, 95.29862843, 89.72992519],\n [426.40523691, 356.00511222, 285.31246883, 246.63628429,\n 204.59937656, 182.3478803 , 173.29164589, 165.10124688,\n 143.74663342, 139.24301746, 122.68042394, 108.14002494,\n 101.25311721, 95.21583541, 89.84226933],\n [405.39401496, 355.96209476, 299.44339152, 257.74551122,\n 202.64800499, 191.28054863, 162.1372818 , 163.49413965,\n 149.26209476, 137.62418953, 127.48890274, 113.20461347,\n 111.18366584, 104.58690773, 98.59663342],\n [421.74127182, 354.73129676, 299.36770574, 257.65473815,\n 214.50511222, 191.48753117, 182.05399002, 165.53291771,\n 143.56508728, 139.08952618, 128.86957606, 114.10985037,\n 106.63852868, 100.19326683, 94.56620948],\n [423.95760599, 352.62668329, 299.39875312, 260.17705736,\n 228.55860349, 203.06184539, 182.3521197 , 165.40586035,\n 151.33790524, 139.17917706, 129.49139651, 120.64189526,\n 112.97967581, 100.84239401, 95.02381546],\n [382.67244389, 355.02581047, 286.77730673, 261.25810474,\n 230.04451372, 204.42618454, 174.30660848, 157.91733167,\n 144.45087282, 132.78316708, 129.52406484, 120.619202 ,\n 112.88441397, 106.10511222, 98.43229426],\n [425.68004988, 353.13840399, 301.71857855, 246.4744389 ,\n 227.13790524, 201.17256858, 180.65012469, 163.68229426,\n 142.1032419 , 131.00660848, 121.35561097, 118.82493766,\n 111.34900249, 104.40698254, 98.39214464],\n [425.83715711, 336.52319202, 301.66608479, 261.87157107,\n 229.07955112, 192.74376559, 172.65486284, 164.85548628,\n 150.65897756, 138.7925187 , 128.55386534, 119.75361596,\n 112.01932668, 105.25 , 99.36396509],\n [424.95985037, 352.80598504, 304.29800499, 261.89837905,\n 229.05997506, 202.78503741, 172.61895262, 157.21197007,\n 151.29077307, 125.18204489, 122.38466334, 102.00910224,\n 95.46197007, 89.58703242, 84.44276808],\n [430.84900249, 355.34476309, 303.67830424, 249.29763092,\n 230.06321696, 203.24114713, 173.40224439, 157.12793017,\n 151.38852868, 125.19825436, 122.29887781, 102.11209476,\n 101.28927681, 95.11608479, 89.6936409 ],\n [425.88391521, 352.51945137, 300.89413965, 248.32468828,\n 217.48977556, 204.24538653, 183.71583541, 166.2798005 ,\n 151.91683292, 139.87955112, 116.24887781, 108.24850374,\n 101.31770574, 95.16022444, 89.67256858]]), 'var': array([[ 8415.59986748, 87.67101081, 77.02625941, 3250.44950434,\n 37.50036387, 3732.18277691, 5358.63263941, 3527.95638087,\n 1116.04440868, 943.56119643, 808.04301309, 1312.51545084,\n 615.70528882, 1434.6243098 , 1592.27760903],\n [ 104.4909546 , 64.76884976, 8009.00900672, 36.62905057,\n 31.4783605 , 1955.49663746, 20.165905 , 1300.93737245,\n 1092.29816697, 1746.04106996, 2664.97665493, 1301.9487709 ,\n 605.320109 , 535.1538172 , 9.16755025],\n [ 116.18358592, 84.15541763, 8071.31726014, 34.57815528,\n 33.08885658, 3699.30224352, 1586.86523683, 27.81640741,\n 1085.59721208, 1737.04467601, 795.74348037, 16.22220142,\n 601.29664522, 530.9758946 , 472.09081187],\n [ 100.32251284, 131.04013002, 71.65690705, 3247.14207018,\n 4683.83056287, 3706.44795025, 2987.03520455, 1298.29928893,\n 21.98172678, 1738.95368392, 1490.94168127, 1291.28104208,\n 1132.52005827, 999.13330718, 1567.85533635],\n [ 37.38230453, 5880.71536799, 73.87257447, 43.96848805,\n 28.02983892, 25.48434313, 22.80645734, 20.08934951,\n 2049.9381666 , 930.24727861, 1496.25780081, 1294.58753559,\n 1131.06149147, 1014.37849446, 899.62727663],\n [ 45.78980883, 79.57623987, 4335.02403723, 3257.4668362 ,\n 4684.91636636, 3720.04428548, 1602.52772463, 23.47624356,\n 1103.68888278, 12.65216913, 802.27299847, 1306.29146478,\n 1145.53721712, 1012.89548042, 901.38976367],\n [ 8705.77313947, 96.70303953, 113.32045423, 68.90708421,\n 4610.77529137, 1969.22980299, 2949.71319549, 34.80065999,\n 27.70530898, 23.76179259, 22.12006858, 691.00370176,\n 17.31515306, 15.80807537, 14.10963854],\n [ 97.43843625, 101.92317515, 108.10741878, 68.31734907,\n 2471.12858283, 1971.92281174, 41.69988512, 34.95785729,\n 1114.12186827, 24.37405483, 19.93283754, 701.90137404,\n 612.55980652, 540.26337429, 480.81670044],\n [ 144.14138345, 128.241761 , 89.91515905, 82.64492634,\n 64.98875131, 53.44750692, 41.19388536, 35.87697581,\n 31.74278674, 25.47940764, 9.50549342, 8.40489947,\n 7.00040253, 541.7715559 , 481.09008618],\n [16398.21840988, 98.04062305, 4378.63205583, 45.10769118,\n 36.5479495 , 28.75697782, 1618.41764633, 1325.25359623,\n 1110.42971847, 936.90167815, 8.82150688, 7.99868664,\n 7.39714198, 6.26119382, 9.01426252],\n [ 100.47584598, 84.02923707, 81.65990527, 3276.42950658,\n 40.96118998, 33.71890884, 27.30169719, 27.00059726,\n 1086.00745169, 922.14755274, 791.4237955 , 13.70246553,\n 11.80936093, 10.01700711, 9.46842176],\n [ 101.08451135, 6035.29598485, 80.98564679, 53.78256572,\n 42.20127045, 1988.42214344, 1602.63883769, 31.12361831,\n 25.33150035, 20.44058283, 16.76340439, 14.76681526,\n 12.4173033 , 11.22158188, 9.76384194],\n [ 103.58644841, 71.07716532, 60.75052301, 55.1042132 ,\n 40.4925787 , 32.89972363, 1601.50386229, 1328.17106361,\n 25.9435348 , 1762.25391695, 807.64655996, 1851.73589671,\n 1622.20552103, 1428.24981337, 1268.61392309],\n [ 92.10516258, 90.50575548, 84.47960087, 3330.43424125,\n 53.56883867, 45.90330663, 1618.17452261, 1327.56525339,\n 24.91944677, 1761.64234022, 806.21470344, 1856.05684882,\n 1146.65084048, 1011.59651151, 899.71843662],\n [ 45.74707276, 51.32395327, 32.37094015, 3274.69110117,\n 2502.33306099, 18.25034073, 21.53421028, 18.15625251,\n 15.24210501, 13.65562534, 1510.6871155 , 1309.23508391,\n 1147.01866182, 1012.26896405, 898.91483144]])}, 'var': {'min': array([[ 0.00742533, 53658.3740524 , 52097.88488878, 0.02667894,\n 48876.37232356, 0.00248755, 0.00496266, 0.00496266,\n 0.00248755, 0.00248755, 0.01231336, 0.01231336,\n 0.00496266, 0.00248755, 0.00496266],\n [51386.15208861, 54015.83884429, 0.00248755, 54016.43427591,\n 50128.3865772 , 0.01231336, 44680.31196323, 0.01473871,\n 0.00496266, 0.00248755, 0.00248755, 0.00248755,\n 0.00248755, 0.00248755, 26930.48742234],\n [52055.00850119, 55270.70521949, 0.00248755, 54616.29319469,\n 51664.96938452, 0.00248755, 0.00496266, 42425.96577136,\n 0.00742533, 0.00496266, 0.01955212, 32929.14744311,\n 0.00987556, 0.00987556, 0.00987556],\n [51618.51183761, 56785.74292448, 55506.24207561, 0.01715163,\n 0.00496266, 0.00248755, 0.00248755, 0.00987556,\n 40789.06097599, 0.00987556, 0.00496266, 0.00496266,\n 0.00496266, 0.00496266, 0.00248755],\n [50802.88531788, 0.01955212, 57482.24518504, 55917.30944459,\n 54063.21938296, 50686.83407441, 48211.46620979, 44682.11968831,\n 0.00496266, 0.00987556, 0.00496266, 0.00496266,\n 0.00496266, 0.00496266, 0.00496266],\n [53575.26539014, 56738.13874292, 0.00496266, 0.00742533,\n 0.00248755, 0.00248755, 0.00496266, 45574.0480594 ,\n 0.00496266, 40398.50376552, 0.00742533, 0.00496266,\n 0.00496266, 0.00496266, 0.00496266],\n [ 0.00987556, 56966.50785754, 58019.0204041 , 56215.75583485,\n 0.00248755, 0.00496266, 0.00248755, 45250.0892283 ,\n 42534.31358014, 40091.43195627, 38168.735182 , 0.00742533,\n 34301.91503784, 32458.66324214, 30595.97274893],\n [52906.22035933, 57018.41474866, 58196.78847768, 57049.03067767,\n 0.00496266, 0.01473871, 45816.49875312, 43682.56762085,\n 0.00248755, 39021.690288 , 37071.34067574, 0.00248755,\n 0.00248755, 0.00248755, 0.00248755],\n [54801.97602005, 57773.4104763 , 57968.71106523, 55572.00986312,\n 52392.66607795, 49235.78322274, 46614.705518 , 43778.82543019,\n 41627.0835256 , 39171.72015099, 39989.4036853 , 37414.77932351,\n 35515.23190776, 0.00248755, 0.00248755],\n [ 0.00248755, 56493.59406969, 0.01473871, 58333.25684542,\n 55132.01047257, 52910.8341366 , 0.00248755, 0.01473871,\n 0.00496266, 0.00248755, 40464.62651352, 38206.11443959,\n 35765.72515096, 34024.07748708, 32397.29262878],\n [54341.95705251, 55170.38610456, 58922.11736245, 0.00248755,\n 56103.70175559, 53583.53880884, 50833.3284992 , 47757.81777477,\n 0.00496266, 0.00248755, 0.00248755, 38537.88672956,\n 36503.13591333, 34262.76238332, 32552.70224688],\n [53824.79324134, 0.01715163, 59546.33661482, 56244.24718752,\n 56591.61535065, 0.00742533, 0.00496266, 48455.71195453,\n 45873.59540053, 43203.24346242, 40877.75159358, 38763.90364488,\n 36456.74172424, 34704.49401434, 32973.50637123],\n [52577.00516788, 57854.18564561, 59595.67153189, 56362.64439898,\n 56483.88855791, 53647.90366975, 0.00496266, 0.00496266,\n 46119.17195789, 0.00742533, 0.00496266, 0.00248755,\n 0.00248755, 0.00248755, 0.00248755],\n [52341.62543765, 57647.51296323, 57278.62793142, 0.00496266,\n 54538.06333294, 52866.55842936, 0.00496266, 0.00496266,\n 46318.25844367, 0.00742533, 0.00496266, 0.00248755,\n 0.00248755, 0.00248755, 0.00248755],\n [54461.85949092, 57725.08290371, 59244.66335408, 0.00248755,\n 0.00248755, 54485.43259059, 52057.70981524, 48153.18825132,\n 45408.02593267, 42787.27959403, 0.00248755, 0.00248755,\n 0.00248755, 0.00248755, 0.00248755]]), 'max': array([[63134.66922469, 62628.59349133, 60157.33434494, 58554.04768627,\n 54477.1089732 , 52059.11570202, 49958.63085429, 46837.80536191,\n 43664.98535457, 40865.75000155, 38496.69754541, 36153.49615985,\n 34613.42388418, 32500.45675089, 30266.43416397],\n [60173.98253742, 62475.71229035, 60368.66846599, 58645.28979297,\n 57685.07234408, 54284.02635556, 50998.79998259, 48381.86190384,\n 45201.05166013, 43303.94533616, 41102.00560942, 38769.66986524,\n 36096.29066983, 34131.52517708, 31986.3136672 ],\n [59931.0175683 , 62674.41889043, 61768.36871661, 59838.33415215,\n 58259.36456863, 54212.1423623 , 51533.47730425, 48649.33876033,\n 45745.78588442, 43570.84177337, 41194.62718515, 38754.57114073,\n 36253.22693267, 33802.4809796 , 31989.52714224],\n [64216.16478753, 63143.47382168, 63799.48383406, 63554.72422435,\n 58821.06438393, 55779.58249016, 53065.23113662, 49888.75380128,\n 47297.73543697, 44764.21223749, 41783.50268966, 39416.34854261,\n 37299.24154701, 35113.66076082, 33105.9269905 ],\n [62017.98975131, 62753.01197132, 64317.83286174, 63397.84460296,\n 60379.44686911, 58203.29786506, 54151.93472677, 51980.542621 ,\n 49152.04707682, 45624.72755766, 43025.05721979, 40564.50691227,\n 38018.45854192, 36028.04888029, 33894.89496956],\n [61317.94369438, 63618.56298157, 65127.07682166, 62795.84573479,\n 61274.81316658, 57038.50867843, 57204.82041778, 54752.56717309,\n 50030.9731034 , 47125.91621943, 44620.12327038, 41045.7864068 ,\n 38985.92487609, 37116.86776824, 34765.02731948],\n [60315.06389886, 63572.90835256, 65799.64739025, 62469.40923253,\n 59540.69354046, 57202.62978464, 54449.95169184, 52308.54819311,\n 49193.45073725, 46950.25989888, 44435.79971518, 41945.09811506,\n 39903.29450687, 37948.81043028, 35948.37192555],\n [60096.12878029, 67171.3206883 , 66299.63033812, 63002.0274252 ,\n 59754.6922345 , 57479.11837613, 55707.95874404, 52597.4349662 ,\n 50386.76395047, 47462.52005895, 45319.42076231, 42587.297778 ,\n 40060.37515936, 37611.3145565 , 35573.49475439],\n [61691.36062587, 66938.98932221, 64136.29152804, 64453.75885722,\n 60549.42157076, 58469.77952873, 56528.1059073 , 52998.35294557,\n 50816.96964571, 48145.24506688, 45460.85496981, 43285.69525065,\n 41173.19481844, 39436.54150161, 37526.52009627],\n [61842.05262405, 63347.66338518, 65450.09157903, 63922.34887843,\n 61698.98376254, 61955.46152076, 57063.97727626, 53480.85885038,\n 50979.51433138, 47665.98329612, 45434.2768142 , 43526.85807924,\n 41538.142922 , 39466.32126666, 37305.45915759],\n [60534.84539275, 66213.91301049, 68496.73443573, 67714.39300751,\n 62258.3792265 , 58830.27680176, 56868.33540836, 52948.95919801,\n 50700.2154713 , 48115.16182113, 45463.5057369 , 43325.61542528,\n 41216.37214943, 39108.47784529, 37360.08422833],\n [60230.64566763, 66374.45176336, 68751.81274992, 66492.6415383 ,\n 64774.99889926, 61205.13614965, 58287.38584959, 55527.84920492,\n 52551.73521309, 49521.27905921, 47026.51340477, 44301.28757906,\n 42431.64568628, 40117.26619859, 38434.92612608],\n [63378.95994428, 66850.91980771, 66615.8859833 , 66543.76674274,\n 64726.90885007, 61751.38336204, 58455.65379569, 56561.89424195,\n 53953.96533604, 51064.45296982, 49169.26910902, 46128.13967575,\n 44220.46321851, 42022.73926157, 39982.24493629],\n [65673.91968955, 67076.90067848, 66739.93946555, 65739.99902986,\n 64521.63806195, 62766.05856929, 59656.9420215 , 56746.41779591,\n 53855.58163196, 50816.35950025, 48955.83904329, 46673.26077574,\n 40931.52190596, 38998.26253568, 37361.35776519],\n [64243.32545196, 66133.38977991, 65359.78256354, 65778.13446434,\n 63572.00297262, 60833.06576452, 57010.89576557, 53931.90959011,\n 51350.98164812, 48755.93000044, 45766.27156548, 43517.71852165,\n 41247.17828869, 39190.37976132, 37435.83151846]]), 'avg': array([[53031.13767763, 57582.95417379, 56458.61975299, 51791.2924845 ,\n 51758.08007164, 43893.18176753, 36998.69845834, 37128.2327585 ,\n 39182.11554157, 36564.43680201, 34286.59890175, 30331.57809902,\n 30175.55402205, 25170.77167244, 22219.88088258],\n [56357.21858695, 57973.35012282, 52111.27223027, 55934.56562148,\n 53472.49226373, 47891.14426527, 47265.93372802, 42361.19739119,\n 39767.52504773, 35486.12714722, 29659.16190384, 31386.73196124,\n 31036.38069353, 29223.01064608, 29015.4272517 ],\n [56346.99606843, 58662.27129309, 53050.40334264, 56986.08874634,\n 54683.05324967, 46429.56917805, 46184.04113158, 45811.84154763,\n 40836.49295154, 36557.41616346, 36283.08730791, 35888.28521775,\n 32023.30136442, 30186.50255595, 28491.87170167],\n [57638.74368816, 59795.95639517, 59231.30347199, 55562.1276354 ,\n 50271.82059751, 47434.5832302 , 44832.70333891, 44463.88074825,\n 44168.82344886, 37745.59351559, 35492.99650375, 33435.64052898,\n 31601.42661115, 29833.74840704, 25114.5793005 ],\n [56511.91103662, 57123.54259488, 61019.73122058, 59843.13817638,\n 57022.07025392, 53865.21865038, 50895.14122984, 47957.19579107,\n 40803.88570283, 40592.80991225, 36344.92553715, 34217.96189327,\n 32258.1934677 , 30772.55539393, 29053.70352361],\n [57535.65819367, 60298.47373399, 57773.38630606, 56384.68778241,\n 51837.21253599, 48747.58008035, 49096.68085895, 48751.32871748,\n 43719.96637397, 43431.07393549, 38941.68509711, 34804.05862899,\n 32995.89946269, 31328.16155061, 29760.92812545],\n [54283.62971748, 60241.78180795, 61499.49167791, 59420.38388692,\n 50930.1086635 , 51071.45857178, 45897.58553927, 48239.04930566,\n 45500.96465072, 43058.34610108, 40690.39813745, 36702.79171336,\n 36504.92231081, 34699.32215223, 32930.30982643],\n [57189.43489779, 61647.89128177, 61799.04827147, 59881.8144427 ,\n 54307.84558056, 51624.45770611, 52246.76390818, 49644.66811649,\n 44441.66304749, 44198.97628435, 41829.42396751, 37666.30389052,\n 35623.57225017, 33812.11174246, 32203.57679616],\n [58182.96405122, 60662.91114297, 61124.91860498, 60389.05115578,\n 58461.20744025, 55587.72921686, 52814.485867 , 49957.8025659 ,\n 47300.86048967, 44644.63374979, 42330.22946997, 40128.94117574,\n 38132.52649113, 34413.94325533, 32690.02593019],\n [51269.40808764, 60590.82666588, 58505.28069602, 60488.90374562,\n 58285.56939571, 55912.3499176 , 50461.85131249, 47800.20104104,\n 45276.74754386, 42767.4155198 , 42710.03015839, 40474.49221647,\n 38417.79710387, 36552.02314413, 34414.47629057],\n [57634.41854404, 60962.95011101, 63384.39468722, 58598.37470289,\n 58894.34223606, 56225.32163544, 53519.94172549, 50552.78300446,\n 45355.49036822, 42959.6832016 , 40680.04326155, 40532.80379537,\n 38577.92382386, 36518.84728329, 34704.9918906 ],\n [57744.01091598, 58249.78040995, 63551.20484885, 62080.78897022,\n 59943.7739473 , 54707.47292368, 52064.03306509, 52123.90499873,\n 49309.79197891, 46696.10913676, 44225.49192356, 41919.36375147,\n 39764.84504139, 37810.87140441, 36075.12101915],\n [58772.04061791, 61306.68419537, 63120.8140366 , 62281.77660711,\n 60148.28449761, 57778.60419214, 52251.05917003, 49242.46156118,\n 49017.05695363, 41693.14236914, 41582.90834199, 35323.00429475,\n 33558.64477833, 31849.96717558, 30323.14402336],\n [57895.09011698, 62235.83061983, 62571.45955436, 59384.96782296,\n 60623.11706519, 57736.64377833, 52229.41928782, 49399.1448144 ,\n 49303.87797775, 41888.39192107, 41731.50058209, 35579.54018694,\n 35637.18767296, 33882.3422572 , 32287.6130192 ],\n [58824.3475563 , 62440.23364842, 62180.93967388, 58236.53290278,\n 56664.32007637, 57388.81912053, 54914.98341926, 51940.03204271,\n 49186.91893334, 46625.67300887, 39715.337478 , 37691.19106722,\n 35845.86892992, 34081.23466583, 32449.3495283 ]]), 'var': array([[1.55705280e+08, 5.41627283e+06, 3.54329628e+06, 1.45354670e+08,\n 2.46313039e+06, 2.17061364e+08, 3.45144557e+08, 2.45948009e+08,\n 8.29658261e+07, 7.28657576e+07, 6.41333031e+07, 1.04374227e+08,\n 5.00601964e+07, 1.13627251e+08, 1.24866166e+08],\n [6.45942418e+06, 5.01501698e+06, 3.04357025e+08, 1.93598251e+06,\n 4.63464334e+06, 1.24081167e+08, 3.24396901e+06, 9.78427789e+07,\n 8.62344233e+07, 1.42415232e+08, 2.22283072e+08, 1.11710274e+08,\n 5.26690140e+07, 4.69775363e+07, 1.79806675e+06],\n [4.41916496e+06, 3.99432202e+06, 3.15584801e+08, 2.29197747e+06,\n 4.07201969e+06, 2.42587499e+08, 1.15129157e+08, 2.42363148e+06,\n 8.99986964e+07, 1.50658591e+08, 7.13593441e+07, 1.92567963e+06,\n 5.56477786e+07, 4.94054880e+07, 4.39892460e+07],\n [9.84437573e+06, 2.93686315e+06, 4.53329687e+06, 1.66468305e+08,\n 2.83527388e+08, 2.53234295e+08, 2.26907788e+08, 1.06804483e+08,\n 2.35215807e+06, 1.61063001e+08, 1.42510810e+08, 1.26109200e+08,\n 1.12689528e+08, 1.00364035e+08, 1.58779037e+08],\n [6.78214973e+06, 1.75178155e+08, 2.24044298e+06, 3.70639390e+06,\n 3.24863869e+06, 3.60064616e+06, 2.77702654e+06, 3.43543537e+06,\n 1.87992882e+08, 8.92736948e+07, 1.49242415e+08, 1.32523365e+08,\n 1.17512208e+08, 1.06217235e+08, 9.47962845e+07],\n [4.23121107e+06, 3.64802071e+06, 1.78893636e+08, 1.69017021e+08,\n 3.00180813e+08, 2.65883578e+08, 1.30117929e+08, 3.88539789e+06,\n 1.03565174e+08, 2.47871669e+06, 8.19639071e+07, 1.35795472e+08,\n 1.22147846e+08, 1.10146795e+08, 9.92794642e+07],\n [1.59169908e+08, 3.26878305e+06, 4.18396798e+06, 2.60787686e+06,\n 2.90705059e+08, 1.40218370e+08, 2.36847555e+08, 3.30541739e+06,\n 2.81469824e+06, 2.99466922e+06, 2.71809135e+06, 7.34177620e+07,\n 2.50212583e+06, 2.33632659e+06, 2.15832337e+06],\n [4.39683962e+06, 5.79701933e+06, 4.21816495e+06, 2.87480267e+06,\n 1.57555033e+08, 1.42809547e+08, 4.35672383e+06, 4.06603259e+06,\n 1.08020854e+08, 3.71956723e+06, 3.07077145e+06, 7.72057179e+07,\n 6.89526710e+07, 6.18976947e+07, 5.60077093e+07],\n [3.48771142e+06, 3.82775012e+06, 3.41877051e+06, 5.18775406e+06,\n 3.90214524e+06, 4.66236354e+06, 4.54559249e+06, 4.42422922e+06,\n 4.43932262e+06, 4.08513151e+06, 2.02103675e+06, 1.81290493e+06,\n 1.69797471e+06, 6.39366750e+07, 5.77366346e+07],\n [2.95536117e+08, 3.34307569e+06, 1.84360787e+08, 2.40917446e+06,\n 2.21617943e+06, 3.37466507e+06, 1.36664705e+08, 1.22389558e+08,\n 1.09675466e+08, 9.77230802e+07, 1.71117576e+06, 1.79915755e+06,\n 1.73784679e+06, 1.56379112e+06, 1.80362359e+06],\n [2.46043135e+06, 4.73596664e+06, 6.19921976e+06, 1.84781137e+08,\n 1.82648072e+06, 2.19733579e+06, 2.55817271e+06, 2.71489350e+06,\n 1.11222768e+08, 9.94653902e+07, 8.93963594e+07, 2.08012123e+06,\n 1.99193258e+06, 1.75731004e+06, 1.77503411e+06],\n [2.74422515e+06, 1.81406143e+08, 6.03323399e+06, 5.98358370e+06,\n 5.02079343e+06, 1.61577587e+08, 1.46923060e+08, 3.82292229e+06,\n 3.31925908e+06, 2.55315812e+06, 2.32204512e+06, 2.18771707e+06,\n 1.98254710e+06, 1.77960818e+06, 1.66053923e+06],\n [6.81521359e+06, 5.04510990e+06, 2.94320814e+06, 5.94265551e+06,\n 4.91623331e+06, 3.94094607e+06, 1.47736300e+08, 1.30657567e+08,\n 3.74404047e+06, 1.96362333e+08, 9.42749066e+07, 2.22792131e+08,\n 2.01294150e+08, 1.81338262e+08, 1.64261395e+08],\n [8.52336928e+06, 7.12435178e+06, 7.11968501e+06, 1.90684919e+08,\n 6.31800799e+06, 4.51678481e+06, 1.46990992e+08, 1.31375648e+08,\n 3.31070636e+06, 1.97933391e+08, 9.47515550e+07, 2.26192246e+08,\n 1.42663706e+08, 1.28934548e+08, 1.17013129e+08],\n [5.23325980e+06, 5.81287324e+06, 2.23787485e+06, 1.83637858e+08,\n 1.71573559e+08, 2.23613848e+06, 2.00517983e+06, 2.10766590e+06,\n 2.16661631e+06, 2.13801062e+06, 1.76987609e+08, 1.59476990e+08,\n 1.44169776e+08, 1.30522315e+08, 1.18189648e+08]])}, 'final': {'min': array([[ 0., 74., 51., 0., 14., 0., 0., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [129., 71., 0., 22., 14., 0., 3., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [134., 71., 0., 22., 12., 0., 0., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [131., 71., 35., 0., 0., 0., 0., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [134., 0., 33., 22., 11., 5., 2., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [138., 69., 0., 0., 0., 0., 0., 1., 0., 0., 0.,\n 0., 0., 0., 0.],\n [ 0., 69., 35., 19., 0., 0., 0., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [133., 69., 31., 18., 0., 0., 1., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [111., 67., 35., 24., 7., 6., 1., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [ 0., 69., 0., 21., 10., 4., 0., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [122., 68., 34., 0., 10., 4., 1., 1., 0., 0., 0.,\n 0., 0., 0., 0.],\n [122., 0., 34., 19., 7., 0., 0., 1., 0., 0., 0.,\n 0., 0., 0., 0.],\n [118., 70., 37., 18., 7., 4., 0., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [118., 69., 35., 0., 9., 4., 0., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [126., 64., 35., 0., 0., 3., 0., 0., 0., 0., 0.,\n 0., 0., 0., 0.]]), 'max': array([[177., 119., 74., 51., 31., 21., 13., 8., 4., 2., 3.,\n 2., 1., 1., 1.],\n [171., 113., 71., 45., 28., 20., 13., 8., 6., 4., 2.,\n 2., 2., 2., 1.],\n [175., 100., 75., 44., 26., 17., 12., 9., 6., 4., 2.,\n 2., 1., 1., 0.],\n [178., 101., 62., 36., 29., 15., 10., 8., 5., 2., 3.,\n 3., 2., 2., 2.],\n [166., 103., 64., 39., 28., 14., 10., 6., 4., 3., 3.,\n 3., 2., 1., 0.],\n [181., 108., 60., 43., 29., 17., 10., 8., 5., 3., 4.,\n 1., 1., 1., 0.],\n [170., 107., 61., 38., 23., 16., 12., 7., 5., 4., 5.,\n 2., 2., 2., 1.],\n [160., 104., 62., 35., 25., 16., 9., 7., 4., 3., 2.,\n 1., 1., 1., 0.],\n [161., 105., 63., 35., 23., 20., 9., 8., 4., 3., 2.,\n 2., 2., 1., 1.],\n [167., 104., 64., 39., 23., 12., 10., 6., 4., 4., 2.,\n 2., 2., 1., 1.],\n [160., 97., 65., 36., 25., 13., 8., 6., 5., 3., 3.,\n 2., 1., 1., 1.],\n [159., 98., 65., 41., 25., 13., 7., 5., 4., 3., 2.,\n 2., 2., 1., 1.],\n [156., 96., 62., 41., 24., 13., 7., 9., 6., 4., 2.,\n 1., 1., 1., 0.],\n [165., 102., 73., 38., 24., 15., 10., 9., 6., 4., 2.,\n 1., 1., 1., 1.],\n [159., 94., 59., 40., 20., 15., 9., 7., 4., 3., 2.,\n 2., 1., 1., 1.]]), 'avg': array([[152.4 , 93.45, 59.05, 34.1 , 20.75, 12.55, 5.15, 3.35,\n 2.25, 1.05, 0.6 , 0.3 , 0.25, 0.05, 0.05],\n [155.6 , 90.15, 50.05, 33.5 , 20.8 , 10.5 , 6.8 , 4. ,\n 2.7 , 1.4 , 0.7 , 0.65, 0.3 , 0.2 , 0.15],\n [153.05, 88.4 , 48.25, 33.15, 18.7 , 10. , 5.8 , 3.45,\n 2. , 1. , 0.75, 0.4 , 0.2 , 0.15, 0. ],\n [153.55, 90. , 52.8 , 28.4 , 15.65, 9.45, 4.95, 2.7 ,\n 2.05, 1.2 , 0.95, 0.65, 0.6 , 0.35, 0.15],\n [149.75, 83.2 , 49.85, 31.45, 18.2 , 10.25, 6. , 3.5 ,\n 1.9 , 1.4 , 0.95, 0.65, 0.55, 0.1 , 0. ],\n [153.3 , 87.25, 48. , 26.15, 16.1 , 10.35, 5.6 , 4.25,\n 2.05, 1.4 , 0.85, 0.4 , 0.2 , 0.1 , 0. ],\n [142.35, 85.95, 49.25, 28.05, 15.2 , 9.55, 5.05, 3.25,\n 1.7 , 1.15, 0.9 , 0.45, 0.25, 0.2 , 0.1 ],\n [146.05, 87. , 48.6 , 26.85, 16.05, 9.3 , 5.5 , 3.35,\n 1.8 , 1.3 , 0.5 , 0.2 , 0.05, 0.05, 0. ],\n [141.85, 84.4 , 49.3 , 28.75, 16.35, 10.6 , 5.5 , 3.35,\n 1.75, 1.3 , 0.7 , 0.35, 0.2 , 0.15, 0.1 ],\n [131.7 , 85.5 , 46.6 , 29.65, 16.8 , 9.5 , 6.05, 2.9 ,\n 1.7 , 1.1 , 0.7 , 0.35, 0.2 , 0.15, 0.05],\n [144.1 , 83.55, 47.65, 25.5 , 17. , 8.9 , 5. , 2.6 ,\n 1.6 , 0.8 , 0.6 , 0.3 , 0.15, 0.05, 0.05],\n [143.65, 78.45, 47.65, 26. , 15.7 , 7.85, 4.25, 2.55,\n 1.75, 1.1 , 0.6 , 0.45, 0.35, 0.15, 0.15],\n [139.5 , 82.8 , 47.6 , 25.95, 15.7 , 8.15, 4.25, 3.05,\n 1.75, 1.1 , 0.7 , 0.2 , 0.05, 0.05, 0. ],\n [144.65, 85.15, 48.25, 25.7 , 16.55, 8.2 , 5.05, 3.05,\n 1.7 , 1.1 , 0.7 , 0.15, 0.25, 0.15, 0.05],\n [140.25, 79.1 , 48.25, 24.9 , 13.85, 9.6 , 4.7 , 3.3 ,\n 1.95, 1.15, 0.4 , 0.35, 0.25, 0.15, 0.05]]), 'var': array([[1349.94 , 123.0475, 28.7475, 98.39 , 22.7875, 24.6475,\n 13.4275, 5.0275, 1.7875, 0.7475, 1.04 , 0.31 ,\n 0.1875, 0.0475, 0.0475],\n [ 146.54 , 67.6275, 319.2475, 30.55 , 13.96 , 28.35 ,\n 5.36 , 4.2 , 2.91 , 1.34 , 0.81 , 0.6275,\n 0.41 , 0.36 , 0.1275],\n [ 119.7475, 64.84 , 305.1875, 28.1275, 11.71 , 21.1 ,\n 9.46 , 5.1475, 3. , 1.2 , 0.5875, 0.44 ,\n 0.16 , 0.1275, 0. ],\n [ 173.4475, 59.6 , 43.26 , 58.24 , 52.4275, 16.1475,\n 7.7475, 4.01 , 2.3475, 0.76 , 0.5475, 0.7275,\n 0.54 , 0.4275, 0.2275],\n [ 97.2875, 428.16 , 54.8275, 25.0475, 16.76 , 5.6875,\n 5.4 , 3.55 , 1.49 , 0.74 , 0.5475, 0.7275,\n 0.5475, 0.09 , 0. ],\n [ 149.31 , 105.1875, 144.5 , 59.4275, 46.69 , 19.5275,\n 6.44 , 2.4875, 1.7475, 0.94 , 1.0275, 0.24 ,\n 0.16 , 0.09 , 0. ],\n [1173.0275, 84.7475, 46.9875, 25.6475, 34.46 , 14.5475,\n 9.9475, 3.8875, 1.31 , 1.1275, 1.29 , 0.4475,\n 0.2875, 0.26 , 0.09 ],\n [ 54.3475, 54.7 , 57.74 , 19.6275, 25.9475, 16.21 ,\n 4.25 , 3.9275, 1.36 , 1.01 , 0.35 , 0.16 ,\n 0.0475, 0.0475, 0. ],\n [ 191.4275, 103.34 , 50.01 , 10.7875, 15.9275, 11.94 ,\n 4.65 , 4.0275, 1.3875, 1.01 , 0.51 , 0.3275,\n 0.26 , 0.1275, 0.09 ],\n [2039.41 , 60.65 , 161.44 , 21.1275, 12.06 , 5.55 ,\n 4.9475, 2.79 , 1.71 , 0.89 , 0.51 , 0.3275,\n 0.26 , 0.1275, 0.0475],\n [ 106.99 , 76.5475, 61.8275, 57.15 , 14.5 , 7.19 ,\n 2.6 , 2.34 , 1.84 , 0.86 , 0.64 , 0.41 ,\n 0.1275, 0.0475, 0.0475],\n [ 119.2275, 387.1475, 54.9275, 34.7 , 18.81 , 9.9275,\n 3.2875, 0.8475, 0.9875, 0.79 , 0.44 , 0.4475,\n 0.3275, 0.1275, 0.1275],\n [ 114.75 , 50.46 , 49.64 , 36.2475, 18.11 , 7.7275,\n 3.3875, 3.5475, 2.1875, 1.29 , 0.41 , 0.16 ,\n 0.0475, 0.0475, 0. ],\n [ 114.6275, 73.9275, 77.0875, 63.51 , 15.1475, 8.56 ,\n 6.6475, 3.5475, 2.31 , 1.29 , 0.41 , 0.1275,\n 0.1875, 0.1275, 0.0475],\n [ 68.8875, 65.19 , 28.9875, 52.29 , 16.3275, 14.24 ,\n 4.31 , 3.21 , 1.3475, 0.6275, 0.54 , 0.5275,\n 0.1875, 0.1275, 0.0475]])}}, 'Recovered': {'min': {'min': array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'max': array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'avg': array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'var': array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])}, 'max': {'min': array([[ 1., 881., 926., 1., 969., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1.],\n [829., 887., 1., 955., 972., 1., 987., 1., 1., 1., 1.,\n 1., 1., 1., 999.],\n [825., 900., 1., 956., 974., 1., 1., 991., 1., 1., 1.,\n 998., 1., 1., 1.],\n [822., 899., 938., 1., 1., 1., 1., 1., 995., 1., 1.,\n 1., 1., 1., 1.],\n [834., 1., 936., 961., 972., 986., 990., 994., 1., 1., 1.,\n 1., 1., 1., 1.],\n [819., 892., 1., 1., 1., 1., 1., 992., 1., 997., 1.,\n 1., 1., 1., 1.],\n [ 1., 893., 939., 962., 1., 1., 1., 993., 995., 996., 995.,\n 1., 998., 998., 999.],\n [840., 896., 938., 965., 1., 1., 991., 993., 1., 997., 998.,\n 1., 1., 1., 1.],\n [839., 895., 937., 965., 977., 980., 991., 992., 996., 997., 998.,\n 998., 998., 1., 1.],\n [ 1., 896., 1., 961., 977., 988., 1., 1., 1., 1., 998.,\n 998., 998., 999., 999.],\n [840., 903., 935., 1., 975., 987., 992., 994., 1., 1., 1.,\n 998., 999., 999., 999.],\n [841., 1., 935., 959., 975., 1., 1., 995., 996., 997., 998.,\n 998., 998., 999., 999.],\n [844., 904., 938., 959., 976., 987., 1., 1., 994., 1., 1.,\n 1., 1., 1., 1.],\n [835., 898., 927., 1., 976., 985., 1., 1., 994., 1., 1.,\n 1., 1., 1., 1.],\n [841., 906., 941., 1., 1., 985., 991., 993., 996., 997., 1.,\n 1., 1., 1., 1.]]), 'max': array([[ 868., 926., 949., 974., 986., 989., 998., 998., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 871., 929., 957., 978., 986., 996., 997., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 866., 929., 957., 978., 988., 994., 998., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 869., 929., 965., 979., 994., 994., 998., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 866., 927., 967., 978., 989., 995., 998., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 862., 931., 958., 982., 987., 996., 998., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 870., 931., 965., 981., 988., 995., 999., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 867., 931., 969., 982., 989., 996., 999., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 889., 933., 965., 976., 993., 994., 999., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 874., 931., 964., 979., 990., 996., 997., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 878., 932., 966., 983., 990., 996., 999., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 878., 930., 966., 981., 993., 996., 999., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 882., 930., 963., 982., 993., 996., 999., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 882., 931., 965., 985., 991., 996., 997., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 874., 936., 965., 981., 990., 997., 1000., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.]]), 'avg': array([[797.65, 906.55, 940.95, 915.95, 979.25, 887.55, 795.05, 846.8 ,\n 947.75, 948.9 , 949.3 , 899.6 , 949.45, 849.65, 799.5 ],\n [844.4 , 909.85, 850.05, 966.5 , 979.2 , 939.55, 993.2 , 946.05,\n 947.35, 898.7 , 799.5 , 899.45, 949.75, 949.85, 999.8 ],\n [846.95, 911.6 , 851.85, 966.85, 981.3 , 890.1 , 944.25, 996.55,\n 948.05, 899.1 , 949.3 , 999.6 , 949.85, 949.9 , 950.05],\n [846.45, 910. , 947.2 , 921.65, 884.45, 890.7 , 895.15, 947.35,\n 997.95, 898.95, 899.15, 899.45, 899.55, 899.8 , 800.15],\n [850.25, 866.85, 950.15, 968.55, 981.8 , 989.75, 994. , 996.5 ,\n 898.2 , 948.65, 899.15, 899.45, 899.6 , 900. , 900.1 ],\n [846.7 , 912.75, 902.05, 923.9 , 884. , 889.75, 944.45, 995.75,\n 948. , 998.6 , 949.2 , 899.7 , 899.9 , 900. , 900.1 ],\n [807.7 , 914.05, 950.75, 971.95, 884.9 , 940.5 , 895.05, 996.75,\n 998.3 , 998.85, 999.1 , 949.6 , 999.75, 999.8 , 999.9 ],\n [853.95, 913. , 951.4 , 973.15, 934. , 940.75, 994.5 , 996.65,\n 948.25, 998.7 , 999.5 , 949.85, 950. , 950. , 950.05],\n [858.15, 915.6 , 950.7 , 971.25, 983.65, 989.4 , 994.5 , 996.65,\n 998.25, 998.7 , 999.3 , 999.65, 999.8 , 949.9 , 949.95],\n [768.4 , 914.5 , 903.45, 970.35, 983.2 , 990.5 , 944. , 947.15,\n 948.35, 948.95, 999.3 , 999.65, 999.8 , 999.85, 999.95],\n [855.9 , 916.45, 952.35, 924.55, 983. , 991.1 , 995. , 997.4 ,\n 948.45, 949.25, 949.45, 999.7 , 999.85, 999.95, 999.95],\n [856.35, 871.6 , 952.35, 974. , 984.3 , 942.2 , 945.8 , 997.45,\n 998.25, 998.9 , 999.4 , 999.55, 999.65, 999.85, 999.85],\n [860.5 , 917.2 , 952.4 , 974.05, 984.3 , 991.85, 945.8 , 947. ,\n 998.25, 899. , 949.35, 849.95, 850.1 , 850.1 , 850.15],\n [855.35, 914.85, 951.75, 924.35, 983.45, 991.8 , 945. , 947. ,\n 998.3 , 899. , 949.35, 850. , 899.85, 899.95, 900.05],\n [859.75, 920.9 , 951.75, 925.15, 936.2 , 990.4 , 995.3 , 996.7 ,\n 998.05, 998.85, 899.7 , 899.75, 899.85, 899.95, 900.05]]), 'var': array([[ 33530.2275, 123.0475, 28.7475, 44096.8475, 22.7875,\n 87337.2475, 157635.6475, 126246.16 , 47177.1875, 47290.89 ,\n 47331.61 , 89720.84 , 47345.5475, 127095.7275, 159401.15 ],\n [ 146.54 , 67.6275, 80139.3475, 30.55 , 13.96 ,\n 46384.4475, 5.36 , 47009.6475, 47138.2275, 89541.71 ,\n 159401.25 , 89690.8475, 47375.4875, 47385.4275, 0.16 ],\n [ 119.7475, 64.84 , 80484.9275, 28.1275, 11.71 ,\n 87843.19 , 46835.0875, 5.1475, 47208.2475, 89621.49 ,\n 47330.71 , 0.44 , 47385.2275, 47390.19 , 47405.0475],\n [ 173.4475, 59.6 , 43.26 , 44626.1275, 86745.6475,\n 87859.21 , 88838.8275, 47139.3275, 2.3475, 89491.3475,\n 89630.8275, 89690.9475, 89610.9475, 89660.76 , 159460.7275],\n [ 97.2875, 39521.5275, 54.8275, 25.0475, 16.76 ,\n 5.6875, 5.4 , 3.55 , 89441.96 , 47265.9275,\n 89630.8275, 89690.9475, 89620.94 , 89800.2 , 89820.09 ],\n [ 149.31 , 105.1875, 42754.3475, 44852.09 , 86650. ,\n 87771.6875, 46852.0475, 2.4875, 47202. , 0.94 ,\n 47321.16 , 89740.41 , 89780.29 , 89800.2 , 89820.09 ],\n [ 34357.31 , 84.7475, 46.9875, 25.6475, 86817.59 ,\n 46465.55 , 88821.0475, 3.8875, 1.31 , 1.1275,\n 1.29 , 47360.54 , 0.2875, 0.26 , 0.09 ],\n [ 54.3475, 54.7 , 57.74 , 19.6275, 45827.6 ,\n 46492.1875, 4.25 , 3.9275, 47226.5875, 1.01 ,\n 0.35 , 47385.2275, 47400.1 , 47400.1 , 47405.0475],\n [ 191.4275, 103.34 , 50.01 , 10.7875, 15.9275,\n 11.94 , 4.65 , 4.0275, 1.3875, 1.01 ,\n 0.51 , 0.3275, 0.26 , 47390.19 , 47395.1475],\n [ 65545.84 , 60.65 , 42911.1475, 21.1275, 12.06 ,\n 5.55 , 46805.6 , 47118.1275, 47236.9275, 47296.0475,\n 0.51 , 0.3275, 0.26 , 0.1275, 0.0475],\n [ 106.99 , 76.5475, 61.8275, 44914.7475, 14.5 ,\n 7.19 , 2.6 , 2.34 , 47247.0475, 47325.9875,\n 47345.7475, 0.41 , 0.1275, 0.0475, 0.0475],\n [ 119.2275, 39955.04 , 54.9275, 34.7 , 18.81 ,\n 46630.76 , 46983.76 , 0.8475, 0.9875, 0.79 ,\n 0.44 , 0.4475, 0.3275, 0.1275, 0.1275],\n [ 114.75 , 50.46 , 49.64 , 36.2475, 18.11 ,\n 7.7275, 46983.86 , 47103.9 , 2.1875, 89601.6 ,\n 47335.5275, 127185.3475, 127230.19 , 127230.19 , 127245.1275],\n [ 114.6275, 73.9275, 77.0875, 44901.1275, 15.1475,\n 8.56 , 46907.2 , 47103.9 , 2.31 , 89601.6 ,\n 47335.5275, 127200.3 , 89770.3275, 89790.2475, 89810.1475],\n [ 68.8875, 65.19 , 28.9875, 44969.8275, 46037.76 ,\n 14.24 , 4.31 , 3.21 , 1.3475, 0.6275,\n 89740.71 , 89750.6875, 89770.3275, 89790.2475, 89810.1475]])}, 'avg': {'min': array([[ 0.9925187 , 498.54114713, 548.8478803 , 0.97256858,\n 653.40399002, 0.9925187 , 0.97506234, 0.98503741,\n 0.99750623, 0.99750623, 0.98753117, 0.98004988,\n 0.99501247, 0.98503741, 0.97256858],\n [480.91022444, 524.97755611, 0.98753117, 628.27182045,\n 626.86284289, 0.98753117, 707.14214464, 0.98503741,\n 0.99501247, 0.98503741, 0.98753117, 0.99501247,\n 0.99750623, 0.99750623, 786.79551122],\n [493.93765586, 559.20947631, 0.99002494, 641.22194514,\n 677.58852868, 0.97755611, 0.99501247, 719.9201995 ,\n 0.9925187 , 0.97755611, 0.98004988, 787.45885287,\n 0.99002494, 0.99002494, 0.99002494],\n [445.35910224, 558.16458853, 603.92518703, 0.98254364,\n 0.9925187 , 0.99750623, 0.99750623, 0.99002494,\n 758.13466334, 0.99002494, 0.99501247, 0.99501247,\n 0.99501247, 0.99501247, 0.99501247],\n [493.58354115, 0.98004988, 613.10224439, 650.98753117,\n 684.57605985, 709.56109726, 742.28927681, 762.50374065,\n 0.99501247, 0.99002494, 0.99501247, 0.99501247,\n 0.99501247, 0.9925187 , 0.9925187 ],\n [499.51620948, 567.32917706, 0.99501247, 0.9925187 ,\n 0.99501247, 0.99501247, 0.99501247, 762.40897756,\n 0.99501247, 769.74314214, 0.9925187 , 0.9925187 ,\n 0.9925187 , 0.9925187 , 0.9925187 ],\n [ 0.99002494, 566.04738155, 625.16209476, 654.28927681,\n 0.9925187 , 0.99501247, 0.99002494, 770.83291771,\n 781.02743142, 798.9925187 , 794.63591022, 0.9925187 ,\n 828.53117207, 834.36159601, 832.37905237],\n [507.97007481, 573.19201995, 631.81795511, 658.46882793,\n 0.99501247, 0.98503741, 755.95760599, 762.86533666,\n 0.99750623, 796.00997506, 781.17206983, 0.99750623,\n 0.99750623, 0.99750623, 0.99750623],\n [512.82543641, 580.95261845, 644.32917706, 670.2394015 ,\n 701.65336658, 738.60598504, 759.34912718, 767.13715711,\n 775.72817955, 799.5286783 , 816.36907731, 826.6159601 ,\n 833.9925187 , 0.99750623, 0.99750623],\n [ 0.99750623, 586.00997506, 0.98503741, 688.82044888,\n 714.55361596, 737.06733167, 0.99750623, 0.98503741,\n 0.99501247, 0.99750623, 819.73566085, 829.58852868,\n 837.80299252, 843.3765586 , 842.83790524],\n [515.03990025, 592.0074813 , 627.80548628, 0.99750623,\n 723.38902743, 742.65336658, 764.83790524, 782.67581047,\n 0.99501247, 0.99750623, 0.99750623, 824.53865337,\n 833.26683292, 840.42144638, 846.49376559],\n [516.7755611 , 0.98254364, 631.44389027, 679.46134663,\n 721.82543641, 0.9925187 , 0.99501247, 783.43142145,\n 797.7680798 , 814.69825436, 818.80299252, 825.49376559,\n 833.10972569, 839.98004988, 846.02244389],\n [523.72069825, 602.60099751, 638.55860349, 679.25436409,\n 723.77306733, 749.67581047, 0.99501247, 0.99501247,\n 798.18952618, 0.9925187 , 0.99501247, 0.99501247,\n 0.99501247, 0.99501247, 0.99501247],\n [518.92518703, 591.2394015 , 640.28678304, 0.99501247,\n 714.66832918, 742.69825436, 0.99501247, 0.99501247,\n 800.3915212 , 0.9925187 , 0.99501247, 0.99501247,\n 0.99750623, 0.99750623, 0.99750623],\n [524.90523691, 595.94763092, 650.73815461, 0.99750623,\n 0.99750623, 753.79052369, 772.63840399, 788.25685786,\n 802.70573566, 822.02244389, 0.98503741, 0.98503741,\n 0.99750623, 0.99750623, 0.99750623]]), 'max': array([[507.13216958, 582.42394015, 625.81296758, 671.2319202 ,\n 696.27930175, 724.55860349, 736.61845387, 757.66583541,\n 779.01496259, 790.43890274, 793.41396509, 799.51870324,\n 811.4563591 , 817.680798 , 817.6882793 ],\n [526.44887781, 593.30922693, 636.50623441, 673.47880299,\n 716.05486284, 735.35162095, 750.48628429, 770.84289277,\n 781.89775561, 794.9201995 , 806.97755611, 816.29177057,\n 820.03241895, 825.86284289, 830.01496259],\n [532.86284289, 607.38902743, 645.32668329, 683.98503741,\n 717.69825436, 747.59850374, 769.79551122, 779.92518703,\n 792.97755611, 805.21945137, 814.86783042, 823.4563591 ,\n 830.53865337, 836.41147132, 842.19700748],\n [540.88528678, 607.8553616 , 659.3915212 , 703.54114713,\n 726.97755611, 754.82793017, 775.54613466, 786.41895262,\n 799.81546135, 816.40399002, 822.58852868, 831.02244389,\n 838.65586035, 843.69077307, 847.70074813],\n [542.32169576, 609.61845387, 667.63341646, 704.05236908,\n 733.10972569, 752.34663342, 768.35162095, 795.48877805,\n 814.53117207, 821.42892768, 828.18952618, 836.48129676,\n 843.73566085, 852.7680798 , 858.62593516],\n [535.55860349, 610.30673317, 663.11471322, 700.42892768,\n 738.30174564, 760.91770574, 776.51870324, 793.19201995,\n 809.32668329, 824.17456359, 836.42892768, 844.6957606 ,\n 851.04987531, 857.02244389, 862.66583541],\n [541.36159601, 615.93266833, 672.78304239, 706.8478803 ,\n 743.28179551, 766.63092269, 784.57107232, 801.17456359,\n 816.10224439, 828.89276808, 839.2967581 , 845.20448878,\n 852.39900249, 858.58354115, 864.17955112],\n [552.48129676, 622.47630923, 675.57605985, 712.64588529,\n 743.6159601 , 767.50623441, 790.56359102, 812.29925187,\n 824.6084788 , 838.11221945, 844.23441397, 852.22693267,\n 859.52369077, 865.2394015 , 870.3117207 ],\n [567.60349127, 636.46633416, 678.99002494, 731.04488778,\n 744.52618454, 778.49376559, 793.16708229, 815.3042394 ,\n 827.59850374, 840.86533666, 839.01995012, 846.66334165,\n 854.16458853, 860.33665835, 866.16957606],\n [551.37157107, 628.02992519, 678.56608479, 710.37157107,\n 748.32917706, 770.58104738, 786.97506234, 802.21197007,\n 820.3915212 , 831.64089776, 841.44638404, 848.94264339,\n 856.52618454, 863.11471322, 876.05236908],\n [562.71321696, 629.02992519, 677.45386534, 724.66832918,\n 753.53865337, 773.32668329, 796.36658354, 813.7605985 ,\n 830.27930175, 841.25935162, 850.55610973, 859.26932668,\n 866.31670823, 872.64837905, 878.2967581 ],\n [564.81047382, 631.22194514, 679.95012469, 718.97506234,\n 755.06483791, 783.45386534, 800.4713217 , 810.46134663,\n 827.33665835, 837.9201995 , 850.80299252, 859.60099751,\n 867.28927681, 871.19201995, 876.77306733],\n [561.6084788 , 628.42144638, 685.71321696, 719.5436409 ,\n 755.11221945, 784.34164589, 801.88279302, 808.17456359,\n 826.78304239, 836. , 846.02493766, 855.63591022,\n 862.680798 , 868.90024938, 874.72069825],\n [552.64089776, 634.5286783 , 682.65336658, 723.20698254,\n 747.91521197, 774.4638404 , 791.48379052, 809.78054863,\n 827.49625935, 836.99750623, 847.94264339, 857.02493766,\n 863.17955112, 869.72817955, 875.88279302],\n [557.2244389 , 631.86284289, 683.55361596, 718.22693267,\n 749.40648379, 776.09975062, 794.75810474, 812.79052369,\n 826.87032419, 835.7605985 , 849.16458853, 857.26184539,\n 864.38902743, 871.19700748, 876.8478803 ]]), 'avg': array([[465.84413965, 559.28503741, 603.22394015, 607.64451372,\n 672.23815461, 634.05785536, 579.20947631, 624.59600998,\n 718.70972569, 721.76346633, 729.31608479, 699.0574813 ,\n 749.19002494, 678.27805486, 641.73104738],\n [500.85573566, 572.79064838, 553.39825436, 655.08316708,\n 685.65723192, 680.09588529, 732.61421446, 711.23740648,\n 722.54351621, 694.78715711, 628.65760599, 714.46047382,\n 759.35660848, 765.38678304, 810.50436409],\n [512.05511222, 579.36122195, 565.83927681, 668.1861596 ,\n 698.5 , 654.47581047, 714.51084788, 761.59177057,\n 735.86708229, 705.67007481, 755.30922693, 803.50710723,\n 769.93902743, 775.5617207 , 780.85124688],\n [511.24713217, 580.50174564, 636.61408978, 643.64476309,\n 634.19775561, 657.40798005, 681.24102244, 729.2265586 ,\n 782.58466334, 713.01957606, 724.57456359, 732.21209476,\n 736.19563591, 741.80523691, 665.2659601 ],\n [522.77194514, 559.15261845, 641.43528678, 679.96770574,\n 713.74102244, 737.9744389 , 760.08640898, 775.96284289,\n 710.86084788, 759.7765586 , 730.80374065, 738.70947631,\n 743.2361596 , 749.34127182, 754.75673317],\n [518.49451372, 589.16832918, 611.40598504, 652.26571072,\n 644.15099751, 670.28004988, 725.94501247, 779.90199501,\n 754.23690773, 804.29064838, 774.780798 , 743.340399 ,\n 750.00399002, 755.06159601, 760.0946384 ],\n [497.96870324, 596.84713217, 651.67955112, 694.40760599,\n 651.70473815, 713.02680798, 693.18004988, 786.7680798 ,\n 800.33815461, 813.90723192, 823.91745636, 789.56122195,\n 839.47418953, 846.02805486, 850.90024938],\n [530.60261845, 595.95997506, 654.93865337, 696.32693267,\n 691.50336658, 716.34438903, 772.49413965, 787.22157107,\n 761.92705736, 816.68441397, 823.60698254, 791.52381546,\n 798.47331671, 804.78054863, 810.39975062],\n [533.4734414 , 606.90561097, 658.80822943, 698.00548628,\n 727.23815461, 754.54713217, 774.90074813, 790.31471322,\n 804.59962594, 819.62992519, 828.94389027, 836.55274314,\n 843.95623441, 808.60336658, 814.26309227],\n [481.77992519, 606.019202 , 625.44625935, 699.15972569,\n 732.76433915, 754.13703242, 733.98902743, 752.35249377,\n 767.69850374, 778.03017456, 831.62930175, 839.37805486,\n 846.81034913, 854.17568579, 861.44002494],\n [536.53740648, 610.02493766, 659.85623441, 671.30610973,\n 737.83354115, 760.99501247, 781.98665835, 799.05935162,\n 771.62830424, 782.16658354, 792.35261845, 842.96396509,\n 851.26620948, 858.08453865, 864.00648379],\n [537.96583541, 582.4872818 , 661.87992519, 702.79738155,\n 738.07817955, 725.66832918, 743.09837905, 799.88491272,\n 815.05137157, 828.16895262, 837.12793017, 846.81695761,\n 854.4521197 , 860.85648379, 866.72144638],\n [541.7584788 , 615.83640898, 662.93977556, 705.38865337,\n 740.06521197, 765.79800499, 744.96009975, 759.60411471,\n 814.47256858, 743.91259352, 796.81620948, 720.30785536,\n 726.81359102, 732.64925187, 737.8105985 ],\n [537.60349127, 612.56221945, 665.26147132, 670.67568579,\n 737.68466334, 764.43765586, 745.62356608, 761.3819202 ,\n 816.26446384, 745.53578554, 798.55561097, 721.68054863,\n 770.72506234, 776.88154613, 782.29451372],\n [543.91945137, 614.52830424, 668.14563591, 673.05922693,\n 704.48977556, 766.04189526, 783.48703242, 803.52855362,\n 817.60074813, 830.01084788, 757.12605985, 765.14164589,\n 772.15311721, 778.17793017, 783.64426434]]), 'var': array([[ 11489.67157698, 279.73474114, 269.15286883,\n 19877.79014526, 177.4050861 , 44739.74773639,\n 83670.14919248, 68873.09224445, 27216.75905834,\n 27538.35744073, 28231.10931516, 54318.62079121,\n 29696.39513908, 81043.93849821, 102788.05126416],\n [ 136.59758539, 242.35590355, 34095.09221155,\n 173.06420064, 331.64903109, 24439.55947443,\n 184.25525221, 26731.76378169, 27576.09208181,\n 53725.0500266 , 98676.90530911, 56778.97096926,\n 30598.18768042, 31074.90405091, 147.59719459],\n [ 127.11942706, 178.00334281, 35667.50549902,\n 104.08409169, 109.84202368, 47589.25691295,\n 26887.31147896, 144.66414394, 28556.02404531,\n 55316.03267212, 30058.88384587, 120.30873954,\n 31258.38145439, 31732.55807046, 32164.38502701],\n [ 345.65218494, 176.47415352, 179.42226036,\n 21888.09373603, 44747.75743565, 48019.4333626 ,\n 51492.63117038, 28019.86563098, 120.49743688,\n 56461.12616046, 58256.49397292, 59493.63316054,\n 60142.88824975, 61057.43296553, 110310.20925322],\n [ 101.17509747, 16522.71298848, 121.66678097,\n 153.52806355, 128.42350002, 73.55720355,\n 34.97356315, 85.27724013, 56078.16831525,\n 30453.64855467, 59252.56488337, 60535.92010777,\n 61235.14741706, 62370.85517893, 63273.8168783 ],\n [ 86.93162984, 168.46048066, 19722.29401471,\n 22413.70459542, 46104.67310992, 49834.98515252,\n 27722.97888662, 62.54737788, 29946.93464655,\n 132.45936 , 31628.07087698, 61338.6575211 ,\n 62438.82788565, 63303.69338319, 64151.81942493],\n [ 13087.57678651, 147.72956829, 121.73063818,\n 147.37803153, 47144.76051418, 26723.64319804,\n 53272.54857594, 77.60127238, 88.75629157,\n 80.16089054, 119.78716047, 32795.38589715,\n 62.30355052, 61.5378666 , 60.7689579 ],\n [ 103.33697755, 178.33661512, 94.11525264,\n 151.50807078, 25182.79522222, 26980.85384911,\n 90.7494184 , 171.3274546 , 30610.48455848,\n 90.96153163, 163.88615332, 33045.57665032,\n 33617.09287293, 34145.63870374, 34619.28066934],\n [ 181.60034034, 166.64027355, 87.8704653 ,\n 195.64361764, 130.02608846, 89.25272069,\n 87.66967531, 150.05787253, 140.67594945,\n 83.72090994, 41.37476228, 39.55706325,\n 37.08811728, 34361.245977 , 34844.01580618],\n [ 25795.2541675 , 120.62808322, 20623.69597731,\n 39.57645318, 78.00714206, 58.67355954,\n 28356.94551427, 29763.9550956 , 30983.95311466,\n 31829.0647172 , 36.89045919, 36.05857202,\n 32.50803383, 26.90370176, 55.64452925],\n [ 155.37529338, 116.83706071, 108.79838451,\n 23717.28403671, 59.02813345, 56.35845299,\n 44.85562483, 63.12903813, 31324.12151944,\n 32182.93379556, 33019.87436795, 60.04620585,\n 55.44987461, 52.71090659, 49.59638398],\n [ 200.5787732 , 17879.24906773, 103.54650797,\n 110.90381768, 66.71990863, 27696.2872165 ,\n 29040.21290444, 51.62131285, 55.36954397,\n 32.67954545, 52.82607577, 52.46091343,\n 51.2065846 , 48.06085502, 46.51212747],\n [ 117.72542352, 58.25233139, 101.91805168,\n 107.15693701, 58.25629398, 55.48684523,\n 29183.68121156, 30348.47918662, 39.46149371,\n 61357.41497968, 33349.7420054 , 91329.70130128,\n 92987.17673887, 94485.61678178, 95821.21739136],\n [ 118.36868116, 93.79079824, 108.74560561,\n 23708.40238088, 93.57591587, 58.85420209,\n 29209.02098959, 30488.40538198, 37.50249904,\n 61623.40433659, 33495.83922463, 91678.9151833 ,\n 65846.70390972, 66903.4256948 , 67839.67566302],\n [ 68.56810163, 69.01042548, 50.76620133,\n 23819.81978089, 26072.7463277 , 36.38655145,\n 45.86399407, 39.70840136, 42.84193438,\n 18.47488217, 63546.26308946, 64897.81826643,\n 66090.03531719, 67126.29358728, 68072.94329779]])}, 'var': {'min': array([[ 0.00742533, 81039.18328866, 89824.91831518, 0.02667894,\n 98665.93578398, 0.00248755, 0.00496266, 0.00496266,\n 0.00248755, 0.00248755, 0.01231336, 0.01231336,\n 0.00496266, 0.00248755, 0.00496266],\n [64806.18565805, 81317.44773975, 0.00248755, 93814.32436365,\n 92308.37984838, 0.01231336, 94555.63909428, 0.01473871,\n 0.00496266, 0.00248755, 0.00248755, 0.00248755,\n 0.00248755, 0.00248755, 91468.42614163],\n [65362.4977581 , 79695.01546632, 0.00248755, 89860.82591526,\n 85438.52711115, 0.00248755, 0.00496266, 90281.83505078,\n 0.00742533, 0.00496266, 0.01955212, 86039.54137101,\n 0.00987556, 0.00987556, 0.00987556],\n [65694.52589225, 77830.97615065, 82154.85336534, 0.01715163,\n 0.00496266, 0.00248755, 0.00248755, 0.00987556,\n 85944.40145273, 0.00987556, 0.00496266, 0.00496266,\n 0.00496266, 0.00496266, 0.00248755],\n [63440.60321764, 0.01955212, 81830.18589437, 84871.68324824,\n 86503.17998022, 87672.76198531, 87884.95755623, 81250.12518579,\n 0.00496266, 0.00987556, 0.00496266, 0.00496266,\n 0.00496266, 0.00496266, 0.00496266],\n [64188.27369233, 75717.77982724, 0.00496266, 0.00742533,\n 0.00248755, 0.00248755, 0.00496266, 82630.76710966,\n 0.00496266, 77516.0094278 , 0.00742533, 0.00496266,\n 0.00496266, 0.00496266, 0.00496266],\n [ 0.00987556, 72884.0014179 , 80106.65012034, 79989.95425402,\n 0.00248755, 0.00496266, 0.00248755, 77237.35107369,\n 77432.10473815, 74399.3153152 , 73056.56630245, 0.00742533,\n 70176.83830324, 69015.51484133, 67856.35678883],\n [62621.30046455, 74284.50879037, 77750.36415196, 80224.44889024,\n 0.00496266, 0.01473871, 78797.78767545, 74502.73339096,\n 0.00248755, 69821.54601029, 68423.61609691, 0.00248755,\n 0.00248755, 0.00248755, 0.00248755],\n [64238.37303251, 72762.42549487, 75982.02440283, 76244.70122698,\n 80575.89352056, 76859.02801599, 77717.49627179, 72656.70544337,\n 71315.06323966, 68032.27613012, 70305.42145882, 69492.97144918,\n 68054.47166373, 0.00248755, 0.00248755],\n [ 0.00248755, 72288.09859391, 0.01473871, 77858.69046834,\n 78189.8061828 , 76886.15736221, 0.00248755, 0.01473871,\n 0.00496266, 0.00248755, 68921.48873452, 67959.88533653,\n 66462.8777433 , 65544.71502043, 61531.07207045],\n [63407.83612042, 70449.54593566, 75617.31012867, 0.00248755,\n 78154.73569194, 76164.30472447, 75311.18168419, 72375.22020385,\n 0.00496266, 0.00248755, 0.00248755, 64460.55090453,\n 62890.196454 , 61358.70678665, 59938.99173513],\n [61799.13750536, 0.01715163, 75272.69396335, 72185.64715394,\n 77347.65242753, 0.00742533, 0.00496266, 74113.13769193,\n 71428.86671103, 69903.36889696, 66252.87640002, 64160.84324102,\n 62120.95871294, 60987.00302859, 59627.03827713],\n [60092.6516253 , 69872.91475799, 75415.10754286, 71483.81057332,\n 76590.27330676, 72819.30223071, 0.00496266, 0.00496266,\n 70563.54644561, 0.00742533, 0.00496266, 0.00248755,\n 0.00248755, 0.00248755, 0.00248755],\n [58920.45860411, 68394.05207679, 71668.86569113, 0.00496266,\n 74641.26624834, 74752.53882749, 0.00496266, 0.00496266,\n 70136.24001095, 0.00742533, 0.00496266, 0.00248755,\n 0.00248755, 0.00248755, 0.00248755],\n [61960.38060709, 69231.17106237, 74090.6808291 , 0.00248755,\n 0.00248755, 73410.35014708, 72356.26073221, 70222.07083289,\n 67862.94806624, 66771.73865834, 0.00248755, 0.00248755,\n 0.00248755, 0.00248755, 0.00248755]]), 'max': array([[ 81568.81157455, 97472.19548386, 107904.29356783,\n 121669.71590973, 113151.48527683, 120746.21532204,\n 116959.97787327, 125261.55638336, 121904.07256174,\n 129140.81243276, 133378.59475998, 125473.53834864,\n 130025.98512447, 115367.0064614 , 129795.58525134],\n [ 78490.29780909, 92707.11611246, 103910.73209744,\n 107789.04011791, 120872.31784628, 115284.54092947,\n 118202.89689741, 118085.4064216 , 124140.81826606,\n 122692.07503685, 117252.66102823, 120675.30672073,\n 137537.22444512, 137495.11437118, 117016.9756407 ],\n [ 77619.39642166, 90423.79797389, 100939.59955473,\n 103346.69138874, 109883.08505544, 106777.22874858,\n 104886.1207082 , 117424.36769672, 114892.27751071,\n 116296.41421384, 109155.31496695, 108226.37903993,\n 111123.68170596, 113022.19468784, 112357.32291466],\n [ 78470.67043115, 92760.21545886, 95081.97507478,\n 102746.18205111, 104713.17198276, 113227.54216703,\n 101373.06106305, 111504.97435961, 109726.59034459,\n 113063.97712701, 102376.96261839, 101888.88418604,\n 109098.81407454, 108474.13256136, 107627.44884671],\n [ 74552.97120043, 87228.6860032 , 91056.08379301,\n 100427.45356061, 102761.84521241, 102249.0741973 ,\n 99156.23053339, 99595.17708223, 99928.34436353,\n 108176.36722408, 97875.98899261, 96876.29753546,\n 97423.6244302 , 106054.04680319, 105382.77228375],\n [ 74035.15598784, 86317.31424556, 91753.52740344,\n 95812.40898999, 104631.83791146, 99386.67758285,\n 98199.15160975, 98912.54775779, 99328.20400371,\n 107430.64474723, 100272.09032282, 103345.39614803,\n 102447.23580077, 101308.14082002, 100514.45488523],\n [ 73121.34057624, 82193.47333661, 90573.03878707,\n 97262.90883763, 93294.82306702, 92188.02635556,\n 96452.07655425, 91361.05188401, 98094.67385153,\n 92574.2896375 , 95332.90484512, 87738.24545867,\n 86491.96473903, 85858.0812184 , 89937.6967183 ],\n [ 72602.51513361, 87151.14894808, 90793.50848564,\n 95728.82758192, 93209.63812414, 89852.94444686,\n 96157.35231746, 101352.14146678, 98904.29814491,\n 89613.24678329, 104693.35941941, 104237.28709399,\n 103431.39509083, 102705.51980398, 101935.12012985],\n [ 74866.06570855, 83269.3229271 , 84419.22177101,\n 91568.43645251, 95459.68283779, 89801.31888483,\n 94310.70604039, 99090.10338244, 96250.83135055,\n 87524.57835461, 86145.44188158, 84732.11186498,\n 83543.76802383, 84023.32655891, 83108.90559138],\n [ 72242.26943862, 80613.90513741, 88527.18680854,\n 86690.28227436, 87957.29737999, 91627.91815971,\n 90868.51328039, 92457.75562341, 94465.8244787 ,\n 87929.85746357, 83837.03379954, 82537.60495271,\n 81086.03849479, 78929.05770487, 85033.35277766],\n [ 69506.41111685, 81287.94944061, 87559.97027382,\n 85405.72705394, 87991.69903172, 89751.30877296,\n 86394.72933626, 85434.02956449, 89199.31490476,\n 89214.33884118, 88027.1422317 , 86533.9975622 ,\n 85460.10087002, 83931.96452758, 82598.1651731 ],\n [ 68808.12406639, 80688.05023601, 87688.26523467,\n 87717.2518952 , 88409.21259196, 86398.94376279,\n 87275.50241603, 85444.81387554, 84004.51728534,\n 79761.75184234, 88855.40507833, 83308.43449979,\n 82056.54656377, 80776.03451471, 79633.01445887],\n [ 72240.45269619, 82553.32643454, 86173.24407187,\n 86770.99408586, 87168.95550401, 86471.66048719,\n 85836.33533374, 86696.32775916, 80794.62089166,\n 80748.38938813, 77306.47852936, 74722.69145092,\n 73248.25313275, 71682.26422721, 69863.48843602],\n [ 73644.8300819 , 82661.95894304, 83276.80014428,\n 88717.92409251, 96548.00221392, 91337.15988085,\n 84616.00135571, 85490.30673939, 79683.97019919,\n 79430.30063246, 75998.41279594, 73722.45115391,\n 69366.32023433, 67770.91810374, 66370.16239949],\n [ 71826.25576955, 80362.77941058, 82266.61571756,\n 82682.1905212 , 87439.63469133, 84822.33517204,\n 84422.56141442, 83892.64973477, 82191.71889478,\n 77544.79790549, 74799.05327703, 72850.4487783 ,\n 68248.85570363, 66732.92041716, 65283.38552621]]), 'avg': array([[ 70306.31759691, 88817.57279059, 98112.1436154 ,\n 98493.05019247, 107173.30477982, 95383.80303108,\n 86040.51590475, 93938.10464736, 101361.91229346,\n 105107.05631184, 105649.75773285, 99544.13912165,\n 101904.72211802, 89228.2627409 , 84031.0373729 ],\n [ 72748.74257498, 85865.8146075 , 85993.12574051,\n 99807.78786015, 102391.36303008, 97134.12197996,\n 104547.36499462, 99293.26713826, 99782.40465296,\n 94239.32324986, 81517.07645972, 91421.80864049,\n 96699.00884074, 96101.89023824, 101309.52286118],\n [ 72110.76406925, 84500.44360732, 82346.08275881,\n 95291.94023047, 97677.71421073, 87820.87105553,\n 90729.31097195, 99012.70386814, 93743.99444717,\n 89150.81807825, 92783.79933583, 96887.41552416,\n 91433.29076312, 90947.98787072, 90257.99671084],\n [ 71766.95132928, 82859.78232722, 88427.30499748,\n 88235.40538243, 86719.73437976, 86560.04432933,\n 83900.74427895, 91133.91533448, 94554.07307604,\n 85070.29801991, 82666.46044241, 81780.67958595,\n 82550.16811525, 81876.52137114, 71484.34831624],\n [ 69481.35057431, 77512.48616302, 87649.02566464,\n 91829.77301323, 92430.44970491, 93194.04052214,\n 91722.07869603, 91130.87674082, 81381.96942867,\n 85452.06860156, 78997.09610015, 77889.09498946,\n 78298.56489139, 76867.67910274, 75868.04401776],\n [ 69300.05350215, 79709.28400259, 82373.67856792,\n 84529.64013905, 82763.98177064, 80340.44664399,\n 84803.52095758, 88995.37269296, 83184.31970199,\n 87215.21688671, 80902.77209594, 74631.84630817,\n 73666.46511589, 73233.41454344, 72433.17922463],\n [ 64712.45976518, 77746.58222523, 84815.36442995,\n 86314.34622484, 79140.15579754, 81874.65845237,\n 77648.35217318, 85092.73496558, 84094.10616787,\n 81568.07514195, 80166.87385651, 75733.8723248 ,\n 78038.01087058, 76867.26820418, 76421.14627894],\n [ 68078.85760412, 79107.57088513, 83718.71415103,\n 85630.19177741, 81720.30962929, 80225.2285446 ,\n 84603.50777918, 84394.86048408, 78548.87907351,\n 79542.58712819, 80101.60826176, 74294.11168525,\n 73267.77137767, 72119.61862364, 71013.28870716],\n [ 68208.98262013, 76281.93273736, 81477.05435476,\n 83858.50298568, 85697.47679492, 84158.00977108,\n 83292.42221939, 82671.46303319, 81096.93270378,\n 77699.88951623, 76398.02657819, 75735.64077835,\n 74542.68365806, 69314.12525855, 68164.32445258],\n [ 59725.3311901 , 75333.68002687, 76642.55711967,\n 82743.73257318, 81810.00664859, 83500.05192692,\n 79581.22194638, 77216.53025354, 74649.25274345,\n 73893.34733988, 74687.25977948, 73900.08827806,\n 72646.29901618, 70883.95707863, 69615.29414307],\n [ 66464.56009042, 75063.0144371 , 81765.96960031,\n 77464.40891848, 81395.33081635, 81989.32232013,\n 80550.61913483, 78745.37492055, 73675.12299115,\n 72464.14568628, 70559.43844939, 72621.57356795,\n 70625.70382149, 69149.22808129, 67831.12925977],\n [ 66131.92529648, 70461.95089521, 81040.46064515,\n 81891.93131262, 80905.52697185, 76485.62671812,\n 76677.3765443 , 78725.77953184, 76264.60063495,\n 73639.69926617, 72660.63461546, 70318.21480899,\n 68730.89997575, 67471.95059297, 66121.98733777],\n [ 66798.27447342, 73696.50768963, 78893.61360812,\n 80801.43702402, 79952.13783248, 79480.31649243,\n 75625.95734604, 74155.53678149, 75760.13987351,\n 66628.6149116 , 67297.38481415, 58951.25018315,\n 57628.98140559, 56319.77178998, 55104.52466589],\n [ 65199.43669318, 74449.22814846, 77706.03777278,\n 76410.99455911, 80854.65569431, 79776.15550214,\n 74617.03169694, 73109.99451558, 74652.58878179,\n 65576.87455737, 66148.03785735, 58013.26830368,\n 59877.07922774, 58505.04655817, 57243.93635176],\n [ 66145.97304121, 74845.78715244, 77263.02730207,\n 74541.26112524, 74555.82526352, 77728.29024695,\n 78206.802546 , 74801.26671849, 73076.17547155,\n 71009.47699517, 61971.97451073, 60397.79633336,\n 58894.33874416, 57575.16714759, 56274.15920672]]), 'var': array([[2.71903527e+08, 1.40861777e+07, 2.31072018e+07, 5.54936810e+08,\n 2.40618965e+07, 1.05561976e+09, 1.86913104e+09, 1.60456824e+09,\n 5.69798776e+08, 6.40563879e+08, 6.74623136e+08, 1.16137929e+09,\n 6.27428952e+08, 1.43917844e+09, 1.81730648e+09],\n [1.04889228e+07, 7.42325550e+06, 8.37959932e+08, 1.94088820e+07,\n 4.09684158e+07, 5.26064036e+08, 3.80492795e+07, 5.66226797e+08,\n 5.68817559e+08, 1.05131115e+09, 1.71567996e+09, 1.00211369e+09,\n 5.94461347e+08, 5.91393563e+08, 5.27482782e+07],\n [7.10789784e+06, 5.99234514e+06, 7.67089784e+08, 1.36394815e+07,\n 3.26281649e+07, 8.74634761e+08, 4.50666015e+08, 3.33069898e+07,\n 5.06492585e+08, 9.35308168e+08, 5.00352140e+08, 5.21125749e+07,\n 5.03031968e+08, 5.08104893e+08, 5.03215718e+08],\n [1.46354307e+07, 1.13754199e+07, 1.12509146e+07, 4.23912046e+08,\n 8.56497192e+08, 8.68468455e+08, 7.95381833e+08, 4.68733810e+08,\n 4.06425257e+07, 8.60194170e+08, 7.84995991e+08, 7.71620875e+08,\n 8.16475206e+08, 8.04422940e+08, 1.33711005e+09],\n [7.73125623e+06, 3.25265462e+08, 6.21810025e+06, 1.60448833e+07,\n 1.63035776e+07, 1.39941406e+07, 8.77175180e+06, 2.48915781e+07,\n 7.59211319e+08, 4.30232311e+08, 7.17101522e+08, 6.97407929e+08,\n 7.20323973e+08, 7.14102421e+08, 6.99144110e+08],\n [7.74291413e+06, 7.12321586e+06, 3.61202462e+08, 3.84715852e+08,\n 7.82949625e+08, 7.28206528e+08, 3.92959529e+08, 2.27387415e+07,\n 3.86697133e+08, 4.28391288e+07, 3.85838561e+08, 6.58409240e+08,\n 6.43086448e+08, 6.45528230e+08, 6.35553153e+08],\n [2.27827000e+08, 5.24590629e+06, 6.94868426e+06, 1.09969234e+07,\n 7.06099022e+08, 3.61724877e+08, 6.82144923e+08, 1.64118363e+07,\n 3.05659369e+07, 2.80827423e+07, 3.15779440e+07, 3.22725574e+08,\n 2.00679731e+07, 2.12671971e+07, 3.06611568e+07],\n [8.12607869e+06, 9.41751307e+06, 9.18734275e+06, 1.10309217e+07,\n 3.62401710e+08, 3.43270196e+08, 2.17171598e+07, 4.42844819e+07,\n 3.56237276e+08, 2.18697321e+07, 6.18834208e+07, 3.49713801e+08,\n 3.41400021e+08, 3.35080223e+08, 3.27778588e+08],\n [6.18556343e+06, 6.04297239e+06, 5.32460566e+06, 1.14345808e+07,\n 1.08987861e+07, 1.02528447e+07, 2.03516806e+07, 3.78060655e+07,\n 3.22788528e+07, 1.98771110e+07, 2.06514291e+07, 2.13506780e+07,\n 2.13857918e+07, 2.70354018e+08, 2.62605338e+08],\n [4.02300853e+08, 6.18352822e+06, 3.16058689e+08, 5.95551376e+06,\n 5.23607046e+06, 1.13418317e+07, 3.48990235e+08, 3.33514021e+08,\n 3.12925806e+08, 3.04892124e+08, 1.86935565e+07, 1.97775292e+07,\n 1.90034549e+07, 1.37158628e+07, 2.96474526e+07],\n [3.03559887e+06, 8.73041392e+06, 1.07462938e+07, 3.20661061e+08,\n 5.86596345e+06, 7.76312324e+06, 9.46289164e+06, 1.02749272e+07,\n 3.05205039e+08, 2.98128283e+08, 2.85026833e+08, 2.51485534e+07,\n 2.65071295e+07, 2.67813931e+07, 2.65320949e+07],\n [3.18510069e+06, 2.66709840e+08, 1.08520708e+07, 1.55131450e+07,\n 9.13297640e+06, 3.16946575e+08, 3.23869415e+08, 8.57613262e+06,\n 9.76677638e+06, 6.97420193e+06, 2.27774116e+07, 1.70114532e+07,\n 1.83571284e+07, 1.69962265e+07, 1.74191538e+07],\n [9.76190460e+06, 8.23213765e+06, 6.68773550e+06, 1.46571961e+07,\n 8.47064535e+06, 8.80849431e+06, 3.14271619e+08, 3.01198532e+08,\n 9.56524008e+06, 5.03123306e+08, 2.42614067e+08, 6.17877221e+08,\n 5.90779306e+08, 5.64334270e+08, 5.40213737e+08],\n [9.36220297e+06, 1.04248024e+07, 1.06098485e+07, 3.17446952e+08,\n 2.88173175e+07, 1.28170968e+07, 3.04076816e+08, 2.92371424e+08,\n 8.30466739e+06, 4.86670844e+08, 2.34244923e+08, 5.98452324e+08,\n 4.04268550e+08, 3.86179116e+08, 3.70065135e+08],\n [6.67876537e+06, 6.90410114e+06, 5.91340339e+06, 2.98195571e+08,\n 3.01364657e+08, 7.77080079e+06, 1.26904131e+07, 1.43082493e+07,\n 1.17454115e+07, 6.87893387e+06, 4.33760445e+08, 4.12135377e+08,\n 3.90678723e+08, 3.73905182e+08, 3.57377629e+08]])}, 'final': {'min': array([[ 1., 881., 926., 1., 969., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1.],\n [829., 887., 1., 955., 972., 1., 987., 1., 1., 1., 1.,\n 1., 1., 1., 999.],\n [825., 900., 1., 956., 974., 1., 1., 991., 1., 1., 1.,\n 998., 1., 1., 1.],\n [822., 899., 938., 1., 1., 1., 1., 1., 995., 1., 1.,\n 1., 1., 1., 1.],\n [834., 1., 936., 961., 972., 986., 990., 994., 1., 1., 1.,\n 1., 1., 1., 1.],\n [819., 892., 1., 1., 1., 1., 1., 992., 1., 997., 1.,\n 1., 1., 1., 1.],\n [ 1., 893., 939., 962., 1., 1., 1., 993., 995., 996., 995.,\n 1., 998., 998., 999.],\n [840., 896., 938., 965., 1., 1., 991., 993., 1., 997., 998.,\n 1., 1., 1., 1.],\n [839., 895., 937., 965., 977., 980., 991., 992., 996., 997., 998.,\n 998., 998., 1., 1.],\n [ 1., 896., 1., 961., 977., 988., 1., 1., 1., 1., 998.,\n 998., 998., 999., 999.],\n [840., 903., 935., 1., 975., 987., 992., 994., 1., 1., 1.,\n 998., 999., 999., 999.],\n [841., 1., 935., 959., 975., 1., 1., 995., 996., 997., 998.,\n 998., 998., 999., 999.],\n [844., 904., 938., 959., 976., 987., 1., 1., 994., 1., 1.,\n 1., 1., 1., 1.],\n [835., 898., 927., 1., 976., 985., 1., 1., 994., 1., 1.,\n 1., 1., 1., 1.],\n [841., 906., 941., 1., 1., 985., 991., 993., 996., 997., 1.,\n 1., 1., 1., 1.]]), 'max': array([[ 868., 926., 949., 974., 986., 989., 998., 998., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 871., 929., 957., 978., 986., 996., 997., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 866., 929., 957., 978., 988., 994., 998., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 869., 929., 965., 979., 994., 994., 998., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 866., 927., 967., 978., 989., 995., 998., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 862., 931., 958., 982., 987., 996., 998., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 870., 931., 965., 981., 988., 995., 999., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 867., 931., 969., 982., 989., 996., 999., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 889., 933., 965., 976., 993., 994., 999., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 874., 931., 964., 979., 990., 996., 997., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 878., 932., 966., 983., 990., 996., 999., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 878., 930., 966., 981., 993., 996., 999., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 882., 930., 963., 982., 993., 996., 999., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 882., 931., 965., 985., 991., 996., 997., 999., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.],\n [ 874., 936., 965., 981., 990., 997., 1000., 1000., 1000.,\n 1000., 1000., 1000., 1000., 1000., 1000.]]), 'avg': array([[797.65, 906.55, 940.95, 915.95, 979.25, 887.55, 795.05, 846.8 ,\n 947.75, 948.9 , 949.3 , 899.6 , 949.45, 849.65, 799.5 ],\n [844.4 , 909.85, 850.05, 966.5 , 979.2 , 939.55, 993.2 , 946.05,\n 947.35, 898.7 , 799.5 , 899.45, 949.75, 949.85, 999.8 ],\n [846.95, 911.6 , 851.85, 966.85, 981.3 , 890.1 , 944.25, 996.55,\n 948.05, 899.1 , 949.3 , 999.6 , 949.85, 949.9 , 950.05],\n [846.45, 910. , 947.2 , 921.65, 884.45, 890.7 , 895.15, 947.35,\n 997.95, 898.95, 899.15, 899.45, 899.55, 899.8 , 800.15],\n [850.25, 866.85, 950.15, 968.55, 981.8 , 989.75, 994. , 996.5 ,\n 898.2 , 948.65, 899.15, 899.45, 899.6 , 900. , 900.1 ],\n [846.7 , 912.75, 902.05, 923.9 , 884. , 889.75, 944.45, 995.75,\n 948. , 998.6 , 949.2 , 899.7 , 899.9 , 900. , 900.1 ],\n [807.7 , 914.05, 950.75, 971.95, 884.9 , 940.5 , 895.05, 996.75,\n 998.3 , 998.85, 999.1 , 949.6 , 999.75, 999.8 , 999.9 ],\n [853.95, 913. , 951.4 , 973.15, 934. , 940.75, 994.5 , 996.65,\n 948.25, 998.7 , 999.5 , 949.85, 950. , 950. , 950.05],\n [858.15, 915.6 , 950.7 , 971.25, 983.65, 989.4 , 994.5 , 996.65,\n 998.25, 998.7 , 999.3 , 999.65, 999.8 , 949.9 , 949.95],\n [768.4 , 914.5 , 903.45, 970.35, 983.2 , 990.5 , 944. , 947.15,\n 948.35, 948.95, 999.3 , 999.65, 999.8 , 999.85, 999.95],\n [855.9 , 916.45, 952.35, 924.55, 983. , 991.1 , 995. , 997.4 ,\n 948.45, 949.25, 949.45, 999.7 , 999.85, 999.95, 999.95],\n [856.35, 871.6 , 952.35, 974. , 984.3 , 942.2 , 945.8 , 997.45,\n 998.25, 998.9 , 999.4 , 999.55, 999.65, 999.85, 999.85],\n [860.5 , 917.2 , 952.4 , 974.05, 984.3 , 991.85, 945.8 , 947. ,\n 998.25, 899. , 949.35, 849.95, 850.1 , 850.1 , 850.15],\n [855.35, 914.85, 951.75, 924.35, 983.45, 991.8 , 945. , 947. ,\n 998.3 , 899. , 949.35, 850. , 899.85, 899.95, 900.05],\n [859.75, 920.9 , 951.75, 925.15, 936.2 , 990.4 , 995.3 , 996.7 ,\n 998.05, 998.85, 899.7 , 899.75, 899.85, 899.95, 900.05]]), 'var': array([[ 33530.2275, 123.0475, 28.7475, 44096.8475, 22.7875,\n 87337.2475, 157635.6475, 126246.16 , 47177.1875, 47290.89 ,\n 47331.61 , 89720.84 , 47345.5475, 127095.7275, 159401.15 ],\n [ 146.54 , 67.6275, 80139.3475, 30.55 , 13.96 ,\n 46384.4475, 5.36 , 47009.6475, 47138.2275, 89541.71 ,\n 159401.25 , 89690.8475, 47375.4875, 47385.4275, 0.16 ],\n [ 119.7475, 64.84 , 80484.9275, 28.1275, 11.71 ,\n 87843.19 , 46835.0875, 5.1475, 47208.2475, 89621.49 ,\n 47330.71 , 0.44 , 47385.2275, 47390.19 , 47405.0475],\n [ 173.4475, 59.6 , 43.26 , 44626.1275, 86745.6475,\n 87859.21 , 88838.8275, 47139.3275, 2.3475, 89491.3475,\n 89630.8275, 89690.9475, 89610.9475, 89660.76 , 159460.7275],\n [ 97.2875, 39521.5275, 54.8275, 25.0475, 16.76 ,\n 5.6875, 5.4 , 3.55 , 89441.96 , 47265.9275,\n 89630.8275, 89690.9475, 89620.94 , 89800.2 , 89820.09 ],\n [ 149.31 , 105.1875, 42754.3475, 44852.09 , 86650. ,\n 87771.6875, 46852.0475, 2.4875, 47202. , 0.94 ,\n 47321.16 , 89740.41 , 89780.29 , 89800.2 , 89820.09 ],\n [ 34357.31 , 84.7475, 46.9875, 25.6475, 86817.59 ,\n 46465.55 , 88821.0475, 3.8875, 1.31 , 1.1275,\n 1.29 , 47360.54 , 0.2875, 0.26 , 0.09 ],\n [ 54.3475, 54.7 , 57.74 , 19.6275, 45827.6 ,\n 46492.1875, 4.25 , 3.9275, 47226.5875, 1.01 ,\n 0.35 , 47385.2275, 47400.1 , 47400.1 , 47405.0475],\n [ 191.4275, 103.34 , 50.01 , 10.7875, 15.9275,\n 11.94 , 4.65 , 4.0275, 1.3875, 1.01 ,\n 0.51 , 0.3275, 0.26 , 47390.19 , 47395.1475],\n [ 65545.84 , 60.65 , 42911.1475, 21.1275, 12.06 ,\n 5.55 , 46805.6 , 47118.1275, 47236.9275, 47296.0475,\n 0.51 , 0.3275, 0.26 , 0.1275, 0.0475],\n [ 106.99 , 76.5475, 61.8275, 44914.7475, 14.5 ,\n 7.19 , 2.6 , 2.34 , 47247.0475, 47325.9875,\n 47345.7475, 0.41 , 0.1275, 0.0475, 0.0475],\n [ 119.2275, 39955.04 , 54.9275, 34.7 , 18.81 ,\n 46630.76 , 46983.76 , 0.8475, 0.9875, 0.79 ,\n 0.44 , 0.4475, 0.3275, 0.1275, 0.1275],\n [ 114.75 , 50.46 , 49.64 , 36.2475, 18.11 ,\n 7.7275, 46983.86 , 47103.9 , 2.1875, 89601.6 ,\n 47335.5275, 127185.3475, 127230.19 , 127230.19 , 127245.1275],\n [ 114.6275, 73.9275, 77.0875, 44901.1275, 15.1475,\n 8.56 , 46907.2 , 47103.9 , 2.31 , 89601.6 ,\n 47335.5275, 127200.3 , 89770.3275, 89790.2475, 89810.1475],\n [ 68.8875, 65.19 , 28.9875, 44969.8275, 46037.76 ,\n 14.24 , 4.31 , 3.21 , 1.3475, 0.6275,\n 89740.71 , 89750.6875, 89770.3275, 89790.2475, 89810.1475]])}}, 'Susceptible': {'min': {'min': array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'max': array([[999., 0., 0., 999., 0., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 0., 999., 0., 0., 999., 0., 999., 999., 999., 999.,\n 999., 999., 999., 1.],\n [ 0., 0., 999., 0., 0., 999., 999., 0., 999., 999., 999.,\n 0., 999., 999., 999.],\n [ 0., 0., 0., 999., 999., 999., 999., 999., 0., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 999., 0., 0., 0., 0., 0., 0., 999., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 0., 999., 999., 999., 999., 999., 0., 999., 0., 999.,\n 999., 999., 999., 999.],\n [999., 0., 0., 0., 999., 999., 999., 0., 0., 0., 0.,\n 999., 0., 0., 0.],\n [ 0., 0., 0., 0., 999., 999., 0., 0., 999., 0., 0.,\n 999., 999., 999., 999.],\n [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n 0., 0., 999., 999.],\n [999., 0., 999., 0., 0., 0., 999., 999., 999., 999., 0.,\n 0., 0., 0., 0.],\n [ 0., 0., 0., 999., 0., 0., 0., 0., 999., 999., 999.,\n 0., 0., 0., 0.],\n [ 0., 999., 0., 0., 0., 999., 999., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [ 0., 0., 0., 0., 0., 0., 999., 999., 0., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 0., 0., 999., 0., 0., 999., 999., 0., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 0., 0., 999., 999., 0., 0., 0., 0., 0., 999.,\n 999., 999., 999., 999.]]), 'avg': array([[ 49.95, 0. , 0. , 49.95, 0. , 99.9 , 199.8 , 149.85,\n 50. , 50.05, 50.1 , 100.1 , 50.3 , 150.3 , 200.45],\n [ 0. , 0. , 99.9 , 0. , 0. , 49.95, 0. , 49.95,\n 49.95, 99.9 , 199.8 , 99.9 , 49.95, 49.95, 0.05],\n [ 0. , 0. , 99.9 , 0. , 0. , 99.9 , 49.95, 0. ,\n 49.95, 99.9 , 49.95, 0. , 49.95, 49.95, 49.95],\n [ 0. , 0. , 0. , 49.95, 99.9 , 99.85, 99.9 , 49.95,\n 0. , 99.85, 99.9 , 99.9 , 99.85, 99.85, 199.7 ],\n [ 0. , 49.95, 0. , 0. , 0. , 0. , 0. , 0. ,\n 99.9 , 49.95, 99.9 , 99.9 , 99.85, 99.9 , 99.9 ],\n [ 0. , 0. , 49.95, 49.95, 99.9 , 99.9 , 49.95, 0. ,\n 49.95, 0. , 49.95, 99.9 , 99.9 , 99.9 , 99.9 ],\n [ 49.95, 0. , 0. , 0. , 99.9 , 49.95, 99.9 , 0. ,\n 0. , 0. , 0. , 49.95, 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 0. , 49.95, 49.95, 0. , 0. ,\n 49.95, 0. , 0. , 49.95, 49.95, 49.95, 49.95],\n [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,\n 0. , 0. , 0. , 0. , 0. , 49.95, 49.95],\n [ 99.9 , 0. , 49.95, 0. , 0. , 0. , 49.95, 49.95,\n 49.95, 49.95, 0. , 0. , 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 49.95, 0. , 0. , 0. , 0. ,\n 49.95, 49.95, 49.95, 0. , 0. , 0. , 0. ],\n [ 0. , 49.95, 0. , 0. , 0. , 49.95, 49.95, 0. ,\n 0. , 0. , 0. , 0. , 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 0. , 0. , 0. , 49.95, 49.95,\n 0. , 99.9 , 49.95, 149.85, 149.85, 149.85, 149.85],\n [ 0. , 0. , 0. , 49.95, 0. , 0. , 49.95, 49.95,\n 0. , 99.9 , 49.95, 149.85, 99.9 , 99.9 , 99.9 ],\n [ 0. , 0. , 0. , 49.95, 49.95, 0. , 0. , 0. ,\n 0. , 0. , 99.9 , 99.9 , 99.9 , 99.9 , 99.9 ]]), 'var': array([[ 47405.0475, 0. , 0. , 47405.0475, 0. ,\n 89820.09 , 159680.16 , 127245.1275, 47400.1 , 47395.1475,\n 47390.19 , 89780.29 , 47370.41 , 127110.71 , 159420.9475],\n [ 0. , 0. , 89820.09 , 0. , 0. ,\n 47405.0475, 0. , 47405.0475, 47405.0475, 89820.09 ,\n 159680.16 , 89820.09 , 47405.0475, 47405.0475, 0.0475],\n [ 0. , 0. , 89820.09 , 0. , 0. ,\n 89820.09 , 47405.0475, 0. , 47405.0475, 89820.09 ,\n 47405.0475, 0. , 47405.0475, 47405.0475, 47405.0475],\n [ 0. , 0. , 0. , 47405.0475, 89820.09 ,\n 89730.2275, 89820.09 , 47405.0475, 0. , 89730.2275,\n 89820.09 , 89820.09 , 89730.2275, 89730.2275, 159520.41 ],\n [ 0. , 47405.0475, 0. , 0. , 0. ,\n 0. , 0. , 0. , 89820.09 , 47405.0475,\n 89820.09 , 89820.09 , 89730.2275, 89820.09 , 89820.09 ],\n [ 0. , 0. , 47405.0475, 47405.0475, 89820.09 ,\n 89820.09 , 47405.0475, 0. , 47405.0475, 0. ,\n 47405.0475, 89820.09 , 89820.09 , 89820.09 , 89820.09 ],\n [ 47405.0475, 0. , 0. , 0. , 89820.09 ,\n 47405.0475, 89820.09 , 0. , 0. , 0. ,\n 0. , 47405.0475, 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 0. , 47405.0475,\n 47405.0475, 0. , 0. , 47405.0475, 0. ,\n 0. , 47405.0475, 47405.0475, 47405.0475, 47405.0475],\n [ 0. , 0. , 0. , 0. , 0. ,\n 0. , 0. , 0. , 0. , 0. ,\n 0. , 0. , 0. , 47405.0475, 47405.0475],\n [ 89820.09 , 0. , 47405.0475, 0. , 0. ,\n 0. , 47405.0475, 47405.0475, 47405.0475, 47405.0475,\n 0. , 0. , 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 47405.0475, 0. ,\n 0. , 0. , 0. , 47405.0475, 47405.0475,\n 47405.0475, 0. , 0. , 0. , 0. ],\n [ 0. , 47405.0475, 0. , 0. , 0. ,\n 47405.0475, 47405.0475, 0. , 0. , 0. ,\n 0. , 0. , 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 0. , 0. ,\n 0. , 47405.0475, 47405.0475, 0. , 89820.09 ,\n 47405.0475, 127245.1275, 127245.1275, 127245.1275, 127245.1275],\n [ 0. , 0. , 0. , 47405.0475, 0. ,\n 0. , 47405.0475, 47405.0475, 0. , 89820.09 ,\n 47405.0475, 127245.1275, 89820.09 , 89820.09 , 89820.09 ],\n [ 0. , 0. , 0. , 47405.0475, 47405.0475,\n 0. , 0. , 0. , 0. , 0. ,\n 89820.09 , 89820.09 , 89820.09 , 89820.09 , 89820.09 ]])}, 'max': {'min': array([[999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.]]), 'max': array([[999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.]]), 'avg': array([[999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [999., 999., 999., 999., 999., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.]]), 'var': array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])}, 'avg': {'min': array([[77.14713217, 73.84538653, 69.3840399 , 71.34912718, 71.74812968,\n 69.10972569, 79.18952618, 77.10473815, 71.53366584, 72.10723192,\n 79.39900249, 81.0798005 , 77.45885287, 78.94264339, 78.05486284],\n [64.53117207, 61.51620948, 65.55112219, 64.90024938, 63.93017456,\n 65.35910224, 70.16209476, 66.89775561, 69.80299252, 68.26683292,\n 66.91770574, 66.96009975, 70.90523691, 71.79800499, 74.51870324],\n [53.26184539, 54.98753117, 58.19201995, 60.28179551, 52.15710723,\n 58.81546135, 53.29925187, 61.159601 , 56.40399002, 54.97256858,\n 57.88279302, 58.5361596 , 58.54862843, 58.71321696, 58.8478803 ],\n [54.47880299, 51.91521197, 50.45137157, 52.86533666, 55.20448878,\n 51.50374065, 52.26683292, 54.10972569, 49.7755611 , 50.39900249,\n 53.08229426, 52.89526185, 52.8478803 , 54.51620948, 55.05486284],\n [41.90773067, 42.2394015 , 43.93266833, 41.95012469, 39.70822943,\n 48.89775561, 49.2244389 , 44.86284289, 40.87032419, 45.22693267,\n 47.32917706, 48.08977556, 47.93516209, 44.17705736, 44.19201995],\n [42.26184539, 40.17206983, 45.68329177, 41.24688279, 42.85286783,\n 44.25935162, 43.06733167, 46.43890274, 42.55361596, 41.35411471,\n 38.86034913, 38.7755611 , 40.34413965, 40.37406484, 40.23690773],\n [39.30922693, 37.56608479, 39.44638404, 37.73815461, 40.58354115,\n 36.97506234, 42.06733167, 40.65087282, 35.80548628, 35.70573566,\n 39.24438903, 39.57855362, 39.48129676, 39.37406484, 39.32418953],\n [32.74563591, 35.6882793 , 35.12967581, 35.4638404 , 35.51870324,\n 38.19950125, 33.25685786, 35.67331671, 36.69077307, 35.72069825,\n 32.08977556, 32.13216958, 35.49376559, 35.43391521, 35.5361596 ],\n [34.34413965, 33.96259352, 34.42643392, 30.90523691, 32.55860349,\n 35.97007481, 31.00498753, 33.35162095, 33.85286783, 33.30922693,\n 31.73815461, 33.35910224, 33.63341646, 35.65835411, 36.16957606],\n [31.77306733, 32.53865337, 29.67082294, 34.02493766, 31.0723192 ,\n 29.25436409, 30.15461347, 30.76309227, 31.38902743, 32.79301746,\n 29.78802993, 30.64089776, 31.25685786, 32.88029925, 30.82793017],\n [30.35910224, 28.02743142, 28.75062344, 27.28428928, 28.48877805,\n 27.17955112, 28.23441397, 29.10473815, 28.52369077, 28.50374065,\n 28.48877805, 28.69825436, 28.69077307, 28.80798005, 28.7680798 ],\n [25.37406484, 26.96758105, 27.159601 , 25.99501247, 28.9127182 ,\n 24.87780549, 27.58852868, 24.50872818, 27.68329177, 28.81296758,\n 25.96009975, 26.28678304, 25.5436409 , 28.04987531, 28.01496259],\n [24.92269327, 26.13965087, 24.50872818, 24.35411471, 24.06982544,\n 23.60099751, 26.10972569, 29.24688279, 26.95261845, 26.58852868,\n 27.80049875, 27.05985037, 27.25935162, 27.319202 , 27.2394015 ],\n [26.6234414 , 24.78304239, 23.36658354, 21.75062344, 25.36658354,\n 27.7605985 , 26.74314214, 27.28428928, 25.33416459, 25.24688279,\n 26.28678304, 25.78553616, 25.32917706, 25.319202 , 25.30174564],\n [23.11471322, 25.76558603, 25.06733167, 23.07481297, 22.44638404,\n 21.52119701, 21.51870324, 23.82793017, 24.73566085, 22.74314214,\n 22.05486284, 22.01246883, 24.04488778, 24.16708229, 24.13466334]]), 'max': array([[999. , 149.49376559, 146.97256858, 999. ,\n 120.8553616 , 999. , 999. , 999. ,\n 999. , 999. , 999. , 999. ,\n 999. , 999. , 999. ],\n [ 96.55361596, 109.65336658, 999. , 116.24937656,\n 137.03740648, 999. , 113.44139651, 999. ,\n 999. , 999. , 999. , 999. ,\n 999. , 999. , 115.9925187 ],\n [ 89.6084788 , 90.01995012, 999. , 98.94264339,\n 104.30673317, 999. , 999. , 117.24189526,\n 999. , 999. , 999. , 97.62593516,\n 999. , 999. , 999. ],\n [137.21446384, 99.68329177, 89.03241895, 999. ,\n 999. , 999. , 999. , 999. ,\n 92.20199501, 999. , 999. , 999. ,\n 999. , 999. , 999. ],\n [ 80.79052369, 999. , 72.83291771, 85.00997506,\n 84.61346633, 84.01246883, 73.10473815, 79.03241895,\n 999. , 999. , 999. , 999. ,\n 999. , 999. , 999. ],\n [ 70. , 73.95261845, 999. , 999. ,\n 999. , 999. , 999. , 72.70822943,\n 999. , 89.78054863, 999. , 999. ,\n 999. , 999. , 999. ],\n [999. , 62.46134663, 58.74812968, 75.10972569,\n 999. , 999. , 999. , 63.75062344,\n 73.96508728, 66.50124688, 74.95012469, 999. ,\n 57.25187032, 57.85037406, 65.94014963],\n [ 57.81296758, 68.91521197, 58.75311721, 69.5286783 ,\n 999. , 999. , 62.63341646, 73.82793017,\n 999. , 56.73316708, 88.48877805, 999. ,\n 999. , 999. , 999. ],\n [ 60.5436409 , 52.95511222, 51.20698254, 65.38154613,\n 64.56359102, 58.59102244, 57.82793017, 68.70822943,\n 71.00997506, 52.77805486, 54.35411471, 54.79551122,\n 54.89775561, 999. , 999. ],\n [999. , 58.29925187, 999. , 48.16957606,\n 48.4563591 , 52.09725686, 999. , 999. ,\n 999. , 999. , 50.57107232, 50.85286783,\n 51.37157107, 50.64339152, 62.33416459],\n [ 59.43142145, 55.60598504, 52.26184539, 999. ,\n 47.95760599, 49.66334165, 47.01995012, 48.56608479,\n 999. , 999. , 999. , 58.95261845,\n 58.79301746, 58.69077307, 58.70074813],\n [ 56.05985037, 999. , 49.26184539, 47.17456359,\n 41.39650873, 999. , 999. , 42.97007481,\n 45.17955112, 39.90024938, 56.72817955, 51.3840399 ,\n 51.53865337, 51.51371571, 51.41895262],\n [ 43.56109726, 45.67581047, 57.1521197 , 44.82044888,\n 39.20448878, 41.13715711, 999. , 999. ,\n 44.27680798, 999. , 999. , 999. ,\n 999. , 999. , 999. ],\n [ 45.45386534, 46.96508728, 38.04239401, 999. ,\n 60.82294264, 52.94513716, 999. , 999. ,\n 42. , 999. , 999. , 999. ,\n 999. , 999. , 999. ],\n [ 41.45137157, 48.05735661, 46.10723192, 999. ,\n 999. , 39.05735661, 44.75062344, 42.52119701,\n 43.72817955, 38.65087282, 999. , 999. ,\n 999. , 999. , 999. ]]), 'avg': array([[136.18054863, 92.90773067, 99.23142145, 145.80049875,\n 99.97805486, 183.46259352, 274.76184539, 234.47381546,\n 136.82593516, 145.53092269, 147.76508728, 192.71982544,\n 143.6180798 , 231.85511222, 278.65623441],\n [ 77.80236908, 79.53179551, 178.79401496, 86.19413965,\n 86.45137157, 128.35299252, 86.99401496, 132.64326683,\n 134.46658354, 180.34725686, 268.33266833, 177.77967581,\n 134.31658354, 134.71246883, 90.53541147],\n [ 70.88254364, 73.04351621, 165.1755611 , 72.52817955,\n 73.36820449, 163.98852868, 113.70099751, 74.93603491,\n 122.05810474, 170.00685786, 123.18765586, 77.5584788 ,\n 124.39127182, 125.1798005 , 125.5542394 ],\n [ 68.10137157, 66.1467581 , 63.23703242, 110.13416459,\n 161.54139651, 160.85124688, 155.67256858, 115.28516209,\n 67.77082294, 162.319202 , 159.97630923, 160.28802993,\n 163.13329177, 163.64526185, 255.63279302],\n [ 56.15448878, 107.17219451, 57.23790524, 59.45860349,\n 58.4276808 , 60.20561097, 58.43740648, 59.35361596,\n 153.80461347, 108.26571072, 153.56197007, 153.73516209,\n 156.19301746, 155.36009975, 155.51334165],\n [ 55.10024938, 54.8265586 , 103.28154613, 101.09800499,\n 151.24962594, 147.37206983, 100.76334165, 54.9967581 ,\n 102.01645885, 56.46633416, 102.53877805, 148.51957606,\n 148.74289277, 149.72256858, 150.06309227],\n [ 96.6372818 , 47.19077307, 48.87705736, 47.84688279,\n 145.64725686, 95.69264339, 144.68266833, 49.73778055,\n 50.39975062, 48.46857855, 48.5936409 , 97.23416459,\n 49.34214464, 49.38503741, 50.50311721],\n [ 47.65610973, 49.30872818, 45.6936409 , 46.01832918,\n 93.9915212 , 92.1680798 , 45.45187032, 47.24551122,\n 94.50785536, 44.22605985, 47.5234414 , 94.36633416,\n 94.88815461, 95.02618454, 95.0340399 ],\n [ 42.56895262, 40.46770574, 41.79301746, 41.81745636,\n 44.2032419 , 42.39102244, 42.74713217, 44.27942643,\n 44.06246883, 41.19089776, 41.56471322, 42.8053616 ,\n 43.06408978, 90.5542394 , 90.71309227],\n [135.54763092, 38.95498753, 87.77643392, 39.58216958,\n 37.19114713, 41.43678304, 91.70436409, 89.73017456,\n 87.85062344, 89.18665835, 38.84663342, 40.00274314,\n 40.30523691, 39.719202 , 40.1276808 ],\n [ 37.78254364, 36.83665835, 38.42518703, 82.21945137,\n 35.02855362, 37.83241895, 37.36321696, 37.25835411,\n 86.26845387, 86.82680798, 86.29177057, 38.21109726,\n 37.38478803, 37.5084788 , 37.60137157],\n [ 36.19700748, 80.98952618, 36.45399002, 35.33104738,\n 32.84226933, 81.58790524, 84.2467581 , 35.259601 ,\n 34.28965087, 33.03852868, 34.31820449, 33.42942643,\n 33.52855362, 33.89351621, 33.91458853],\n [ 33.28167082, 31.35760599, 32.76221945, 32.71296758,\n 30.87481297, 31.41695761, 82.42094763, 83.18391521,\n 34.23665835, 130.9053616 , 80.79912718, 177.68304239,\n 177.7244389 , 177.76371571, 177.74663342],\n [ 31.54750623, 32.09301746, 31.06022444, 80.02668329,\n 32.2521197 , 32.32119701, 80.97418953, 81.49014963,\n 32.34700748, 129.2659601 , 79.14551122, 176.20735661,\n 127.98566085, 128.00236908, 128.01184539],\n [ 30.19663342, 32.95224439, 30.96022444, 78.61608479,\n 78.02044888, 29.7127182 , 32.79713217, 30.19164589,\n 30.48241895, 30.109601 , 126.62506234, 126.60985037,\n 126.52917706, 126.66184539, 126.68316708]]), 'var': array([[ 39296.36210558, 284.50567409, 301.62121231,\n 38813.15596358, 178.63761892, 74122.87511303,\n 131202.78518262, 103359.50837246, 39232.74584151,\n 38546.10063053, 38441.86278667, 72419.73498192,\n 38760.32563621, 103954.27711575, 129871.98314207],\n [ 87.89451426, 108.42542762, 74975.98246926,\n 189.82838619, 257.61934441, 40068.00050091,\n 176.04658018, 39686.81861212, 39532.5421054 ,\n 74699.72251471, 133638.02228929, 75149.16243822,\n 39671.71189885, 39632.28773646, 136.64035553],\n [ 67.61412485, 82.95314673, 77413.33100565,\n 96.10064714, 174.14707575, 77571.01789317,\n 41317.69678789, 137.08924713, 40612.6081673 ,\n 76517.55118431, 40509.21798924, 143.59542756,\n 40424.19878415, 40369.80792899, 40333.48864862],\n [ 309.23384884, 124.27854384, 104.03169724,\n 41640.16017164, 78038.17677309, 78128.83411874,\n 79057.25574287, 41197.73311875, 117.58321833,\n 77859.73715649, 78298.06537615, 78241.88737539,\n 77697.61362894, 77597.93390207, 138117.96721965],\n [ 67.76546693, 41979.68461171, 48.58781251,\n 119.47763627, 101.5330853 , 60.06824925,\n 31.61413387, 79.99137916, 79444.39525455,\n 41883.34524317, 79486.08767313, 79450.66993277,\n 78934.11892426, 79209.102272 , 79176.9832111 ],\n [ 62.09118824, 77.09262596, 42260.36869603,\n 42491.83449176, 79966.31995815, 80625.21760225,\n 42504.018715 , 58.06171858, 42397.89261783,\n 119.04354948, 42376.51205308, 80454.17764024,\n 80410.00521197, 80248.89229723, 80186.71140733],\n [ 42907.61217435, 42.79943253, 32.20892289,\n 65.25286124, 80947.72415251, 42982.87086267,\n 81136.34611344, 35.85547122, 80.6976711 ,\n 66.19451241, 68.52747774, 42837.25283792,\n 33.60009863, 34.22527186, 52.3777768 ],\n [ 48.45736401, 51.69066212, 46.35050421,\n 55.73441165, 43149.18452025, 43300.36976972,\n 57.51700027, 111.08133126, 43137.77043506,\n 31.59861212, 142.53765642, 43203.66354743,\n 43147.55054899, 43136.51904186, 43135.90098151],\n [ 38.78517191, 25.99281626, 20.99739243,\n 65.00230944, 52.12166125, 31.97990908,\n 46.57636296, 90.66763918, 73.4161992 ,\n 27.82505362, 42.699634 , 46.40535847,\n 45.77967121, 43471.48266918, 43456.85608328],\n [ 82858.00509288, 37.26152976, 43737.95032946,\n 17.70359107, 21.85876535, 37.02279418,\n 43379.10800771, 43562.28311491, 43736.22072307,\n 43603.33981087, 37.06589853, 40.85892619,\n 40.32012823, 25.63379171, 59.57305838],\n [ 38.72190322, 45.39679324, 36.77628591,\n 44247.8887849 , 25.99016516, 25.24411453,\n 28.47089587, 29.16173991, 43893.43861498,\n 43840.66960994, 43894.3869609 , 51.99923214,\n 53.03359936, 52.83028084, 52.13127361],\n [ 60.91947065, 44374.02076517, 27.99409424,\n 39.71568079, 11.76783594, 44310.98265488,\n 44071.23233218, 23.99426055, 22.67202273,\n 12.63489436, 42.91112394, 29.43150951,\n 30.06868395, 26.06702017, 25.6351645 ],\n [ 23.64242043, 25.536903 , 43.8665066 ,\n 33.06231671, 14.23235652, 15.44699822,\n 44244.40374475, 44162.96896902, 22.89294836,\n 83761.08410114, 44382.61506737, 119048.82935859,\n 119036.47021007, 119025.2569181 , 119030.2151662 ],\n [ 21.04912996, 21.68826133, 15.02411507,\n 44481.80953172, 78.79966163, 30.10549225,\n 44379.7244142 , 44324.78977275, 20.03446513,\n 84073.77171366, 44541.83629099, 119476.13327733,\n 84305.91407073, 84302.4831764 , 84300.57121528],\n [ 18.90612327, 25.88609416, 24.42220662,\n 44603.9279342 , 44667.87972811, 22.63541931,\n 37.66075539, 32.17822294, 26.81917555,\n 13.57238666, 84573.63864545, 84576.67312795,\n 84586.77538237, 84561.48273854, 84557.14998008]])}, 'var': {'min': array([[ 0. , 55237.0035261 , 51886.30139116, 0. ,\n 53355.73456633, 0. , 0. , 0. ,\n 0. , 0. , 0. , 0. ,\n 0. , 0. , 0. ],\n [49265.39616047, 46473.75597167, 0. , 49877.80052363,\n 49143.94026157, 0. , 52670.79417417, 0. ,\n 0. , 0. , 0. , 0. ,\n 0. , 0. , 56469.90052301],\n [40840.16335719, 42726.98986947, 0. , 46380.64128954,\n 39387.52394575, 0. , 0. , 47707.5705375 ,\n 0. , 0. , 0. , 44359.12649797,\n 0. , 0. , 0. ],\n [43125.97024894, 40472.84069129, 39330.84613902, 0. ,\n 0. , 0. , 0. , 0. ,\n 38073.67032543, 0. , 0. , 0. ,\n 0. , 0. , 0. ],\n [32938.68225944, 0. , 33986.1076859 , 32284.17207604,\n 30402.15676519, 38024.06186529, 38698.87730798, 34661.69440489,\n 0. , 0. , 0. , 0. ,\n 0. , 0. , 0. ],\n [33488.58230981, 31376.5265017 , 0. , 0. ,\n 0. , 0. , 0. , 36596.88965865,\n 0. , 31998.18881723, 0. , 0. ,\n 0. , 0. , 0. ],\n [ 0. , 29528.29052058, 31535.57380862, 29732.69702303,\n 0. , 0. , 0. , 32120.98534213,\n 27450.1516906 , 27364.83610177, 30603.41658323, 0. ,\n 30688.34940081, 30618.6929932 , 30569.9348014 ],\n [25912.84302958, 28611.990112 , 27534.99565301, 28117.26614884,\n 0. , 0. , 26160.61980958, 28329.79103364,\n 0. , 28106.24119253, 24726.75004509, 0. ,\n 0. , 0. , 0. ],\n [27596.33044571, 27297.65695487, 27534.20468778, 24320.65934913,\n 26197.68297461, 28885.18114937, 24496.16955118, 26597.52972929,\n 27050.98333966, 26272.68243357, 24763.50001555, 26112.95333984,\n 26325.51898309, 0. , 0. ],\n [ 0. , 26001.42556327, 0. , 27688.20885442,\n 24854.36135347, 23004.44901462, 0. , 0. ,\n 0. , 0. , 23350.06728814, 24104.62915032,\n 24571.33302654, 26028.36971163, 24318.17737452],\n [24810.23513535, 22444.7249333 , 23271.27446969, 0. ,\n 22742.99800374, 21476.86052947, 22316.79293039, 23207.55002767,\n 0. , 0. , 0. , 22752.96381241,\n 22731.89440364, 22792.19504854, 22743.95369432],\n [20076.63314283, 0. , 22036.9470961 , 20853.75059857,\n 23525.98988812, 0. , 0. , 19281.16264202,\n 22248.36603006, 23325.62836052, 20566.79142543, 20821.52623429,\n 20097.45507802, 22458.21696382, 22428.72795567],\n [19860.90424811, 21149.68124576, 19696.3596495 , 19461.79480227,\n 19227.29687004, 18704.07521098, 0. , 0. ,\n 21804.56383978, 0. , 0. , 0. ,\n 0. , 0. , 0. ],\n [22212.13999913, 20098.86315384, 18782.82571626, 0. ,\n 20696.50152673, 22849.38408343, 0. , 0. ,\n 20532.53671308, 0. , 0. , 0. ,\n 0. , 0. , 0. ],\n [18848.6950703 , 21027.7854491 , 20610.6363642 , 0. ,\n 0. , 17355.81064794, 17247.37683223, 19387.45917003,\n 20389.24184551, 18414.30559511, 0. , 0. ,\n 0. , 0. , 0. ]]), 'max': array([[ 91792.46851699, 114179.5566943 , 111593.34338717,\n 131421.2398306 , 93427.87434158, 100318.38544536,\n 85742.88288008, 101689.53166958, 92791.8598143 ,\n 104182.69610264, 108945.85211535, 98310.52391465,\n 105312.04012413, 86750.87653684, 104508.15971294],\n [ 76031.05011785, 86633.79755101, 97514.15971294,\n 91135.79317293, 106823.50732893, 93559.74737719,\n 88203.46354811, 93530.49194968, 98057.93052282,\n 98147.3046685 , 87162.30285881, 92588.30062002,\n 117269.38103619, 117003.25063899, 88557.7630363 ],\n [ 72271.36042686, 71666.2888788 , 87654.81375116,\n 79296.19870523, 83968.69643845, 81596.10693963,\n 67693.88828428, 93164.22826972, 81877.89580911,\n 85661.41987923, 77335.1206398 , 77152.37877874,\n 79391.06124962, 83649.02882445, 83594.08657906],\n [109484.67719728, 81047.36852383, 71832.60493405,\n 66373.16017935, 75165.71049931, 82288.85713397,\n 61025.95812215, 78089.47858533, 74158.4604449 ,\n 83113.46362274, 70726.8596464 , 70440.5229072 ,\n 79560.15496172, 79278.57784467, 79079.84284924],\n [ 66802.17058352, 77893.57262704, 59774.41846755,\n 69680.09965112, 69351.91293586, 68622.89011884,\n 59632.39800748, 64067.26328816, 62823.57207978,\n 76313.31862364, 64646.68049328, 64680.0614424 ,\n 65228.69734641, 74949.45232928, 74702.3440899 ],\n [ 57910.18952618, 61549.55137095, 54027.00728229,\n 57323.77446658, 69105.31274059, 60691.23243015,\n 54788.91566595, 59854.16175273, 58962.29232405,\n 73767.67752688, 62736.4713901 , 69759.30847445,\n 69574.90632521, 69448.25218749, 69189.3472553 ],\n [ 57297.57257728, 52091.42057574, 48560.97147406,\n 62819.49918222, 51440.86672347, 51895.56557484,\n 55943.74911848, 52824.53631507, 61556.25314519,\n 55160.74376403, 62687.85287405, 51410.91783011,\n 46900.1934192 , 47287.95766195, 54304.3754703 ],\n [ 48544.97239445, 57919.5938085 , 49168.4452833 ,\n 58584.62324239, 51150.99355104, 44786.24080696,\n 52374.26212524, 62033.49907028, 63971.59823633,\n 47282.32530892, 74731.34713093, 74599.11425924,\n 74610.88368853, 74454.24461291, 74493.21022879],\n [ 51084.3478461 , 44606.37703746, 42811.46089888,\n 55326.96414823, 54945.27837513, 49537.28909646,\n 48696.38685083, 58155.3737228 , 60044.72309252,\n 44275.29986754, 45575.87460277, 45886.95070304,\n 45951.49827426, 48382.97004372, 48870.44262163],\n [ 40241.38099887, 49784.74835355, 44158.2593765 ,\n 40631.10840107, 40935.20071393, 43648.67110279,\n 51175.87524953, 52464.98821525, 54245.29698198,\n 48079.35553883, 42627.75118314, 42830.76388828,\n 43208.12876786, 42734.43392765, 53184.77611458],\n [ 51050.28519723, 47574.10909136, 44487.17083849,\n 35223.80707831, 40651.66653192, 42410.18341926,\n 39871.45596109, 40994.3254333 , 46196.95402392,\n 50754.3689778 , 50723.02493144, 50641.77580985,\n 50540.41351733, 50400.97171037, 50359.99024882],\n [ 48392.55003389, 38636.42937544, 42086.18829485,\n 40304.27376695, 35182.19938931, 34143.55591072,\n 40409.78020037, 36549.43052593, 38334.38172648,\n 33672.08481291, 48795.36501639, 43937.29390986,\n 44035.33080018, 43999.51165727, 43916.73220938],\n [ 37359.27369855, 39105.790163 , 49637.99431596,\n 38555.08496838, 33422.64147611, 35004.1283201 ,\n 38250.7972836 , 39579.69505165, 37750.67898831,\n 40126.46885281, 33910.02727595, 32132.60000871,\n 32079.41985435, 31977.87506297, 31934.4931437 ],\n [ 39365.47979179, 40609.22571377, 32446.97825262,\n 38859.20896014, 52834.3302467 , 45832.28626688,\n 36341.00162312, 37726.23660301, 35911.26683292,\n 37956.31819454, 32299.56334849, 30572.73213475,\n 29692.97986953, 29763.37122282, 29688.82288045],\n [ 35748.96583976, 41846.39820648, 39938.91368835,\n 33602.76708478, 39762.41405215, 33491.05157306,\n 38877.00015547, 36849.97024894, 37599.12062736,\n 33346.56638951, 32090.29017232, 32053.63081075,\n 28300.83326596, 28538.45584294, 28501.39721768]]), 'avg': array([[66124.96838888, 70822.86087462, 75812.37261335, 73057.42244016,\n 76195.4681339 , 63269.47922339, 56807.51969577, 64098.07211398,\n 65290.6635108 , 71855.97110652, 73295.19250316, 69436.27467491,\n 69490.42513417, 60570.44777707, 57904.22598989],\n [60694.12365968, 61891.41408511, 61594.36213332, 67261.69265179,\n 67255.33253027, 60660.18424699, 67332.33592764, 63913.77669791,\n 65282.75316198, 61970.18819473, 52558.15058364, 59590.02954273,\n 64408.6880007 , 64553.27273151, 68975.82185683],\n [56086.69028364, 57797.90543342, 51545.60301055, 57321.00965603,\n 57842.27009285, 50147.85055379, 49512.90782458, 58594.202796 ,\n 56321.80466602, 54791.95437964, 57113.47285589, 60375.24342199,\n 57811.12617708, 58329.5223363 , 58513.12524238],\n [54480.62133631, 52977.3150055 , 50353.80102114, 47855.77319979,\n 49212.2261267 , 48531.43415277, 44024.1103625 , 51886.12309501,\n 53667.3233618 , 49620.2332728 , 47551.71760375, 47739.88901499,\n 50085.98818042, 50420.84013408, 44094.03571993],\n [45190.75592813, 46271.42576228, 46094.20870579, 47969.02925355,\n 46971.98001381, 48483.54496116, 46902.09578858, 47586.12971126,\n 43227.14300346, 46763.80248382, 42910.17569356, 42977.3621725 ,\n 45067.44531626, 44098.4368841 , 44141.61548871],\n [44950.46833788, 44587.85048414, 43415.77871904, 41360.60178855,\n 41680.5830654 , 38273.75717875, 40996.28961698, 44437.06146293,\n 41998.03479207, 45578.06890815, 42330.7107574 , 38973.00314861,\n 39131.04913278, 39930.31190664, 40181.3424674 ],\n [38164.16685966, 38352.91205341, 39933.96848092, 38892.72219762,\n 37398.09693099, 37139.08292361, 36447.49520712, 40439.29759019,\n 40927.09414929, 39163.5532534 , 39227.92073619, 38256.40380035,\n 39850.236205 , 39855.46861898, 40794.51261248],\n [39369.34632061, 40885.16315197, 37542.77247281, 37756.64941698,\n 36135.8011934 , 34472.07778994, 37096.02045883, 38666.52559997,\n 36407.44932867, 35903.17060901, 38747.60605842, 36126.47482043,\n 36552.50913614, 36629.8750356 , 36607.7795306 ],\n [35095.17827812, 33167.7765897 , 34351.40914236, 34342.06386963,\n 36527.72580954, 34853.13377591, 35123.03076722, 36438.43196249,\n 36232.25309047, 33610.380275 , 33912.34368443, 35011.34241827,\n 35223.0660966 , 33165.34344127, 33269.42232387],\n [29543.46957108, 32176.92958626, 31310.35093563, 32714.7693329 ,\n 30480.12676725, 34345.66485532, 34775.3099533 , 32953.23560052,\n 31221.25297355, 32417.81873931, 31835.60758764, 32859.83558 ,\n 33108.66550519, 32563.69509145, 32824.0088936 ],\n [31462.63554766, 30550.58799759, 32033.10053607, 26477.96131056,\n 28812.22011679, 31368.10535818, 30901.98882345, 30776.25405688,\n 30054.93383126, 30553.27084346, 30036.83763472, 31528.85184172,\n 30754.77619418, 30829.80692906, 30882.16805119],\n [30260.63249047, 25652.02999795, 30513.61239234, 29508.24617322,\n 27186.24506564, 26186.35911904, 28625.80016978, 29347.46877072,\n 28424.79806966, 27251.98244911, 28395.95794616, 27556.73221311,\n 27622.20294463, 27944.39695276, 27957.10903664],\n [27860.68784212, 26057.72748428, 27415.54665456, 27326.6114054 ,\n 25599.83750785, 26071.33475911, 27173.25147729, 27811.48561016,\n 28554.54281503, 25849.32277784, 25531.49134085, 23042.87516682,\n 23062.52118768, 23075.28987009, 23044.01390601],\n [26470.50060821, 26948.09959515, 25976.68609835, 25172.56955678,\n 26988.71308325, 27061.97288636, 25998.12267523, 26462.33643945,\n 27039.49960946, 24541.44844933, 24215.3329345 , 21880.77547155,\n 23379.33672116, 23381.27704243, 23370.79535264],\n [25405.3246634 , 27928.46237337, 26081.37608659, 24082.81482453,\n 23500.91336994, 24906.58628926, 27775.85008427, 25308.04402647,\n 25569.15495426, 25213.5077456 , 22322.56129999, 22296.12615158,\n 22215.25581122, 22318.90341167, 22324.79315303]]), 'var': array([[3.07675768e+08, 1.75034150e+08, 1.83500381e+08, 5.66146515e+08,\n 1.14643989e+08, 5.87546750e+08, 8.54313104e+08, 8.61570173e+08,\n 2.95204893e+08, 4.02510075e+08, 4.69185936e+08, 6.54498285e+08,\n 4.11715157e+08, 7.15535469e+08, 9.27825316e+08],\n [5.95993586e+07, 7.34291905e+07, 5.71796891e+08, 1.25708434e+08,\n 1.65191748e+08, 3.03347540e+08, 1.15314659e+08, 3.32613470e+08,\n 3.45539930e+08, 5.75959059e+08, 8.00781867e+08, 5.33087686e+08,\n 4.10940175e+08, 4.08923948e+08, 8.54188498e+07],\n [5.05031996e+07, 5.94090249e+07, 4.06866419e+08, 6.77547804e+07,\n 1.22992589e+08, 3.47828295e+08, 1.77434204e+08, 9.30524543e+07,\n 2.62761136e+08, 4.42972016e+08, 2.68827113e+08, 1.01038751e+08,\n 2.91359379e+08, 3.06091154e+08, 3.05406226e+08],\n [2.02950855e+08, 9.01582374e+07, 7.44947738e+07, 1.62490988e+08,\n 3.50801886e+08, 3.82114500e+08, 2.41864743e+08, 2.10078151e+08,\n 8.58252597e+07, 3.95014818e+08, 3.08346946e+08, 3.11974510e+08,\n 3.92039017e+08, 3.92257243e+08, 5.94615482e+08],\n [5.24110940e+07, 2.00430629e+08, 3.80019147e+07, 9.02212741e+07,\n 7.82560360e+07, 4.48978898e+07, 2.36444421e+07, 5.96101606e+07,\n 2.61706312e+08, 2.08023400e+08, 2.54713887e+08, 2.52850607e+08,\n 3.00917679e+08, 3.09809835e+08, 3.08231377e+08],\n [4.82143973e+07, 5.97754672e+07, 1.25527635e+08, 1.36144514e+08,\n 2.78284244e+08, 1.93579998e+08, 1.19318885e+08, 4.54033624e+07,\n 1.32549984e+08, 8.86491139e+07, 1.57020656e+08, 2.33898820e+08,\n 2.33660492e+08, 2.57611951e+08, 2.61717760e+08],\n [1.19337758e+08, 3.42148347e+07, 2.58025697e+07, 5.16241856e+07,\n 1.84132314e+08, 1.02177179e+08, 1.79498649e+08, 2.88040517e+07,\n 6.36332649e+07, 5.31219302e+07, 5.45434715e+07, 1.08286376e+08,\n 2.74087596e+07, 2.78731177e+07, 4.15635857e+07],\n [4.03782173e+07, 4.02487327e+07, 3.79118640e+07, 4.46040175e+07,\n 1.02632468e+08, 7.81283217e+07, 4.56385164e+07, 8.79705162e+07,\n 1.32256846e+08, 2.59837172e+07, 1.11770754e+08, 1.72019544e+08,\n 1.68372676e+08, 1.69982998e+08, 1.69722338e+08],\n [3.15264442e+07, 2.17233633e+07, 1.71717172e+07, 5.31792591e+07,\n 4.27487609e+07, 2.63820996e+07, 3.76141390e+07, 7.31092143e+07,\n 5.91265240e+07, 2.30861797e+07, 3.59511095e+07, 3.92425717e+07,\n 3.85838327e+07, 8.75653577e+07, 8.83659156e+07],\n [1.12823157e+08, 3.11733615e+07, 8.25453073e+07, 1.47232074e+07,\n 1.83302395e+07, 3.08225768e+07, 1.06836531e+08, 9.66733686e+07,\n 8.60566755e+07, 8.59781921e+07, 3.16347346e+07, 3.51051954e+07,\n 3.43725808e+07, 2.15865253e+07, 5.03427626e+07],\n [3.21408448e+07, 3.79486551e+07, 3.01353559e+07, 4.70162407e+07,\n 2.16778204e+07, 2.18610504e+07, 2.44236763e+07, 2.50452979e+07,\n 8.79834591e+07, 9.01429624e+07, 9.04939897e+07, 4.43990523e+07,\n 4.56401562e+07, 4.53885825e+07, 4.46636109e+07],\n [5.19704548e+07, 5.11173651e+07, 2.31359917e+07, 3.37807753e+07,\n 1.02140285e+07, 4.80950606e+07, 6.93747961e+07, 2.08758690e+07,\n 1.94905406e+07, 1.10066506e+07, 3.62663488e+07, 2.50948292e+07,\n 2.57408665e+07, 2.21347084e+07, 2.18049740e+07],\n [2.03623837e+07, 2.14805754e+07, 3.71197466e+07, 2.84975847e+07,\n 1.24897307e+07, 1.33432647e+07, 6.28837565e+07, 5.74585253e+07,\n 1.99682774e+07, 9.90220255e+07, 4.24238892e+07, 1.01299400e+08,\n 1.01193135e+08, 1.01407460e+08, 1.01127980e+08],\n [1.81616521e+07, 1.83927056e+07, 1.30003818e+07, 6.26765775e+07,\n 6.55785677e+07, 2.52580989e+07, 5.52443498e+07, 5.24138116e+07,\n 1.75823604e+07, 8.86353645e+07, 3.84853737e+07, 9.14327550e+07,\n 6.90971737e+07, 6.89470218e+07, 6.88206088e+07],\n [1.65831325e+07, 2.22354246e+07, 2.06008343e+07, 4.70639055e+07,\n 5.12372761e+07, 1.95556227e+07, 3.27276001e+07, 2.77967248e+07,\n 2.26220644e+07, 1.18191156e+07, 6.73808503e+07, 6.72966764e+07,\n 6.21357250e+07, 6.29944736e+07, 6.28584841e+07]])}, 'final': {'min': array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'max': array([[999., 0., 0., 999., 0., 999., 999., 999., 999., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 0., 999., 0., 0., 999., 0., 999., 999., 999., 999.,\n 999., 999., 999., 1.],\n [ 0., 0., 999., 0., 0., 999., 999., 0., 999., 999., 999.,\n 0., 999., 999., 999.],\n [ 0., 0., 0., 999., 999., 999., 999., 999., 0., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 999., 0., 0., 0., 0., 0., 0., 999., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 0., 999., 999., 999., 999., 999., 0., 999., 0., 999.,\n 999., 999., 999., 999.],\n [999., 0., 0., 0., 999., 999., 999., 0., 0., 0., 0.,\n 999., 0., 0., 0.],\n [ 0., 0., 0., 0., 999., 999., 0., 0., 999., 0., 0.,\n 999., 999., 999., 999.],\n [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n 0., 0., 999., 999.],\n [999., 0., 999., 0., 0., 0., 999., 999., 999., 999., 0.,\n 0., 0., 0., 0.],\n [ 0., 0., 0., 999., 0., 0., 0., 0., 999., 999., 999.,\n 0., 0., 0., 0.],\n [ 0., 999., 0., 0., 0., 999., 999., 0., 0., 0., 0.,\n 0., 0., 0., 0.],\n [ 0., 0., 0., 0., 0., 0., 999., 999., 0., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 0., 0., 999., 0., 0., 999., 999., 0., 999., 999.,\n 999., 999., 999., 999.],\n [ 0., 0., 0., 999., 999., 0., 0., 0., 0., 0., 999.,\n 999., 999., 999., 999.]]), 'avg': array([[ 49.95, 0. , 0. , 49.95, 0. , 99.9 , 199.8 , 149.85,\n 50. , 50.05, 50.1 , 100.1 , 50.3 , 150.3 , 200.45],\n [ 0. , 0. , 99.9 , 0. , 0. , 49.95, 0. , 49.95,\n 49.95, 99.9 , 199.8 , 99.9 , 49.95, 49.95, 0.05],\n [ 0. , 0. , 99.9 , 0. , 0. , 99.9 , 49.95, 0. ,\n 49.95, 99.9 , 49.95, 0. , 49.95, 49.95, 49.95],\n [ 0. , 0. , 0. , 49.95, 99.9 , 99.85, 99.9 , 49.95,\n 0. , 99.85, 99.9 , 99.9 , 99.85, 99.85, 199.7 ],\n [ 0. , 49.95, 0. , 0. , 0. , 0. , 0. , 0. ,\n 99.9 , 49.95, 99.9 , 99.9 , 99.85, 99.9 , 99.9 ],\n [ 0. , 0. , 49.95, 49.95, 99.9 , 99.9 , 49.95, 0. ,\n 49.95, 0. , 49.95, 99.9 , 99.9 , 99.9 , 99.9 ],\n [ 49.95, 0. , 0. , 0. , 99.9 , 49.95, 99.9 , 0. ,\n 0. , 0. , 0. , 49.95, 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 0. , 49.95, 49.95, 0. , 0. ,\n 49.95, 0. , 0. , 49.95, 49.95, 49.95, 49.95],\n [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,\n 0. , 0. , 0. , 0. , 0. , 49.95, 49.95],\n [ 99.9 , 0. , 49.95, 0. , 0. , 0. , 49.95, 49.95,\n 49.95, 49.95, 0. , 0. , 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 49.95, 0. , 0. , 0. , 0. ,\n 49.95, 49.95, 49.95, 0. , 0. , 0. , 0. ],\n [ 0. , 49.95, 0. , 0. , 0. , 49.95, 49.95, 0. ,\n 0. , 0. , 0. , 0. , 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 0. , 0. , 0. , 49.95, 49.95,\n 0. , 99.9 , 49.95, 149.85, 149.85, 149.85, 149.85],\n [ 0. , 0. , 0. , 49.95, 0. , 0. , 49.95, 49.95,\n 0. , 99.9 , 49.95, 149.85, 99.9 , 99.9 , 99.9 ],\n [ 0. , 0. , 0. , 49.95, 49.95, 0. , 0. , 0. ,\n 0. , 0. , 99.9 , 99.9 , 99.9 , 99.9 , 99.9 ]]), 'var': array([[ 47405.0475, 0. , 0. , 47405.0475, 0. ,\n 89820.09 , 159680.16 , 127245.1275, 47400.1 , 47395.1475,\n 47390.19 , 89780.29 , 47370.41 , 127110.71 , 159420.9475],\n [ 0. , 0. , 89820.09 , 0. , 0. ,\n 47405.0475, 0. , 47405.0475, 47405.0475, 89820.09 ,\n 159680.16 , 89820.09 , 47405.0475, 47405.0475, 0.0475],\n [ 0. , 0. , 89820.09 , 0. , 0. ,\n 89820.09 , 47405.0475, 0. , 47405.0475, 89820.09 ,\n 47405.0475, 0. , 47405.0475, 47405.0475, 47405.0475],\n [ 0. , 0. , 0. , 47405.0475, 89820.09 ,\n 89730.2275, 89820.09 , 47405.0475, 0. , 89730.2275,\n 89820.09 , 89820.09 , 89730.2275, 89730.2275, 159520.41 ],\n [ 0. , 47405.0475, 0. , 0. , 0. ,\n 0. , 0. , 0. , 89820.09 , 47405.0475,\n 89820.09 , 89820.09 , 89730.2275, 89820.09 , 89820.09 ],\n [ 0. , 0. , 47405.0475, 47405.0475, 89820.09 ,\n 89820.09 , 47405.0475, 0. , 47405.0475, 0. ,\n 47405.0475, 89820.09 , 89820.09 , 89820.09 , 89820.09 ],\n [ 47405.0475, 0. , 0. , 0. , 89820.09 ,\n 47405.0475, 89820.09 , 0. , 0. , 0. ,\n 0. , 47405.0475, 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 0. , 47405.0475,\n 47405.0475, 0. , 0. , 47405.0475, 0. ,\n 0. , 47405.0475, 47405.0475, 47405.0475, 47405.0475],\n [ 0. , 0. , 0. , 0. , 0. ,\n 0. , 0. , 0. , 0. , 0. ,\n 0. , 0. , 0. , 47405.0475, 47405.0475],\n [ 89820.09 , 0. , 47405.0475, 0. , 0. ,\n 0. , 47405.0475, 47405.0475, 47405.0475, 47405.0475,\n 0. , 0. , 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 47405.0475, 0. ,\n 0. , 0. , 0. , 47405.0475, 47405.0475,\n 47405.0475, 0. , 0. , 0. , 0. ],\n [ 0. , 47405.0475, 0. , 0. , 0. ,\n 47405.0475, 47405.0475, 0. , 0. , 0. ,\n 0. , 0. , 0. , 0. , 0. ],\n [ 0. , 0. , 0. , 0. , 0. ,\n 0. , 47405.0475, 47405.0475, 0. , 89820.09 ,\n 47405.0475, 127245.1275, 127245.1275, 127245.1275, 127245.1275],\n [ 0. , 0. , 0. , 47405.0475, 0. ,\n 0. , 47405.0475, 47405.0475, 0. , 89820.09 ,\n 47405.0475, 127245.1275, 89820.09 , 89820.09 , 89820.09 ],\n [ 0. , 0. , 0. , 47405.0475, 47405.0475,\n 0. , 0. , 0. , 0. , 0. ,\n 89820.09 , 89820.09 , 89820.09 , 89820.09 , 89820.09 ]])}}}"
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-avg.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-avg.csv
new file mode 100644
index 0000000000..91352105b9
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-avg.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,397.97531172069824,465.8441396508729,136.18054862842897
+0.004,0.1285714285714286,347.8072319201995,559.2850374064839,92.90773067331669
+0.004,0.15714285714285714,297.54463840399,603.2239401496261,99.23142144638405
+0.004,0.18571428571428572,246.55498753117203,607.6445137157107,145.8004987531172
+0.004,0.2142857142857143,227.78379052369078,672.2381546134662,99.97805486284288
+0.004,0.24285714285714288,182.47955112219452,634.0578553615961,183.4625935162095
+0.004,0.27142857142857146,146.02867830423943,579.209476309227,274.7618453865337
+0.004,0.30000000000000004,140.930174563591,624.5960099750623,234.47381546134656
+0.004,0.3285714285714286,144.46433915211975,718.7097256857855,136.82593516209477
+0.004,0.3571428571428572,132.7056109725686,721.7634663341646,145.53092269326686
+0.004,0.3857142857142858,122.91882793017456,729.3160847880299,147.7650872817955
+0.004,0.41428571428571437,108.22269326683292,699.0574812967582,192.719825436409
+0.004,0.44285714285714284,107.19189526184539,749.1900249376561,143.61807980049875
+0.004,0.4714285714285714,89.86683291770572,678.2780548628429,231.8551122194514
+0.004,0.5,79.61271820448877,641.7310473815461,278.6562344139651
+0.004642857142857143,0.1,421.34189526184537,500.85573566084787,77.80236907730674
+0.004642857142857143,0.1285714285714286,347.67755610972563,572.7906483790523,79.53179551122196
+0.004642857142857143,0.15714285714285714,267.8077306733167,553.3982543640898,178.7940149625935
+0.004642857142857143,0.18571428571428572,258.72269326683295,655.0831670822943,86.19413965087281
+0.004642857142857143,0.2142857142857143,227.89139650872818,685.6572319201996,86.45137157107231
+0.004642857142857143,0.24285714285714288,191.5511221945137,680.0958852867831,128.35299251870325
+0.004642857142857143,0.27142857142857146,180.39177057356608,732.6142144638403,86.99401496259352
+0.004642857142857143,0.30000000000000004,156.11932668329177,711.2374064837906,132.64326683291773
+0.004642857142857143,0.3285714285714286,142.98990024937652,722.5435162094764,134.46658354114712
+0.004642857142857143,0.3571428571428572,124.86558603491274,694.787157107232,180.34725685785537
+0.004642857142857143,0.3857142857142858,103.00972568578554,628.6576059850374,268.33266832917707
+0.004642857142857143,0.41428571428571437,107.75985037406485,714.4604738154612,177.77967581047378
+0.004642857142857143,0.44285714285714284,106.32680798004988,759.356608478803,134.3165835411471
+0.004642857142857143,0.4714285714285714,99.9007481296758,765.386783042394,134.71246882793017
+0.004642857142857143,0.5,98.96022443890276,810.5043640897755,90.53541147132168
+0.005285714285714286,0.1,417.06234413965086,512.0551122194513,70.88254364089775
+0.005285714285714286,0.1285714285714286,347.5952618453865,579.3612219451372,73.04351620947631
+0.005285714285714286,0.15714285714285714,268.98516209476304,565.83927680798,165.1755610972569
+0.005285714285714286,0.18571428571428572,259.2856608478803,668.1861596009974,72.5281795511222
+0.005285714285714286,0.2142857142857143,228.13179551122192,698.4999999999999,73.36820448877805
+0.005285714285714286,0.24285714285714288,181.53566084788028,654.4758104738155,163.98852867830425
+0.005285714285714286,0.27142857142857146,171.78815461346636,714.5108478802993,113.7009975062344
+0.005285714285714286,0.30000000000000004,163.4721945137157,761.5917705735661,74.9360349127182
+0.005285714285714286,0.3285714285714286,142.07481296758104,735.8670822942644,122.05810473815464
+0.005285714285714286,0.3571428571428572,124.32306733167084,705.6700748129676,170.0068578553616
+0.005285714285714286,0.3857142857142858,121.50311720698255,755.3092269326684,123.18765586034912
+0.005285714285714286,0.41428571428571437,118.93441396508729,803.5071072319201,77.55847880299254
+0.005285714285714286,0.44285714285714284,105.66970074812969,769.9390274314213,124.39127182044888
+0.005285714285714286,0.4714285714285714,99.25847880299254,775.5617206982544,125.17980049875311
+0.005285714285714286,0.5,93.59451371571073,780.8512468827929,125.55423940149626
+0.005928571428571429,0.1,420.6514962593516,511.24713216957616,68.10137157107232
+0.005928571428571429,0.1285714285714286,353.3514962593516,580.5017456359103,66.14675810473815
+0.005928571428571429,0.15714285714285714,300.1488778054863,636.6140897755611,63.237032418952616
+0.005928571428571429,0.18571428571428572,246.22107231920194,643.6447630922693,110.13416458852866
+0.005928571428571429,0.2142857142857143,204.26084788029928,634.1977556109725,161.54139650872816
+0.005928571428571429,0.24285714285714288,181.74077306733165,657.4079800498753,160.85124688279296
+0.005928571428571429,0.27142857142857146,163.08640897755612,681.2410224438903,155.6725685785536
+0.005928571428571429,0.30000000000000004,155.48827930174562,729.2265586034913,115.28516209476308
+0.005928571428571429,0.3285714285714286,149.64451371571073,782.584663341646,67.77082294264338
+0.005928571428571429,0.3571428571428572,124.66122194513716,713.0195760598505,162.31920199501243
+0.005928571428571429,0.3857142857142858,115.44912718204486,724.5745635910225,159.97630922693267
+0.005928571428571429,0.41428571428571437,107.49987531172071,732.2120947630923,160.28802992518703
+0.005928571428571429,0.44285714285714284,100.671072319202,736.1956359102245,163.13329177057355
+0.005928571428571429,0.4714285714285714,94.54950124688278,741.8052369077307,163.64526184538653
+0.005928571428571429,0.5,79.10124688279302,665.2659600997506,255.63279301745632
+0.006571428571428572,0.1,421.073566084788,522.7719451371571,56.15448877805486
+0.006571428571428572,0.1285714285714286,333.67518703241893,559.1526184538652,107.17219451371572
+0.006571428571428572,0.15714285714285714,301.32680798004986,641.4352867830423,57.237905236907736
+0.006571428571428572,0.18571428571428572,260.57369077306737,679.967705735661,59.45860349127182
+0.006571428571428572,0.2142857142857143,227.83129675810474,713.7410224438902,58.427680798004985
+0.006571428571428572,0.24285714285714288,201.81995012468826,737.974438902743,60.20561097256858
+0.006571428571428572,0.27142857142857146,181.4761845386534,760.0864089775562,58.437406483790525
+0.006571428571428572,0.30000000000000004,164.68354114713216,775.9628428927679,59.35361596009974
+0.006571428571428572,0.3285714285714286,135.33453865336656,710.8608478802992,153.80461346633416
+0.006571428571428572,0.3571428571428572,131.9577306733167,759.7765586034913,108.26571072319203
+0.006571428571428572,0.3857142857142858,115.634289276808,730.8037406483792,153.561970074813
+0.006571428571428572,0.41428571428571437,107.55536159600997,738.7094763092268,153.7351620947631
+0.006571428571428572,0.44285714285714284,100.57082294264339,743.2361596009976,156.1930174563591
+0.006571428571428572,0.4714285714285714,95.29862842892767,749.3412718204489,155.36009975062345
+0.006571428571428572,0.5,89.72992518703242,754.7567331670823,155.51334164588525
+0.007214285714285715,0.1,426.4052369077307,518.4945137157108,55.10024937655861
+0.007214285714285715,0.1285714285714286,356.00511221945135,589.1683291770573,54.82655860349128
+0.007214285714285715,0.15714285714285714,285.31246882793016,611.4059850374064,103.28154613466333
+0.007214285714285715,0.18571428571428572,246.63628428927677,652.265710723192,101.09800498753117
+0.007214285714285715,0.2142857142857143,204.59937655860352,644.1509975062344,151.2496259351621
+0.007214285714285715,0.24285714285714288,182.34788029925187,670.2800498753118,147.37206982543643
+0.007214285714285715,0.27142857142857146,173.29164588528678,725.9450124688278,100.76334164588529
+0.007214285714285715,0.30000000000000004,165.10124688279302,779.9019950124689,54.99675810473815
+0.007214285714285715,0.3285714285714286,143.74663341645888,754.2369077306732,102.01645885286783
+0.007214285714285715,0.3571428571428572,139.24301745635913,804.2906483790523,56.46633416458853
+0.007214285714285715,0.3857142857142858,122.68042394014961,774.7807980049876,102.53877805486283
+0.007214285714285715,0.41428571428571437,108.14002493765585,743.3403990024938,148.51957605985038
+0.007214285714285715,0.44285714285714284,101.25311720698252,750.0039900249376,148.7428927680798
+0.007214285714285715,0.4714285714285714,95.21583541147133,755.0615960099751,149.72256857855362
+0.007214285714285715,0.5,89.8422693266833,760.0946384039901,150.06309226932666
+0.007857142857142858,0.1,405.39401496259353,497.9687032418953,96.63728179551121
+0.007857142857142858,0.1285714285714286,355.9620947630923,596.8471321695761,47.190773067331676
+0.007857142857142858,0.15714285714285714,299.443391521197,651.6795511221945,48.87705735660848
+0.007857142857142858,0.18571428571428572,257.74551122194515,694.4076059850374,47.84688279301746
+0.007857142857142858,0.2142857142857143,202.64800498753118,651.7047381546136,145.64725685785538
+0.007857142857142858,0.24285714285714288,191.2805486284289,713.0268079800499,95.6926433915212
+0.007857142857142858,0.27142857142857146,162.13728179551123,693.1800498753117,144.68266832917706
+0.007857142857142858,0.30000000000000004,163.4941396508728,786.7680798004988,49.73778054862842
+0.007857142857142858,0.3285714285714286,149.2620947630923,800.3381546134663,50.39975062344139
+0.007857142857142858,0.3571428571428572,137.62418952618455,813.9072319201996,48.468578553615956
+0.007857142857142858,0.3857142857142858,127.48890274314218,823.9174563591025,48.593640897755606
+0.007857142857142858,0.41428571428571437,113.20461346633417,789.5612219451372,97.23416458852867
+0.007857142857142858,0.44285714285714284,111.18366583541146,839.4741895261844,49.34214463840399
+0.007857142857142858,0.4714285714285714,104.5869077306733,846.0280548628429,49.38503740648379
+0.007857142857142858,0.5,98.59663341645886,850.9002493765587,50.50311720698255
+0.0085,0.1,421.74127182044896,530.6026184538653,47.65610972568579
+0.0085,0.1285714285714286,354.73129675810475,595.959975062344,49.30872817955112
+0.0085,0.15714285714285714,299.3677057356609,654.9386533665836,45.69364089775561
+0.0085,0.18571428571428572,257.6547381546135,696.3269326683292,46.01832917705736
+0.0085,0.2142857142857143,214.50511221945135,691.5033665835412,93.99152119700749
+0.0085,0.24285714285714288,191.48753117206985,716.3443890274314,92.16807980049876
+0.0085,0.27142857142857146,182.05399002493766,772.4941396508729,45.45187032418952
+0.0085,0.30000000000000004,165.53291770573566,787.2215710723192,47.24551122194514
+0.0085,0.3285714285714286,143.56508728179548,761.9270573566084,94.50785536159603
+0.0085,0.3571428571428572,139.08952618453864,816.6844139650873,44.22605985037406
+0.0085,0.3857142857142858,128.86957605985037,823.6069825436409,47.52344139650874
+0.0085,0.41428571428571437,114.10985037406485,791.5238154613467,94.36633416458854
+0.0085,0.44285714285714284,106.63852867830424,798.4733167082296,94.88815461346634
+0.0085,0.4714285714285714,100.1932668329177,804.780548628429,95.02618453865337
+0.0085,0.5,94.56620947630923,810.3997506234415,95.03403990024938
+0.009142857142857144,0.1,423.9576059850375,533.4734413965087,42.56895261845387
+0.009142857142857144,0.1285714285714286,352.6266832917705,606.9056109725686,40.46770573566085
+0.009142857142857144,0.15714285714285714,299.3987531172069,658.8082294264341,41.793017456359095
+0.009142857142857144,0.18571428571428572,260.1770573566085,698.0054862842893,41.817456359102245
+0.009142857142857144,0.2142857142857143,228.55860349127178,727.2381546134663,44.20324189526184
+0.009142857142857144,0.24285714285714288,203.06184538653366,754.547132169576,42.39102244389028
+0.009142857142857144,0.27142857142857146,182.35211970074815,774.9007481296758,42.74713216957606
+0.009142857142857144,0.30000000000000004,165.40586034912718,790.3147132169577,44.27942643391522
+0.009142857142857144,0.3285714285714286,151.33790523690774,804.5996259351621,44.062468827930175
+0.009142857142857144,0.3571428571428572,139.17917705735664,819.6299251870325,41.190897755610976
+0.009142857142857144,0.3857142857142858,129.49139650872817,828.9438902743143,41.56471321695761
+0.009142857142857144,0.41428571428571437,120.64189526184539,836.5527431421445,42.80536159600997
+0.009142857142857144,0.44285714285714284,112.97967581047381,843.9562344139651,43.0640897755611
+0.009142857142857144,0.4714285714285714,100.8423940149626,808.6033665835413,90.55423940149628
+0.009142857142857144,0.5,95.02381546134663,814.2630922693268,90.7130922693267
+0.009785714285714286,0.1,382.67244389027434,481.7799251870325,135.54763092269326
+0.009785714285714286,0.1285714285714286,355.02581047381545,606.0192019950125,38.954987531172065
+0.009785714285714286,0.15714285714285714,286.77730673316705,625.4462593516209,87.77643391521195
+0.009785714285714286,0.18571428571428572,261.25810473815466,699.1597256857856,39.58216957605985
+0.009785714285714286,0.2142857142857143,230.04451371571076,732.7643391521198,37.191147132169576
+0.009785714285714286,0.24285714285714288,204.4261845386534,754.1370324189526,41.436783042394026
+0.009785714285714286,0.27142857142857146,174.30660847880299,733.9890274314214,91.70436408977554
+0.009785714285714286,0.30000000000000004,157.91733167082293,752.3524937655859,89.73017456359102
+0.009785714285714286,0.3285714285714286,144.45087281795514,767.6985037406482,87.85062344139651
+0.009785714285714286,0.3571428571428572,132.78316708229426,778.030174563591,89.18665835411471
+0.009785714285714286,0.3857142857142858,129.52406483790523,831.6293017456359,38.84663341645886
+0.009785714285714286,0.41428571428571437,120.61920199501246,839.3780548628429,40.00274314214464
+0.009785714285714286,0.44285714285714284,112.88441396508726,846.810349127182,40.305236907730674
+0.009785714285714286,0.4714285714285714,106.10511221945137,854.175685785536,39.71920199501246
+0.009785714285714286,0.5,98.43229426433916,861.4400249376561,40.12768079800499
+0.01042857142857143,0.1,425.68004987531174,536.5374064837904,37.78254364089776
+0.01042857142857143,0.1285714285714286,353.1384039900249,610.0249376558603,36.83665835411472
+0.01042857142857143,0.15714285714285714,301.718578553616,659.856234413965,38.42518703241895
+0.01042857142857143,0.18571428571428572,246.47443890274317,671.3061097256857,82.21945137157107
+0.01042857142857143,0.2142857142857143,227.13790523690778,737.8335411471321,35.02855361596009
+0.01042857142857143,0.24285714285714288,201.1725685785536,760.9950124688279,37.83241895261846
+0.01042857142857143,0.27142857142857146,180.65012468827928,781.9866583541145,37.363216957605985
+0.01042857142857143,0.30000000000000004,163.68229426433916,799.0593516209477,37.258354114713214
+0.01042857142857143,0.3285714285714286,142.10324189526182,771.6283042394014,86.26845386533665
+0.01042857142857143,0.3571428571428572,131.006608478803,782.166583541147,86.82680798004989
+0.01042857142857143,0.3857142857142858,121.3556109725686,792.3526184538653,86.2917705735661
+0.01042857142857143,0.41428571428571437,118.82493765586034,842.9639650872817,38.211097256857855
+0.01042857142857143,0.44285714285714284,111.3490024937656,851.2662094763093,37.38478802992519
+0.01042857142857143,0.4714285714285714,104.40698254364091,858.0845386533665,37.50847880299252
+0.01042857142857143,0.5,98.39214463840399,864.0064837905236,37.60137157107232
+0.011071428571428572,0.1,425.8371571072319,537.9658354114713,36.197007481296765
+0.011071428571428572,0.1285714285714286,336.52319201995016,582.4872817955112,80.98952618453866
+0.011071428571428572,0.15714285714285714,301.66608478802993,661.8799251870324,36.45399002493765
+0.011071428571428572,0.18571428571428572,261.87157107231917,702.7973815461346,35.33104738154613
+0.011071428571428572,0.2142857142857143,229.07955112219452,738.0781795511223,32.8422693266833
+0.011071428571428572,0.24285714285714288,192.74376558603495,725.6683291770574,81.58790523690773
+0.011071428571428572,0.27142857142857146,172.65486284289275,743.0983790523691,84.24675810473815
+0.011071428571428572,0.30000000000000004,164.85548628428927,799.8849127182044,35.25960099750623
+0.011071428571428572,0.3285714285714286,150.6589775561097,815.0513715710724,34.28965087281796
+0.011071428571428572,0.3571428571428572,138.7925187032419,828.1689526184539,33.03852867830424
+0.011071428571428572,0.3857142857142858,128.55386533665836,837.1279301745635,34.31820448877805
+0.011071428571428572,0.41428571428571437,119.75361596009972,846.8169576059851,33.42942643391522
+0.011071428571428572,0.44285714285714284,112.01932668329175,854.4521197007482,33.5285536159601
+0.011071428571428572,0.4714285714285714,105.25,860.8564837905236,33.8935162094763
+0.011071428571428572,0.5,99.3639650872818,866.7214463840398,33.91458852867831
+0.011714285714285714,0.1,424.9598503740648,541.7584788029926,33.281670822942644
+0.011714285714285714,0.1285714285714286,352.80598503740646,615.8364089775562,31.357605985037406
+0.011714285714285714,0.15714285714285714,304.2980049875312,662.9397755610973,32.76221945137157
+0.011714285714285714,0.18571428571428572,261.8983790523691,705.3886533665835,32.71296758104738
+0.011714285714285714,0.2142857142857143,229.0599750623441,740.0652119700748,30.874812967581043
+0.011714285714285714,0.24285714285714288,202.7850374064838,765.7980049875313,31.41695760598504
+0.011714285714285714,0.27142857142857146,172.61895261845387,744.9600997506235,82.42094763092271
+0.011714285714285714,0.30000000000000004,157.21197007481294,759.6041147132171,83.18391521197009
+0.011714285714285714,0.3285714285714286,151.29077306733168,814.4725685785536,34.23665835411471
+0.011714285714285714,0.3571428571428572,125.18204488778058,743.9125935162095,130.90536159600998
+0.011714285714285714,0.3857142857142858,122.38466334164589,796.8162094763092,80.79912718204488
+0.011714285714285714,0.41428571428571437,102.00910224438903,720.3078553615961,177.683042394015
+0.011714285714285714,0.44285714285714284,95.46197007481297,726.8135910224439,177.72443890274315
+0.011714285714285714,0.4714285714285714,89.58703241895262,732.6492518703242,177.76371571072318
+0.011714285714285714,0.5,84.4427680798005,737.8105985037407,177.74663341645885
+0.012357142857142856,0.1,430.8490024937656,537.6034912718205,31.54750623441397
+0.012357142857142856,0.1285714285714286,355.3447630922693,612.5622194513716,32.09301745635911
+0.012357142857142856,0.15714285714285714,303.6783042394015,665.2614713216957,31.060224438902747
+0.012357142857142856,0.18571428571428572,249.29763092269323,670.6756857855362,80.02668329177055
+0.012357142857142856,0.2142857142857143,230.063216957606,737.684663341646,32.252119700748125
+0.012357142857142856,0.24285714285714288,203.24114713216957,764.4376558603492,32.3211970074813
+0.012357142857142856,0.27142857142857146,173.40224438902743,745.6235660847881,80.97418952618453
+0.012357142857142856,0.30000000000000004,157.1279301745636,761.3819201995013,81.49014962593517
+0.012357142857142856,0.3285714285714286,151.38852867830423,816.2644638403991,32.34700748129676
+0.012357142857142856,0.3571428571428572,125.19825436408978,745.5357855361597,129.2659600997506
+0.012357142857142856,0.3857142857142858,122.29887780548627,798.5556109725685,79.14551122194514
+0.012357142857142856,0.41428571428571437,102.11209476309226,721.680548628429,176.20735660847882
+0.012357142857142856,0.44285714285714284,101.28927680798004,770.7250623441395,127.98566084788028
+0.012357142857142856,0.4714285714285714,95.11608478802994,776.8815461346634,128.0023690773067
+0.012357142857142856,0.5,89.69364089775561,782.2945137157107,128.01184538653368
+0.013,0.1,425.8839152119701,543.919451371571,30.196633416458848
+0.013,0.1285714285714286,352.51945137157105,614.5283042394015,32.95224438902743
+0.013,0.15714285714285714,300.8941396508729,668.1456359102243,30.960224438902742
+0.013,0.18571428571428572,248.3246882793018,673.0592269326684,78.61608478802992
+0.013,0.2142857142857143,217.4897755610973,704.4897755610973,78.02044887780549
+0.013,0.24285714285714288,204.24538653366588,766.0418952618454,29.712718204488777
+0.013,0.27142857142857146,183.71583541147132,783.4870324189526,32.79713216957606
+0.013,0.30000000000000004,166.2798004987531,803.5285536159602,30.19164588528678
+0.013,0.3285714285714286,151.91683291770576,817.6007481296758,30.482418952618453
+0.013,0.3571428571428572,139.8795511221945,830.0108478802993,30.10960099750623
+0.013,0.3857142857142858,116.24887780548627,757.126059850374,126.62506234413964
+0.013,0.41428571428571437,108.24850374064837,765.1416458852867,126.60985037406485
+0.013,0.44285714285714284,101.31770573566084,772.1531172069825,126.5291770573566
+0.013,0.4714285714285714,95.16022443890273,778.1779301745635,126.66184538653367
+0.013,0.5,89.67256857855361,783.6442643391521,126.68316708229426
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-max.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-max.csv
new file mode 100644
index 0000000000..8ce893bac1
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-max.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,439.97506234413964,507.1321695760598,999.0
+0.004,0.1285714285714286,369.24688279301745,582.423940149626,149.49376558603493
+0.004,0.15714285714285714,315.33915211970077,625.8129675810474,146.97256857855362
+0.004,0.18571428571428572,274.4638403990025,671.2319201995012,999.0
+0.004,0.2142857142857143,239.96758104738154,696.279301745636,120.85536159600997
+0.004,0.24285714285714288,213.17456359102243,724.5586034912718,999.0
+0.004,0.27142857142857146,190.87032418952617,736.6184538653366,999.0
+0.004,0.30000000000000004,173.88778054862843,757.6658354114713,999.0
+0.004,0.3285714285714286,159.1720698254364,779.0149625935162,999.0
+0.004,0.3571428571428572,146.02493765586036,790.4389027431422,999.0
+0.004,0.3857142857142858,135.35411471321694,793.4139650872818,999.0
+0.004,0.41428571428571437,125.99002493765586,799.5187032418953,999.0
+0.004,0.44285714285714284,118.9925187032419,811.4563591022444,999.0
+0.004,0.4714285714285714,111.71820448877806,817.6807980049875,999.0
+0.004,0.5,105.04738154613466,817.6882793017456,999.0
+0.004642857142857143,0.1,443.55610972568576,526.4488778054863,96.55361596009975
+0.004642857142857143,0.1285714285714286,365.3690773067332,593.3092269326684,109.65336658354114
+0.004642857142857143,0.15714285714285714,311.74563591022445,636.5062344139651,999.0
+0.004642857142857143,0.18571428571428572,270.211970074813,673.4788029925187,116.24937655860349
+0.004642857142857143,0.2142857142857143,239.2942643391521,716.0548628428928,137.03740648379053
+0.004642857142857143,0.24285714285714288,216.03990024937656,735.351620947631,999.0
+0.004642857142857143,0.27142857142857146,194.01246882793018,750.4862842892768,113.44139650872818
+0.004642857142857143,0.30000000000000004,177.2069825436409,770.8428927680798,999.0
+0.004642857142857143,0.3285714285714286,162.4139650872818,781.8977556109726,999.0
+0.004642857142857143,0.3571428571428572,149.85785536159602,794.9201995012469,999.0
+0.004642857142857143,0.3857142857142858,138.64837905236908,806.9775561097257,999.0
+0.004642857142857143,0.41428571428571437,129.8054862842893,816.291770573566,999.0
+0.004642857142857143,0.44285714285714284,120.87531172069825,820.0324189526184,999.0
+0.004642857142857143,0.4714285714285714,114.28927680798004,825.8628428927681,999.0
+0.004642857142857143,0.5,108.20199501246883,830.0149625935162,115.9925187032419
+0.005285714285714286,0.1,438.3142144638404,532.8628428927681,89.60847880299252
+0.005285714285714286,0.1285714285714286,370.18952618453864,607.3890274314215,90.01995012468828
+0.005285714285714286,0.15714285714285714,310.70324189526184,645.3266832917706,999.0
+0.005285714285714286,0.18571428571428572,270.05486284289276,683.9850374064838,98.9426433915212
+0.005285714285714286,0.2142857142857143,239.66583541147133,717.6982543640897,104.3067331670823
+0.005285714285714286,0.24285714285714288,211.1845386533666,747.5985037406484,999.0
+0.005285714285714286,0.27142857142857146,190.58104738154614,769.7955112219452,999.0
+0.005285714285714286,0.30000000000000004,172.67082294264338,779.925187032419,117.24189526184539
+0.005285714285714286,0.3285714285714286,156.8229426433915,792.9775561097257,999.0
+0.005285714285714286,0.3571428571428572,144.8229426433915,805.219451371571,999.0
+0.005285714285714286,0.3857142857142858,134.89526184538653,814.8678304239402,999.0
+0.005285714285714286,0.41428571428571437,125.31172069825436,823.4563591022444,97.62593516209476
+0.005285714285714286,0.44285714285714284,117.02992518703242,830.5386533665835,999.0
+0.005285714285714286,0.4714285714285714,109.87032418952619,836.4114713216958,999.0
+0.005285714285714286,0.5,103.93266832917706,842.1970074812967,999.0
+0.005928571428571429,0.1,434.46134663341644,540.8852867830424,137.214463840399
+0.005928571428571429,0.1285714285714286,370.8628428927681,607.85536159601,99.68329177057356
+0.005928571428571429,0.15714285714285714,314.3915211970075,659.3915211970075,89.03241895261846
+0.005928571428571429,0.18571428571428572,270.58354114713217,703.5411471321696,999.0
+0.005928571428571429,0.2142857142857143,238.46882793017457,726.9775561097257,999.0
+0.005928571428571429,0.24285714285714288,210.83291770573567,754.8279301745636,999.0
+0.005928571428571429,0.27142857142857146,189.9351620947631,775.5461346633416,999.0
+0.005928571428571429,0.30000000000000004,172.20947630922694,786.4189526184539,999.0
+0.005928571428571429,0.3285714285714286,157.8927680798005,799.8154613466335,92.20199501246883
+0.005928571428571429,0.3571428571428572,145.41147132169576,816.4039900249377,999.0
+0.005928571428571429,0.3857142857142858,134.11970074812967,822.5885286783042,999.0
+0.005928571428571429,0.41428571428571437,124.34164588528678,831.0224438902743,999.0
+0.005928571428571429,0.44285714285714284,116.67581047381546,838.6558603491272,999.0
+0.005928571428571429,0.4714285714285714,109.90274314214464,843.6907730673316,999.0
+0.005928571428571429,0.5,103.88528678304239,847.7007481296758,999.0
+0.006571428571428572,0.1,432.55610972568576,542.3216957605985,80.79052369077307
+0.006571428571428572,0.1285714285714286,360.99002493765585,609.6184538653366,999.0
+0.006571428571428572,0.15714285714285714,321.1546134663342,667.6334164588528,72.83291770573567
+0.006571428571428572,0.18571428571428572,274.9850374064838,704.0523690773067,85.00997506234414
+0.006571428571428572,0.2142857142857143,235.67581047381546,733.1097256857855,84.61346633416458
+0.006571428571428572,0.24285714285714288,210.87531172069825,752.3466334164589,84.01246882793018
+0.006571428571428572,0.27142857142857146,190.92768079800499,768.351620947631,73.10473815461347
+0.006571428571428572,0.30000000000000004,172.39900249376558,795.4887780548628,79.03241895261846
+0.006571428571428572,0.3285714285714286,157.89526184538653,814.5311720698254,999.0
+0.006571428571428572,0.3571428571428572,145.2793017456359,821.428927680798,999.0
+0.006571428571428572,0.3857142857142858,134.91271820448878,828.1895261845386,999.0
+0.006571428571428572,0.41428571428571437,125.6932668329177,836.4812967581047,999.0
+0.006571428571428572,0.44285714285714284,117.08977556109726,843.7356608478804,999.0
+0.006571428571428572,0.4714285714285714,110.50623441396509,852.7680798004988,999.0
+0.006571428571428572,0.5,104.30423940149626,858.6259351620947,999.0
+0.007214285714285715,0.1,443.25436408977555,535.5586034912718,70.0
+0.007214285714285715,0.1285714285714286,378.66583541147133,610.3067331670823,73.95261845386534
+0.007214285714285715,0.15714285714285714,319.1147132169576,663.1147132169576,999.0
+0.007214285714285715,0.18571428571428572,276.9700748129676,700.428927680798,999.0
+0.007214285714285715,0.2142857142857143,243.54613466334163,738.3017456359103,999.0
+0.007214285714285715,0.24285714285714288,216.33167082294264,760.9177057356609,999.0
+0.007214285714285715,0.27142857142857146,192.5561097256858,776.5187032418953,999.0
+0.007214285714285715,0.30000000000000004,174.19700748129677,793.1920199501246,72.70822942643392
+0.007214285714285715,0.3285714285714286,159.66334164588528,809.3266832917706,999.0
+0.007214285714285715,0.3571428571428572,146.70074812967582,824.1745635910224,89.78054862842893
+0.007214285714285715,0.3857142857142858,135.58104738154614,836.428927680798,999.0
+0.007214285714285715,0.41428571428571437,126.22693266832918,844.6957605985037,999.0
+0.007214285714285715,0.44285714285714284,118.33915211970074,851.0498753117207,999.0
+0.007214285714285715,0.4714285714285714,111.47381546134663,857.0224438902743,999.0
+0.007214285714285715,0.5,104.44638403990025,862.6658354114713,999.0
+0.007857142857142858,0.1,446.286783042394,541.3615960099751,999.0
+0.007857142857142858,0.1285714285714286,380.5860349127182,615.9326683291771,62.46134663341646
+0.007857142857142858,0.15714285714285714,322.4339152119701,672.783042394015,58.748129675810475
+0.007857142857142858,0.18571428571428572,271.1371571072319,706.8478802992519,75.10972568578553
+0.007857142857142858,0.2142857142857143,237.8503740648379,743.281795511222,999.0
+0.007857142857142858,0.24285714285714288,212.27431421446383,766.6309226932668,999.0
+0.007857142857142858,0.27142857142857146,190.92768079800499,784.571072319202,999.0
+0.007857142857142858,0.30000000000000004,173.8354114713217,801.1745635910224,63.750623441396506
+0.007857142857142858,0.3285714285714286,158.66334164588528,816.1022443890274,73.9650872817955
+0.007857142857142858,0.3571428571428572,146.30423940149626,828.8927680798005,66.50124688279301
+0.007857142857142858,0.3857142857142858,136.32668329177056,839.2967581047382,74.9501246882793
+0.007857142857142858,0.41428571428571437,126.29675810473816,845.2044887780548,999.0
+0.007857142857142858,0.44285714285714284,118.08977556109726,852.3990024937656,57.251870324189525
+0.007857142857142858,0.4714285714285714,111.36159600997506,858.5835411471322,57.85037406483791
+0.007857142857142858,0.5,105.21945137157107,864.1795511221945,65.94014962593516
+0.0085,0.1,443.91521197007484,552.4812967581047,57.81296758104738
+0.0085,0.1285714285714286,379.42394014962593,622.4763092269327,68.91521197007481
+0.0085,0.15714285714285714,321.9625935162095,675.576059850374,58.753117206982544
+0.0085,0.18571428571428572,272.00249376558605,712.645885286783,69.5286783042394
+0.0085,0.2142857142857143,237.5137157107232,743.6159600997506,999.0
+0.0085,0.24285714285714288,211.81795511221947,767.5062344139651,999.0
+0.0085,0.27142857142857146,190.86284289276807,790.5635910224439,62.63341645885287
+0.0085,0.30000000000000004,173.7581047381546,812.2992518703242,73.82793017456359
+0.0085,0.3285714285714286,160.1845386533666,824.6084788029925,999.0
+0.0085,0.3571428571428572,147.2568578553616,838.1122194513715,56.733167082294266
+0.0085,0.3857142857142858,137.5361596009975,844.2344139650872,88.48877805486285
+0.0085,0.41428571428571437,127.6857855361596,852.2269326683291,999.0
+0.0085,0.44285714285714284,119.03740648379052,859.5236907730673,999.0
+0.0085,0.4714285714285714,111.16458852867831,865.2394014962593,999.0
+0.0085,0.5,104.54613466334165,870.3117206982544,999.0
+0.009142857142857144,0.1,440.1496259351621,567.6034912718204,60.54364089775561
+0.009142857142857144,0.1285714285714286,372.5436408977556,636.4663341645885,52.95511221945137
+0.009142857142857144,0.15714285714285714,313.54613466334166,678.9900249376559,51.2069825436409
+0.009142857142857144,0.18571428571428572,271.7705735660848,731.0448877805486,65.38154613466334
+0.009142857142857144,0.2142857142857143,239.49875311720697,744.5261845386534,64.56359102244389
+0.009142857142857144,0.24285714285714288,212.01745635910225,778.4937655860349,58.591022443890274
+0.009142857142857144,0.27142857142857146,191.83042394014961,793.1670822942643,57.82793017456359
+0.009142857142857144,0.30000000000000004,173.99501246882792,815.3042394014963,68.70822942643392
+0.009142857142857144,0.3285714285714286,160.1945137157107,827.5985037406484,71.00997506234414
+0.009142857142857144,0.3571428571428572,147.69326683291771,840.8653366583541,52.77805486284289
+0.009142857142857144,0.3857142857142858,135.6359102244389,839.0199501246883,54.35411471321696
+0.009142857142857144,0.41428571428571437,126.46633416458853,846.6633416458853,54.795511221945134
+0.009142857142857144,0.44285714285714284,118.34912718204488,854.1645885286783,54.89775561097257
+0.009142857142857144,0.4714285714285714,111.68079800498754,860.3366583541147,999.0
+0.009142857142857144,0.5,105.24688279301746,866.1695760598503,999.0
+0.009785714285714286,0.1,446.9426433915212,551.3715710723192,999.0
+0.009785714285714286,0.1285714285714286,375.3241895261845,628.0299251870324,58.29925187032419
+0.009785714285714286,0.15714285714285714,313.15211970074813,678.5660847880299,999.0
+0.009785714285714286,0.18571428571428572,275.49625935162095,710.3715710723192,48.16957605985037
+0.009785714285714286,0.2142857142857143,243.69825436408976,748.3291770573566,48.45635910224439
+0.009785714285714286,0.24285714285714288,215.5211970074813,770.5810473815461,52.09725685785536
+0.009785714285714286,0.27142857142857146,192.93765586034914,786.9750623441397,999.0
+0.009785714285714286,0.30000000000000004,173.90523690773068,802.2119700748129,999.0
+0.009785714285714286,0.3285714285714286,159.77805486284288,820.3915211970075,999.0
+0.009785714285714286,0.3571428571428572,145.54862842892769,831.6408977556109,999.0
+0.009785714285714286,0.3857142857142858,135.0498753117207,841.4463840399003,50.571072319201996
+0.009785714285714286,0.41428571428571437,126.29925187032418,848.9426433915212,50.85286783042394
+0.009785714285714286,0.44285714285714284,118.38902743142144,856.5261845386534,51.3715710723192
+0.009785714285714286,0.4714285714285714,111.19451371571073,863.1147132169576,50.64339152119701
+0.009785714285714286,0.5,103.65087281795512,876.0523690773067,62.33416458852868
+0.01042857142857143,0.1,445.4139650872818,562.7132169576059,59.43142144638404
+0.01042857142857143,0.1285714285714286,369.27431421446386,629.0299251870324,55.605985037406484
+0.01042857142857143,0.15714285714285714,319.93266832917703,677.4538653366584,52.261845386533665
+0.01042857142857143,0.18571428571428572,279.1695760598504,724.6683291770573,999.0
+0.01042857142857143,0.2142857142857143,236.94763092269326,753.5386533665835,47.957605985037404
+0.01042857142857143,0.24285714285714288,210.00249376558602,773.3266832917706,49.66334164588529
+0.01042857142857143,0.27142857142857146,189.3790523690773,796.3665835411472,47.01995012468828
+0.01042857142857143,0.30000000000000004,172.03491271820448,813.7605985037407,48.566084788029926
+0.01042857142857143,0.3285714285714286,158.20947630922694,830.279301745636,999.0
+0.01042857142857143,0.3571428571428572,144.38154613466335,841.2593516209477,999.0
+0.01042857142857143,0.3857142857142858,133.69825436408976,850.5561097256858,999.0
+0.01042857142857143,0.41428571428571437,124.15960099750623,859.2693266832918,58.952618453865334
+0.01042857142857143,0.44285714285714284,116.26932668329177,866.3167082294265,58.7930174563591
+0.01042857142857143,0.4714285714285714,109.12718204488777,872.648379052369,58.69077306733167
+0.01042857142857143,0.5,103.01246882793018,878.2967581047382,58.70074812967581
+0.011071428571428572,0.1,446.6184538653367,564.8104738154614,56.05985037406484
+0.011071428571428572,0.1285714285714286,370.1496259351621,631.2219451371571,999.0
+0.011071428571428572,0.15714285714285714,319.2942643391521,679.9501246882793,49.261845386533665
+0.011071428571428572,0.18571428571428572,277.6758104738155,718.9750623441397,47.17456359102244
+0.011071428571428572,0.2142857142857143,240.643391521197,755.0648379052369,41.39650872817955
+0.011071428571428572,0.24285714285714288,214.069825436409,783.4538653366584,999.0
+0.011071428571428572,0.27142857142857146,190.9850374064838,800.4713216957606,999.0
+0.011071428571428572,0.30000000000000004,173.59850374064837,810.4613466334165,42.97007481296758
+0.011071428571428572,0.3285714285714286,158.92518703241896,827.3366583541147,45.17955112219451
+0.011071428571428572,0.3571428571428572,146.52618453865335,837.9201995012469,39.900249376558605
+0.011071428571428572,0.3857142857142858,135.21695760598504,850.8029925187033,56.728179551122196
+0.011071428571428572,0.41428571428571437,126.22443890274315,859.6009975062344,51.38403990024938
+0.011071428571428572,0.44285714285714284,117.66583541147132,867.2892768079801,51.53865336658354
+0.011071428571428572,0.4714285714285714,110.93017456359102,871.1920199501246,51.51371571072319
+0.011071428571428572,0.5,104.63092269326684,876.7730673316709,51.418952618453865
+0.011714285714285714,0.1,447.0374064837905,561.6084788029925,43.561097256857856
+0.011714285714285714,0.1285714285714286,371.25935162094765,628.4214463840399,45.67581047381546
+0.011714285714285714,0.15714285714285714,319.43142144638404,685.7132169576059,57.15211970074813
+0.011714285714285714,0.18571428571428572,277.40149625935163,719.5436408977556,44.82044887780549
+0.011714285714285714,0.2142857142857143,240.68329177057356,755.1122194513715,39.204488778054866
+0.011714285714285714,0.24285714285714288,213.28927680798006,784.3416458852868,41.13715710723192
+0.011714285714285714,0.27142857142857146,190.8778054862843,801.8827930174564,999.0
+0.011714285714285714,0.30000000000000004,181.28428927680798,808.1745635910224,999.0
+0.011714285714285714,0.3285714285714286,165.95261845386534,826.783042394015,44.276807980049874
+0.011714285714285714,0.3571428571428572,153.02992518703243,836.0,999.0
+0.011714285714285714,0.3857142857142858,142.73067331670822,846.0249376558603,999.0
+0.011714285714285714,0.41428571428571437,132.0997506234414,855.6359102244389,999.0
+0.011714285714285714,0.44285714285714284,124.02493765586036,862.6807980049875,999.0
+0.011714285714285714,0.4714285714285714,116.28927680798004,868.9002493765586,999.0
+0.011714285714285714,0.5,109.50872817955113,874.720698254364,999.0
+0.012357142857142856,0.1,446.39401496259353,552.6408977556109,45.45386533665835
+0.012357142857142856,0.1285714285714286,378.1097256857855,634.5286783042394,46.96508728179551
+0.012357142857142856,0.15714285714285714,327.6483790523691,682.6533665835411,38.042394014962596
+0.012357142857142856,0.18571428571428572,284.6982543640898,723.206982543641,999.0
+0.012357142857142856,0.2142857142857143,251.29177057356608,747.9152119700748,60.82294264339152
+0.012357142857142856,0.24285714285714288,222.5436408977556,774.4638403990025,52.94513715710723
+0.012357142857142856,0.27142857142857146,200.02493765586036,791.4837905236908,999.0
+0.012357142857142856,0.30000000000000004,181.2418952618454,809.780548628429,999.0
+0.012357142857142856,0.3285714285714286,165.50623441396507,827.4962593516209,42.0
+0.012357142857142856,0.3571428571428572,152.39900249376558,836.997506234414,999.0
+0.012357142857142856,0.3857142857142858,142.13715710723193,847.9426433915212,999.0
+0.012357142857142856,0.41428571428571437,132.54114713216958,857.0249376558603,999.0
+0.012357142857142856,0.44285714285714284,119.43391521197007,863.1795511221945,999.0
+0.012357142857142856,0.4714285714285714,112.70573566084788,869.7281795511221,999.0
+0.012357142857142856,0.5,106.06234413965088,875.8827930174564,999.0
+0.013,0.1,438.85536159600997,557.2244389027431,41.45137157107232
+0.013,0.1285714285714286,367.1695760598504,631.8628428927681,48.057356608478806
+0.013,0.15714285714285714,310.5436408977556,683.5536159600997,46.1072319201995
+0.013,0.18571428571428572,273.90773067331673,718.2269326683291,999.0
+0.013,0.2142857142857143,237.32418952618454,749.4064837905237,999.0
+0.013,0.24285714285714288,212.53865336658353,776.0997506234414,39.057356608478806
+0.013,0.27142857142857146,193.32418952618454,794.7581047381547,44.750623441396506
+0.013,0.30000000000000004,174.7206982543641,812.790523690773,42.5211970074813
+0.013,0.3285714285714286,159.65336658354116,826.8703241895262,43.728179551122196
+0.013,0.3571428571428572,147.78304239401496,835.7605985037407,38.65087281795511
+0.013,0.3857142857142858,136.9152119700748,849.1645885286783,999.0
+0.013,0.41428571428571437,127.00498753117208,857.2618453865337,999.0
+0.013,0.44285714285714284,119.12967581047381,864.3890274314215,999.0
+0.013,0.4714285714285714,112.2568578553616,871.1970074812967,999.0
+0.013,0.5,105.9501246882793,876.8478802992519,999.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-min.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-min.csv
new file mode 100644
index 0000000000..9d5fc4f58f
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-min.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,0.007481296758104738,0.9925187032418953,77.14713216957605
+0.004,0.1285714285714286,332.0224438902743,498.54114713216956,73.84538653366583
+0.004,0.15714285714285714,285.9850374064838,548.8478802992519,69.38403990024938
+0.004,0.18571428571428572,0.02743142144638404,0.972568578553616,71.34912718204488
+0.004,0.2142857142857143,214.54862842892769,653.4039900249377,71.74812967581047
+0.004,0.24285714285714288,0.0024937655860349127,0.9925187032418953,69.10972568578553
+0.004,0.27142857142857146,0.004987531172069825,0.9750623441396509,79.18952618453865
+0.004,0.30000000000000004,0.004987531172069825,0.9850374064837906,77.10473815461347
+0.004,0.3285714285714286,0.0024937655860349127,0.9975062344139651,71.53366583541147
+0.004,0.3571428571428572,0.0024937655860349127,0.9975062344139651,72.1072319201995
+0.004,0.3857142857142858,0.012468827930174564,0.9875311720698254,79.39900249376558
+0.004,0.41428571428571437,0.012468827930174564,0.9800498753117207,81.07980049875312
+0.004,0.44285714285714284,0.004987531172069825,0.9950124688279302,77.45885286783043
+0.004,0.4714285714285714,0.0024937655860349127,0.9850374064837906,78.9426433915212
+0.004,0.5,0.004987531172069825,0.972568578553616,78.05486284289277
+0.004642857142857143,0.1,401.78304239401496,480.91022443890273,64.53117206982543
+0.004642857142857143,0.1285714285714286,327.9725685785536,524.9775561097257,61.51620947630923
+0.004642857142857143,0.15714285714285714,0.0024937655860349127,0.9875311720698254,65.55112219451371
+0.004642857142857143,0.18571428571428572,249.49625935162095,628.2718204488779,64.9002493765586
+0.004642857142857143,0.2142857142857143,220.0149625935162,626.8628428927681,63.930174563591024
+0.004642857142857143,0.24285714285714288,0.012468827930174564,0.9875311720698254,65.35910224438902
+0.004642857142857143,0.27142857142857146,174.0773067331671,707.142144638404,70.16209476309227
+0.004642857142857143,0.30000000000000004,0.014962593516209476,0.9850374064837906,66.89775561097257
+0.004642857142857143,0.3285714285714286,0.004987531172069825,0.9950124688279302,69.80299251870325
+0.004642857142857143,0.3571428571428572,0.0024937655860349127,0.9850374064837906,68.26683291770574
+0.004642857142857143,0.3857142857142858,0.0024937655860349127,0.9875311720698254,66.91770573566085
+0.004642857142857143,0.41428571428571437,0.0024937655860349127,0.9950124688279302,66.96009975062344
+0.004642857142857143,0.44285714285714284,0.0024937655860349127,0.9975062344139651,70.90523690773067
+0.004642857142857143,0.4714285714285714,0.0024937655860349127,0.9975062344139651,71.79800498753117
+0.004642857142857143,0.5,95.19950124688279,786.7955112219452,74.51870324189527
+0.005285714285714286,0.1,397.5660847880299,493.93765586034914,53.261845386533665
+0.005285714285714286,0.1285714285714286,327.26932668329175,559.209476309227,54.98753117206982
+0.005285714285714286,0.15714285714285714,0.0024937655860349127,0.9900249376558603,58.19201995012469
+0.005285714285714286,0.18571428571428572,249.87281795511223,641.2219451371571,60.281795511221944
+0.005285714285714286,0.2142857142857143,218.10473815461347,677.5885286783042,52.1571072319202
+0.005285714285714286,0.24285714285714288,0.0024937655860349127,0.9775561097256857,58.81546134663342
+0.005285714285714286,0.27142857142857146,0.004987531172069825,0.9950124688279302,53.29925187032419
+0.005285714285714286,0.30000000000000004,152.76807980049875,719.9201995012469,61.15960099750623
+0.005285714285714286,0.3285714285714286,0.007481296758104738,0.9925187032418953,56.403990024937656
+0.005285714285714286,0.3571428571428572,0.004987531172069825,0.9775561097256857,54.97256857855361
+0.005285714285714286,0.3857142857142858,0.0199501246882793,0.9800498753117207,57.88279301745636
+0.005285714285714286,0.41428571428571437,110.50623441396509,787.4588528678304,58.53615960099751
+0.005285714285714286,0.44285714285714284,0.00997506234413965,0.9900249376558603,58.54862842892768
+0.005285714285714286,0.4714285714285714,0.00997506234413965,0.9900249376558603,58.71321695760599
+0.005285714285714286,0.5,0.00997506234413965,0.9900249376558603,58.84788029925187
+0.005928571428571429,0.1,398.1271820448878,445.359102244389,54.4788029925187
+0.005928571428571429,0.1285714285714286,330.81795511221947,558.1645885286783,51.915211970074814
+0.005928571428571429,0.15714285714285714,281.44638403990024,603.925187032419,50.45137157107232
+0.005928571428571429,0.18571428571428572,0.017456359102244388,0.9825436408977556,52.86533665835412
+0.005928571428571429,0.2142857142857143,0.004987531172069825,0.9925187032418953,55.204488778054866
+0.005928571428571429,0.24285714285714288,0.0024937655860349127,0.9975062344139651,51.50374064837905
+0.005928571428571429,0.27142857142857146,0.0024937655860349127,0.9975062344139651,52.266832917705734
+0.005928571428571429,0.30000000000000004,0.00997506234413965,0.9900249376558603,54.109725685785534
+0.005928571428571429,0.3285714285714286,139.86783042394015,758.1346633416459,49.775561097256855
+0.005928571428571429,0.3571428571428572,0.00997506234413965,0.9900249376558603,50.399002493765586
+0.005928571428571429,0.3857142857142858,0.004987531172069825,0.9950124688279302,53.082294264339154
+0.005928571428571429,0.41428571428571437,0.004987531172069825,0.9950124688279302,52.895261845386536
+0.005928571428571429,0.44285714285714284,0.004987531172069825,0.9950124688279302,52.84788029925187
+0.005928571428571429,0.4714285714285714,0.004987531172069825,0.9950124688279302,54.51620947630923
+0.005928571428571429,0.5,0.0024937655860349127,0.9950124688279302,55.05486284289277
+0.006571428571428572,0.1,407.25187032418955,493.58354114713217,41.907730673316706
+0.006571428571428572,0.1285714285714286,0.0199501246882793,0.9800498753117207,42.239401496259354
+0.006571428571428572,0.15714285714285714,283.4364089775561,613.1022443890274,43.932668329177055
+0.006571428571428572,0.18571428571428572,247.15461346633415,650.9875311720698,41.9501246882793
+0.006571428571428572,0.2142857142857143,216.90274314214463,684.576059850374,39.70822942643392
+0.006571428571428572,0.24285714285714288,191.5561097256858,709.5610972568578,48.89775561097257
+0.006571428571428572,0.27142857142857146,173.83790523690774,742.2892768079801,49.224438902743145
+0.006571428571428572,0.30000000000000004,156.86783042394015,762.5037406483791,44.86284289276808
+0.006571428571428572,0.3285714285714286,0.004987531172069825,0.9950124688279302,40.87032418952619
+0.006571428571428572,0.3571428571428572,0.00997506234413965,0.9900249376558603,45.22693266832918
+0.006571428571428572,0.3857142857142858,0.004987531172069825,0.9950124688279302,47.32917705735661
+0.006571428571428572,0.41428571428571437,0.004987531172069825,0.9950124688279302,48.089775561097255
+0.006571428571428572,0.44285714285714284,0.004987531172069825,0.9950124688279302,47.93516209476309
+0.006571428571428572,0.4714285714285714,0.004987531172069825,0.9925187032418953,44.17705735660848
+0.006571428571428572,0.5,0.004987531172069825,0.9925187032418953,44.19201995012469
+0.007214285714285715,0.1,416.785536159601,499.5162094763092,42.261845386533665
+0.007214285714285715,0.1285714285714286,341.77556109725685,567.3291770573566,40.17206982543641
+0.007214285714285715,0.15714285714285714,0.004987531172069825,0.9950124688279302,45.68329177057357
+0.007214285714285715,0.18571428571428572,0.007481296758104738,0.9925187032418953,41.246882793017456
+0.007214285714285715,0.2142857142857143,0.0024937655860349127,0.9950124688279302,42.85286783042394
+0.007214285714285715,0.24285714285714288,0.0024937655860349127,0.9950124688279302,44.25935162094763
+0.007214285714285715,0.27142857142857146,0.004987531172069825,0.9950124688279302,43.067331670822945
+0.007214285714285715,0.30000000000000004,154.69326683291771,762.4089775561097,46.438902743142144
+0.007214285714285715,0.3285714285714286,0.004987531172069825,0.9950124688279302,42.55361596009975
+0.007214285714285715,0.3571428571428572,132.0997506234414,769.7431421446385,41.35411471321696
+0.007214285714285715,0.3857142857142858,0.007481296758104738,0.9925187032418953,38.86034912718205
+0.007214285714285715,0.41428571428571437,0.004987531172069825,0.9925187032418953,38.775561097256855
+0.007214285714285715,0.44285714285714284,0.004987531172069825,0.9925187032418953,40.34413965087282
+0.007214285714285715,0.4714285714285714,0.004987531172069825,0.9925187032418953,40.37406483790524
+0.007214285714285715,0.5,0.004987531172069825,0.9925187032418953,40.236907730673316
+0.007857142857142858,0.1,0.00997506234413965,0.9900249376558603,39.30922693266833
+0.007857142857142858,0.1285714285714286,340.713216957606,566.0473815461347,37.566084788029926
+0.007857142857142858,0.15714285714285714,281.52369077306736,625.1620947630922,39.44638403990025
+0.007857142857142858,0.18571428571428572,241.87281795511223,654.2892768079801,37.738154613466335
+0.007857142857142858,0.2142857142857143,0.0024937655860349127,0.9925187032418953,40.583541147132166
+0.007857142857142858,0.24285714285714288,0.004987531172069825,0.9950124688279302,36.97506234413965
+0.007857142857142858,0.27142857142857146,0.0024937655860349127,0.9900249376558603,42.067331670822945
+0.007857142857142858,0.30000000000000004,154.76807980049875,770.8329177057357,40.65087281795511
+0.007857142857142858,0.3285714285714286,141.10473815461347,781.0274314214464,35.80548628428928
+0.007857142857142858,0.3571428571428572,130.3142144638404,798.9925187032419,35.70573566084788
+0.007857142857142858,0.3857142857142858,120.84039900249377,794.6359102244389,39.244389027431424
+0.007857142857142858,0.41428571428571437,0.007481296758104738,0.9925187032418953,39.5785536159601
+0.007857142857142858,0.44285714285714284,104.06982543640898,828.5311720698254,39.48129675810474
+0.007857142857142858,0.4714285714285714,97.56109725685785,834.3615960099751,39.37406483790524
+0.007857142857142858,0.5,92.18453865336659,832.3790523690773,39.32418952618454
+0.0085,0.1,401.8703241895262,507.9700748129676,32.745635910224436
+0.0085,0.1285714285714286,337.43142144638404,573.1920199501246,35.68827930174564
+0.0085,0.15714285714285714,282.1720698254364,631.8179551122195,35.12967581047381
+0.0085,0.18571428571428572,242.77306733167083,658.4688279301746,35.46384039900249
+0.0085,0.2142857142857143,0.004987531172069825,0.9950124688279302,35.51870324189526
+0.0085,0.24285714285714288,0.014962593516209476,0.9850374064837906,38.19950124688279
+0.0085,0.27142857142857146,164.0,755.9576059850374,33.256857855361595
+0.0085,0.30000000000000004,149.41895261845386,762.8653366583541,35.67331670822943
+0.0085,0.3285714285714286,0.0024937655860349127,0.9975062344139651,36.69077306733167
+0.0085,0.3571428571428572,126.16708229426433,796.0099750623441,35.72069825436409
+0.0085,0.3857142857142858,117.14463840399003,781.1720698254364,32.089775561097255
+0.0085,0.41428571428571437,0.0024937655860349127,0.9975062344139651,32.13216957605985
+0.0085,0.44285714285714284,0.0024937655860349127,0.9975062344139651,35.49376558603491
+0.0085,0.4714285714285714,0.0024937655860349127,0.9975062344139651,35.433915211970074
+0.0085,0.5,0.0024937655860349127,0.9975062344139651,35.53615960099751
+0.009142857142857144,0.1,395.85536159600997,512.8254364089776,34.34413965087282
+0.009142857142857144,0.1285714285714286,324.1221945137157,580.9526184538653,33.96259351620947
+0.009142857142857144,0.15714285714285714,274.94513715710724,644.3291770573566,34.42643391521197
+0.009142857142857144,0.18571428571428572,237.60349127182045,670.2394014962593,30.905236907730675
+0.009142857142857144,0.2142857142857143,207.55361596009976,701.6533665835411,32.55860349127182
+0.009142857142857144,0.24285714285714288,183.8204488778055,738.6059850374065,35.97007481296758
+0.009142857142857144,0.27142857142857146,164.73067331670822,759.3491271820449,31.00498753117207
+0.009142857142857144,0.30000000000000004,148.99750623441398,767.1371571072319,33.35162094763092
+0.009142857142857144,0.3285714285714286,136.76309226932668,775.7281795511221,33.85286783042394
+0.009142857142857144,0.3571428571428572,125.82543640897755,799.5286783042394,33.30922693266833
+0.009142857142857144,0.3857142857142858,124.77306733167082,816.3690773067332,31.738154613466335
+0.009142857142857144,0.41428571428571437,115.34413965087282,826.6159600997506,33.35910224438903
+0.009142857142857144,0.44285714285714284,107.86783042394015,833.9925187032419,33.63341645885287
+0.009142857142857144,0.4714285714285714,0.0024937655860349127,0.9975062344139651,35.65835411471322
+0.009142857142857144,0.5,0.0024937655860349127,0.9975062344139651,36.16957605985037
+0.009785714285714286,0.1,0.0024937655860349127,0.9975062344139651,31.773067331670823
+0.009785714285714286,0.1285714285714286,337.76059850374065,586.0099750623441,32.53865336658354
+0.009785714285714286,0.15714285714285714,0.014962593516209476,0.9850374064837906,29.67082294264339
+0.009785714285714286,0.18571428571428572,246.79052369077306,688.8204488778055,34.02493765586035
+0.009785714285714286,0.2142857142857143,218.9002493765586,714.5536159600997,31.07231920199501
+0.009785714285714286,0.24285714285714288,196.84788029925187,737.0673316708229,29.25436408977556
+0.009785714285714286,0.27142857142857146,0.0024937655860349127,0.9975062344139651,30.154613466334165
+0.009785714285714286,0.30000000000000004,0.014962593516209476,0.9850374064837906,30.763092269326684
+0.009785714285714286,0.3285714285714286,0.004987531172069825,0.9950124688279302,31.389027431421447
+0.009785714285714286,0.3571428571428572,0.0024937655860349127,0.9975062344139651,32.7930174563591
+0.009785714285714286,0.3857142857142858,124.79551122194513,819.7356608478804,29.788029925187033
+0.009785714285714286,0.41428571428571437,116.18703241895261,829.5885286783042,30.640897755610972
+0.009785714285714286,0.44285714285714284,107.84039900249377,837.8029925187033,31.256857855361595
+0.009785714285714286,0.4714285714285714,101.17955112219451,843.3765586034913,32.880299251870326
+0.009785714285714286,0.5,93.11970074812967,842.8379052369078,30.82793017456359
+0.01042857142857143,0.1,402.46134663341644,515.0399002493766,30.359102244389028
+0.01042857142857143,0.1285714285714286,335.501246882793,592.0074812967581,28.027431421446384
+0.01042857142857143,0.15714285714285714,282.5586034912718,627.8054862842893,28.75062344139651
+0.01042857142857143,0.18571428571428572,0.0024937655860349127,0.9975062344139651,27.28428927680798
+0.01042857142857143,0.2142857142857143,213.6059850374065,723.3890274314215,28.48877805486284
+0.01042857142857143,0.24285714285714288,188.8204488778055,742.6533665835411,27.179551122194514
+0.01042857142857143,0.27142857142857146,171.286783042394,764.8379052369078,28.23441396508728
+0.01042857142857143,0.30000000000000004,154.7356608478803,782.6758104738154,29.104738154613468
+0.01042857142857143,0.3285714285714286,0.004987531172069825,0.9950124688279302,28.523690773067333
+0.01042857142857143,0.3571428571428572,0.0024937655860349127,0.9975062344139651,28.503740648379054
+0.01042857142857143,0.3857142857142858,0.0024937655860349127,0.9975062344139651,28.48877805486284
+0.01042857142857143,0.41428571428571437,112.03241895261846,824.5386533665835,28.698254364089774
+0.01042857142857143,0.44285714285714284,104.9925187032419,833.2668329177058,28.69077306733167
+0.01042857142857143,0.4714285714285714,98.54364089775561,840.4214463840399,28.80798004987531
+0.01042857142857143,0.5,92.93516209476309,846.4937655860349,28.768079800498754
+0.011071428571428572,0.1,402.34164588528677,516.7755610972569,25.374064837905237
+0.011071428571428572,0.1285714285714286,0.017456359102244388,0.9825436408977556,26.967581047381547
+0.011071428571428572,0.15714285714285714,282.28179551122196,631.4438902743142,27.159600997506235
+0.011071428571428572,0.18571428571428572,248.58354114713217,679.4613466334165,25.99501246882793
+0.011071428571428572,0.2142857142857143,216.0224438902743,721.8254364089776,28.91271820448878
+0.011071428571428572,0.24285714285714288,0.007481296758104738,0.9925187032418953,24.877805486284288
+0.011071428571428572,0.27142857142857146,0.004987531172069825,0.9950124688279302,27.58852867830424
+0.011071428571428572,0.30000000000000004,156.60349127182045,783.4314214463841,24.508728179551124
+0.011071428571428572,0.3285714285714286,143.07481296758104,797.7680798004988,27.683291770573565
+0.011071428571428572,0.3571428571428572,131.5635910224439,814.6982543640897,28.81296758104738
+0.011071428571428572,0.3857142857142858,122.1072319201995,818.8029925187033,25.960099750623442
+0.011071428571428572,0.41428571428571437,113.96009975062344,825.4937655860349,26.286783042394013
+0.011071428571428572,0.44285714285714284,106.23192019950125,833.1097256857855,25.543640897755612
+0.011071428571428572,0.4714285714285714,99.95261845386534,839.9800498753117,28.049875311720697
+0.011071428571428572,0.5,94.25436408977556,846.0224438902743,28.01496259351621
+0.011714285714285714,0.1,406.07730673316706,523.720698254364,24.92269326683292
+0.011714285714285714,0.1285714285714286,337.28179551122196,602.6009975062344,26.139650872817956
+0.011714285714285714,0.15714285714285714,285.6633416458853,638.5586034912718,24.508728179551124
+0.011714285714285714,0.18571428571428572,248.12468827930175,679.2543640897755,24.35411471321696
+0.011714285714285714,0.2142857142857143,217.5436408977556,723.7730673316709,24.069825436408976
+0.011714285714285714,0.24285714285714288,192.0573566084788,749.6758104738154,23.600997506234414
+0.011714285714285714,0.27142857142857146,0.004987531172069825,0.9950124688279302,26.109725685785538
+0.011714285714285714,0.30000000000000004,0.004987531172069825,0.9950124688279302,29.246882793017456
+0.011714285714285714,0.3285714285714286,143.63341645885288,798.1895261845386,26.952618453865338
+0.011714285714285714,0.3571428571428572,0.007481296758104738,0.9925187032418953,26.58852867830424
+0.011714285714285714,0.3857142857142858,0.004987531172069825,0.9950124688279302,27.800498753117207
+0.011714285714285714,0.41428571428571437,0.0024937655860349127,0.9950124688279302,27.059850374064837
+0.011714285714285714,0.44285714285714284,0.0024937655860349127,0.9950124688279302,27.25935162094763
+0.011714285714285714,0.4714285714285714,0.0024937655860349127,0.9950124688279302,27.31920199501247
+0.011714285714285714,0.5,0.0024937655860349127,0.9950124688279302,27.23940149625935
+0.012357142857142856,0.1,416.50374064837905,518.925187032419,26.623441396508728
+0.012357142857142856,0.1285714285714286,333.66084788029923,591.2394014962593,24.783042394014963
+0.012357142857142856,0.15714285714285714,291.15960099750623,640.2867830423941,23.366583541147133
+0.012357142857142856,0.18571428571428572,0.004987531172069825,0.9950124688279302,21.75062344139651
+0.012357142857142856,0.2142857142857143,221.38154613466335,714.6683291770573,25.366583541147133
+0.012357142857142856,0.24285714285714288,192.4214463840399,742.6982543640897,27.76059850374065
+0.012357142857142856,0.27142857142857146,0.004987531172069825,0.9950124688279302,26.743142144638405
+0.012357142857142856,0.30000000000000004,0.004987531172069825,0.9950124688279302,27.28428927680798
+0.012357142857142856,0.3285714285714286,143.4788029925187,800.3915211970075,25.33416458852868
+0.012357142857142856,0.3571428571428572,0.007481296758104738,0.9925187032418953,25.246882793017456
+0.012357142857142856,0.3857142857142858,0.004987531172069825,0.9950124688279302,26.286783042394013
+0.012357142857142856,0.41428571428571437,0.0024937655860349127,0.9950124688279302,25.785536159600998
+0.012357142857142856,0.44285714285714284,0.0024937655860349127,0.9975062344139651,25.32917705735661
+0.012357142857142856,0.4714285714285714,0.0024937655860349127,0.9975062344139651,25.31920199501247
+0.012357142857142856,0.5,0.0024937655860349127,0.9975062344139651,25.301745635910226
+0.013,0.1,415.0299251870324,524.9052369077307,23.114713216957608
+0.013,0.1285714285714286,335.90274314214463,595.9476309226933,25.76558603491272
+0.013,0.15714285714285714,288.6334164588529,650.7381546134663,25.06733167082294
+0.013,0.18571428571428572,0.0024937655860349127,0.9975062344139651,23.074812967581046
+0.013,0.2142857142857143,0.0024937655860349127,0.9975062344139651,22.44638403990025
+0.013,0.24285714285714288,196.83042394014961,753.790523690773,21.521197007481298
+0.013,0.27142857142857146,176.69576059850374,772.6384039900249,21.518703241895263
+0.013,0.30000000000000004,159.30174563591024,788.2568578553615,23.82793017456359
+0.013,0.3285714285714286,145.60099750623442,802.7057356608478,24.7356608478803
+0.013,0.3571428571428572,133.9152119700748,822.0224438902743,22.743142144638405
+0.013,0.3857142857142858,0.0024937655860349127,0.9850374064837906,22.054862842892767
+0.013,0.41428571428571437,0.0024937655860349127,0.9850374064837906,22.012468827930174
+0.013,0.44285714285714284,0.0024937655860349127,0.9975062344139651,24.044887780548628
+0.013,0.4714285714285714,0.0024937655860349127,0.9975062344139651,24.16708229426434
+0.013,0.5,0.0024937655860349127,0.9975062344139651,24.134663341645886
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-var.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-var.csv
new file mode 100644
index 0000000000..bfc900c45d
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/avg-var.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,8415.59986747595,11489.671576980241,39296.362105583925
+0.004,0.1285714285714286,87.6710108146094,279.73474113966984,284.5056740940667
+0.004,0.15714285714285714,77.02625941380958,269.1528688254425,301.6212123058936
+0.004,0.18571428571428572,3250.449504340769,19877.790145257186,38813.15596358232
+0.004,0.2142857142857143,37.50036386589636,177.40508610021098,178.63761892028035
+0.004,0.24285714285714288,3732.182776910591,44739.747736394675,74122.8751130279
+0.004,0.27142857142857146,5358.632639411446,83670.14919248017,131202.78518261702
+0.004,0.30000000000000004,3527.9563808682788,68873.09224445121,103359.50837246035
+0.004,0.3285714285714286,1116.0444086790508,27216.759058339183,39232.74584150597
+0.004,0.3571428571428572,943.5611964322363,27538.357440734202,38546.100630530906
+0.004,0.3857142857142858,808.0430130876051,28231.109315162845,38441.8627866742
+0.004,0.41428571428571437,1312.5154508367484,54318.62079121087,72419.73498191863
+0.004,0.44285714285714284,615.7052888197212,29696.395139084947,38760.32563620563
+0.004,0.4714285714285714,1434.6243097990682,81043.93849820584,103954.27711575176
+0.004,0.5,1592.277609032282,102788.05126415569,129871.98314206689
+0.004642857142857143,0.1,104.49095459605351,136.5975853850411,87.89451425986155
+0.004642857142857143,0.1285714285714286,64.76884975839701,242.35590355470444,108.42542762482819
+0.004642857142857143,0.15714285714285714,8009.009006722596,34095.09221155341,74975.98246926322
+0.004642857142857143,0.18571428571428572,36.62905056560599,173.06420064240874,189.8283861885187
+0.004642857142857143,0.2142857142857143,31.478360504598875,331.649031085006,257.61934440706216
+0.004642857142857143,0.24285714285714288,1955.4966374587227,24439.559474428017,40068.00050091418
+0.004642857142857143,0.27142857142857146,20.165905000590797,184.25525220614264,176.04658018295902
+0.004642857142857143,0.30000000000000004,1300.9373724510422,26731.763781692902,39686.81861211995
+0.004642857142857143,0.3285714285714286,1092.298166973464,27576.09208181231,39532.542105397355
+0.004642857142857143,0.3571428571428572,1746.0410699560325,53725.05002660122,74699.72251470762
+0.004642857142857143,0.3857142857142858,2664.9766549337373,98676.90530910877,133638.02228928925
+0.004642857142857143,0.41428571428571437,1301.948770903166,56778.97096925704,75149.16243821556
+0.004642857142857143,0.44285714285714284,605.3201090011877,30598.187680424868,39671.711898853246
+0.004642857142857143,0.4714285714285714,535.1538172026293,31074.904050907637,39632.28773645687
+0.004642857142857143,0.5,9.167550248443735,147.59719459145123,136.64035553261482
+0.005285714285714286,0.1,116.18358592297314,127.11942705580184,67.61412484996985
+0.005285714285714286,0.1285714285714286,84.15541762799981,178.00334281192278,82.95314673105267
+0.005285714285714286,0.15714285714285714,8071.317260138307,35667.50549901742,77413.33100565296
+0.005285714285714286,0.18571428571428572,34.57815528199448,104.08409168786253,96.10064713527903
+0.005285714285714286,0.2142857142857143,33.088856583603345,109.8420236814447,174.14707574890707
+0.005285714285714286,0.24285714285714288,3699.302243518386,47589.256912954515,77571.01789317232
+0.005285714285714286,0.27142857142857146,1586.865236829995,26887.31147895536,41317.69678789312
+0.005285714285714286,0.30000000000000004,27.816407407292257,144.66414394189098,137.08924712843822
+0.005285714285714286,0.3285714285714286,1085.5972120820145,28556.024045310663,40612.60816729996
+0.005285714285714286,0.3571428571428572,1737.044676012587,55316.0326721227,76517.55118430543
+0.005285714285714286,0.3857142857142858,795.7434803732564,30058.883845871605,40509.217989238256
+0.005285714285714286,0.41428571428571437,16.222201416657846,120.30873954453014,143.5954275626395
+0.005285714285714286,0.44285714285714284,601.2966452167586,31258.381454390823,40424.198784149354
+0.005285714285714286,0.4714285714285714,530.9758945995361,31732.55807045665,40369.807928992974
+0.005285714285714286,0.5,472.0908118730605,32164.385027005424,40333.4886486247
+0.005928571428571429,0.1,100.32251284195993,345.65218493666066,309.2338488411141
+0.005928571428571429,0.1285714285714286,131.04013002095752,176.47415351894588,124.27854383679205
+0.005928571428571429,0.15714285714285714,71.65690704659809,179.42226035596764,104.03169723757938
+0.005928571428571429,0.18571428571428572,3247.142070183021,21888.09373603087,41640.160171640724
+0.005928571428571429,0.2142857142857143,4683.830562869634,44747.75743565028,78038.1767730922
+0.005928571428571429,0.24285714285714288,3706.4479502459567,48019.433362603464,78128.83411873993
+0.005928571428571429,0.27142857142857146,2987.0352045540762,51492.631170375185,79057.25574287472
+0.005928571428571429,0.30000000000000004,1298.2992889347702,28019.865630981767,41197.733118746146
+0.005928571428571429,0.3285714285714286,21.98172677719666,120.49743687850193,117.58321832575669
+0.005928571428571429,0.3571428571428572,1738.9536839167667,56461.12616045608,77859.73715648534
+0.005928571428571429,0.3857142857142858,1490.9416812706388,58256.49397292306,78298.06537614815
+0.005928571428571429,0.41428571428571437,1291.2810420799622,59493.63316053695,78241.88737538944
+0.005928571428571429,0.44285714285714284,1132.5200582707816,60142.8882497466,77697.61362894198
+0.005928571428571429,0.4714285714285714,999.1333071778163,61057.43296552884,77597.93390207461
+0.005928571428571429,0.5,1567.8553363474107,110310.20925322294,138117.96721965348
+0.006571428571428572,0.1,37.38230452546928,101.17509746518994,67.76546692806637
+0.006571428571428572,0.1285714285714286,5880.715367985895,16522.712988476436,41979.68461170951
+0.006571428571428572,0.15714285714285714,73.87257447092998,121.66678097462065,48.58781251360377
+0.006571428571428572,0.18571428571428572,43.968488053556925,153.5280635537095,119.4776362709187
+0.006571428571428572,0.2142857142857143,28.02983891580279,128.42350002487535,101.53308530419585
+0.006571428571428572,0.24285714285714288,25.484343132194418,73.55720354661972,60.068249249071854
+0.006571428571428572,0.27142857142857146,22.806457344792623,34.973563146373394,31.6141338673267
+0.006571428571428572,0.30000000000000004,20.089349506532905,85.2772401291034,79.9913791580898
+0.006571428571428572,0.3285714285714286,2049.9381666003314,56078.168315246796,79444.39525455376
+0.006571428571428572,0.3571428571428572,930.2472786083417,30453.648554673164,41883.345243173244
+0.006571428571428572,0.3857142857142858,1496.257800806587,59252.56488336516,79486.08767313325
+0.006571428571428572,0.41428571428571437,1294.587535587465,60535.92010777297,79450.66993277404
+0.006571428571428572,0.44285714285714284,1131.0614914708242,61235.14741705587,78934.11892426045
+0.006571428571428572,0.4714285714285714,1014.3784944589897,62370.85517893235,79209.10227200077
+0.006571428571428572,0.5,899.6272766338518,63273.816878299884,79176.98321109633
+0.007214285714285715,0.1,45.78980883203458,86.9316298406103,62.09118823887911
+0.007214285714285715,0.1285714285714286,79.5762398710207,168.46048065621483,77.09262596314703
+0.007214285714285715,0.15714285714285714,4335.024037226138,19722.294014713836,42260.36869602802
+0.007214285714285715,0.18571428571428572,3257.4668361981576,22413.704595416075,42491.83449176312
+0.007214285714285715,0.2142857142857143,4684.916366362771,46104.67310991537,79966.31995814703
+0.007214285714285715,0.24285714285714288,3720.0442854832995,49834.985152517715,80625.21760225369
+0.007214285714285715,0.27142857142857146,1602.5277246254686,27722.978886620735,42504.01871499555
+0.007214285714285715,0.30000000000000004,23.476243555699263,62.547377877003456,58.061718583839635
+0.007214285714285715,0.3285714285714286,1103.6888827805794,29946.93464655071,42397.89261783198
+0.007214285714285715,0.3571428571428572,12.652169125192017,132.45936000087053,119.04354948041369
+0.007214285714285715,0.3857142857142858,802.2729984732682,31628.070876984595,42376.51205308114
+0.007214285714285715,0.41428571428571437,1306.2914647763384,61338.65752109749,80454.17764023543
+0.007214285714285715,0.44285714285714284,1145.5372171192962,62438.82788564748,80410.00521197007
+0.007214285714285715,0.4714285714285714,1012.895480423007,63303.693383187914,80248.89229723386
+0.007214285714285715,0.5,901.3897636675144,64151.81942492585,80186.71140732957
+0.007857142857142858,0.1,8705.773139470526,13087.576786509411,42907.612174349044
+0.007857142857142858,0.1285714285714286,96.70303953333618,147.72956828626675,42.79943252840467
+0.007857142857142858,0.15714285714285714,113.3204542260308,121.73063818011107,32.20892289227058
+0.007857142857142858,0.18571428571428572,68.90708420656588,147.37803152654516,65.25286123842514
+0.007857142857142858,0.2142857142857143,4610.775291369458,47144.760514175905,80947.72415250838
+0.007857142857142858,0.24285714285714288,1969.2298029862995,26723.643198036705,42982.87086266565
+0.007857142857142858,0.27142857142857146,2949.7131954869683,53272.54857594169,81136.34611344145
+0.007857142857142858,0.30000000000000004,34.80065999278612,77.60127238014692,35.85547121908445
+0.007857142857142858,0.3285714285714286,27.70530898439685,88.75629156535103,80.69767109657279
+0.007857142857142858,0.3571428571428572,23.76179258835457,80.1608905417255,66.1945124097487
+0.007857142857142858,0.3857142857142858,22.1200685785536,119.78716046541975,68.52747773645686
+0.007857142857142858,0.41428571428571437,691.0037017649145,32795.38589714926,42837.25283791768
+0.007857142857142858,0.44285714285714284,17.31515306185907,62.30355052207401,33.60009863122742
+0.007857142857142858,0.4714285714285714,15.808075369556173,61.5378666021978,34.22527185776208
+0.007857142857142858,0.5,14.109638543914519,60.76895790449076,52.37777680176121
+0.0085,0.1,97.4384362503965,103.33697755300022,48.4573640089303
+0.0085,0.1285714285714286,101.92317515127397,178.3366151174437,51.69066212274798
+0.0085,0.15714285714285714,108.10741878159965,94.11525264146346,46.35050421017283
+0.0085,0.18571428571428572,68.31734906810289,151.50807078314173,55.73441164855941
+0.0085,0.2142857142857143,2471.128582829087,25182.795222215656,43149.18452024552
+0.0085,0.24285714285714288,1971.9228117362459,26980.853849105413,43300.36976971537
+0.0085,0.27142857142857146,41.69988512198306,90.74941839603017,57.51700026741128
+0.0085,0.30000000000000004,34.957857289444725,171.32745460227244,111.08133125726829
+0.0085,0.3285714285714286,1114.1218682719636,30610.484558476008,43137.77043505637
+0.0085,0.3571428571428572,24.37405482552971,90.96153162915662,31.598612119949497
+0.0085,0.3857142857142858,19.93283754454263,163.88615331994185,142.53765642004714
+0.0085,0.41428571428571437,701.9013740430719,33045.57665031623,43203.66354742819
+0.0085,0.44285714285714284,612.5598065155067,33617.09287292989,43147.550548986015
+0.0085,0.4714285714285714,540.2633742949358,34145.6387037394,43136.51904185918
+0.0085,0.5,480.8167004402958,34619.28066933663,43135.90098150821
+0.009142857142857144,0.1,144.1413834491079,181.60034034303257,38.78517190502546
+0.009142857142857144,0.1285714285714286,128.2417609965113,166.64027355240356,25.992816260471017
+0.009142857142857144,0.15714285714285714,89.91515904751844,87.87046529561404,20.99739242915156
+0.009142857142857144,0.18571428571428572,82.64492633752282,195.64361763919382,65.00230943837411
+0.009142857142857144,0.2142857142857143,64.98875131373555,130.02608845716156,52.12166124588778
+0.009142857142857144,0.24285714285714288,53.44750691848931,89.25272069203541,31.979909080167424
+0.009142857142857144,0.27142857142857146,41.19388536140943,87.66967531296456,46.57636295794181
+0.009142857142857144,0.30000000000000004,35.876975811717564,150.05787252566842,90.66763917823894
+0.009142857142857144,0.3285714285714286,31.742786736400888,140.67594944994147,73.41619919963183
+0.009142857142857144,0.3571428571428572,25.47940763739033,83.7209099445898,27.825053622178974
+0.009142857142857144,0.3857142857142858,9.505493420438928,41.374762283816736,42.69963400414176
+0.009142857142857144,0.41428571428571437,8.404899472018208,39.55706324898473,46.4053584710294
+0.009142857142857144,0.44285714285714284,7.000402531700674,37.088117284718386,45.77967120851238
+0.009142857142857144,0.4714285714285714,541.7715558982842,34361.24597699951,43471.48266918427
+0.009142857142857144,0.5,481.0900861779466,34844.01580618279,43456.85608327996
+0.009785714285714286,0.1,16398.218409882404,25795.254167495852,82858.00509287877
+0.009785714285714286,0.1285714285714286,98.04062305271722,120.62808322087551,37.261529763496505
+0.009785714285714286,0.15714285714285714,4378.632055832986,20623.695977310468,43737.950329460014
+0.009785714285714286,0.18571428571428572,45.10769118351257,39.576453178151986,17.703591069085384
+0.009785714285714286,0.2142857142857143,36.54794949969214,78.00714205757424,21.858765352827415
+0.009785714285714286,0.24285714285714288,28.75697781730214,58.67355953943072,37.022794183493886
+0.009785714285714286,0.27142857142857146,1618.417646329936,28356.945514269184,43379.108007708295
+0.009785714285714286,0.30000000000000004,1325.2535962307452,29763.95509559953,43562.283114906
+0.009785714285714286,0.3285714285714286,1110.4297184719,30983.953114657248,43736.22072306765
+0.009785714285714286,0.3571428571428572,936.9016781456583,31829.064717197034,43603.339810868725
+0.009785714285714286,0.3857142857142858,8.82150687806669,36.89045918557719,37.065898532969314
+0.009785714285714286,0.41428571428571437,7.9986866375209145,36.058572023805894,40.858926188269976
+0.009785714285714286,0.44285714285714284,7.397141979838429,32.50803382752597,40.32012823303337
+0.009785714285714286,0.4714285714285714,6.261193820312068,26.90370176491434,25.633791705275463
+0.009785714285714286,0.5,9.014262520133585,55.64452924733034,59.57305837650263
+0.01042857142857143,0.1,100.47584598354484,155.37529337504077,38.7219032219949
+0.01042857142857143,0.1285714285714286,84.0292370694212,116.83706071479659,45.39679324133557
+0.01042857142857143,0.15714285714285714,81.65990527111138,108.79838450942486,36.77628590618217
+0.01042857142857143,0.18571428571428572,3276.4295065795613,23717.284036713078,44247.888784895615
+0.01042857142857143,0.2142857142857143,40.961189980161784,59.02813345377179,25.99016515755499
+0.01042857142857143,0.24285714285714288,33.71890883763156,56.358452994695234,25.244114526650954
+0.01042857142857143,0.27142857142857146,27.301697190937894,44.855624825094225,28.470895874403766
+0.01042857142857143,0.30000000000000004,27.000597259967265,63.129038127872285,29.16173991455276
+0.01042857142857143,0.3285714285714286,1086.0074516949521,31324.121519440185,43893.43861498062
+0.01042857142857143,0.3571428571428572,922.1475527359905,32182.933795560974,43840.669609937126
+0.01042857142857143,0.3857142857142858,791.4237954987841,33019.874367945464,43894.38696090198
+0.01042857142857143,0.41428571428571437,13.70246553193077,60.04620585381929,51.99923214096926
+0.01042857142857143,0.44285714285714284,11.809360933700654,55.449874612098164,53.03359935572539
+0.01042857142857143,0.4714285714285714,10.017007108164746,52.7109065864017,52.83028084402459
+0.01042857142857143,0.5,9.468421760436826,49.59638397771166,52.131273608373064
+0.011071428571428572,0.1,101.08451135254141,200.57877320414661,60.919470650058145
+0.011071428571428572,0.1285714285714286,6035.29598485084,17879.249067729677,44374.02076516936
+0.011071428571428572,0.15714285714285714,80.98564679324126,103.54650796636847,27.994094237598016
+0.011071428571428572,0.18571428571428572,53.78256571787491,110.90381768459142,39.71568079489555
+0.011071428571428572,0.2142857142857143,42.201270452298225,66.71990862929951,11.767835943184433
+0.011071428571428572,0.24285714285714288,1988.4221434412725,27696.287216497418,44310.98265488088
+0.011071428571428572,0.27142857142857146,1602.6388376937953,29040.212904444004,44071.232332183885
+0.011071428571428572,0.30000000000000004,31.123618307721966,51.62131284942247,23.99426054564337
+0.011071428571428572,0.3285714285714286,25.33150034825656,55.36954397049762,22.672022733067575
+0.011071428571428572,0.3571428571428572,20.440582832196313,32.67954544747857,12.634894357000269
+0.011071428571428572,0.3857142857142858,16.76340439425127,52.826075770673015,42.911123935796425
+0.011071428571428572,0.41428571428571437,14.766815256124039,52.46091342715526,29.4315095055379
+0.011071428571428572,0.44285714285714284,12.417303297243183,51.20658459835461,30.068683947861025
+0.011071428571428572,0.4714285714285714,11.22158187760025,48.06085501644891,26.067020167785024
+0.011071428571428572,0.5,9.763841938172028,46.51212747433162,25.635164504573975
+0.011714285714285714,0.1,103.58644840517158,117.72542352037621,23.64242042959932
+0.011714285714285714,0.1285714285714286,71.07716531613612,58.252331390973985,25.536903004334555
+0.011714285714285714,0.15714285714285714,60.75052300669771,101.91805167567358,43.86650659821767
+0.011714285714285714,0.18571428571428572,55.10421320451983,107.15693700598892,33.0623167144483
+0.011714285714285714,0.2142857142857143,40.49257869975931,58.25629397516167,14.2323565151958
+0.011714285714285714,0.24285714285714288,32.899723633559496,55.48684523106201,15.446998215185227
+0.011714285714285714,0.27142857142857146,1601.5038622894133,29183.681211559637,44244.40374475284
+0.011714285714285714,0.30000000000000004,1328.1710636127884,30348.479186618864,44162.968969020716
+0.011714285714285714,0.3285714285714286,25.94353480388803,39.46149370961619,22.89294836474897
+0.011714285714285714,0.3571428571428572,1762.253916953253,61357.414979679845,83761.08410114054
+0.011714285714285714,0.3857142857142858,807.6465599560946,33349.74200539799,44382.61506736587
+0.011714285714285714,0.41428571428571437,1851.7358967139505,91329.70130128233,119048.82935858607
+0.011714285714285714,0.44285714285714284,1622.2055210322076,92987.17673887288,119036.47021007331
+0.011714285714285714,0.4714285714285714,1428.2498133718077,94485.61678178309,119025.25691810061
+0.011714285714285714,0.5,1268.6139230943834,95821.21739135639,119030.21516619921
+0.012357142857142856,0.1,92.10516257672525,118.36868116491821,21.049129964987777
+0.012357142857142856,0.1285714285714286,90.50575548348581,93.79079823819524,21.68826132922059
+0.012357142857142856,0.15714285714285714,84.47960087312892,108.74560560879584,15.024115070801798
+0.012357142857142856,0.18571428571428572,3330.434241251609,23708.402380877604,44481.80953171933
+0.012357142857142856,0.2142857142857143,53.56883867326697,93.57591586806049,78.79966163145752
+0.012357142857142856,0.24285714285714288,45.90330663366522,58.854202088295516,30.105492254401405
+0.012357142857142856,0.27142857142857146,1618.1745226086898,29209.020989592733,44379.724414198296
+0.012357142857142856,0.30000000000000004,1327.5652533877278,30488.405381978355,44324.78977274706
+0.012357142857142856,0.3285714285714286,24.919446769609614,37.50249903607558,20.03446513081386
+0.012357142857142856,0.3571428571428572,1761.6423402217647,61623.40433658684,84073.7717136554
+0.012357142857142856,0.3857142857142858,806.2147034377895,33495.839224631694,44541.836290990104
+0.012357142857142856,0.41428571428571437,1856.0568488224574,91678.91518330111,119476.13327732726
+0.012357142857142856,0.44285714285714284,1146.6508404798476,65846.70390972382,84305.9140707303
+0.012357142857142856,0.4714285714285714,1011.5965115111223,66903.42569480289,84302.48317639505
+0.012357142857142856,0.5,899.7184366235282,67839.67566302448,84300.57121527541
+0.013,0.1,45.74707276385099,68.56810162872132,18.906123267268246
+0.013,0.1285714285714286,51.32395327143497,69.01042547931907,25.886094162971624
+0.013,0.15714285714285714,32.3709401527354,50.76620132959368,24.422206624958804
+0.013,0.18571428571428572,3274.6911011747443,23819.819780893773,44603.92793420128
+0.013,0.2142857142857143,2502.3330609884265,26072.74632769697,44667.87972811115
+0.013,0.24285714285714288,18.250340731711866,36.386551451794546,22.635419307093862
+0.013,0.27142857142857146,21.53421028165247,45.86399406720121,37.66075539020279
+0.013,0.30000000000000004,18.156252510867468,39.70840136255386,32.17822294326528
+0.013,0.3285714285714286,15.242105008675319,42.84193437851765,26.819175549281415
+0.013,0.3571428571428572,13.655625338150898,18.47488216802138,13.572386661152601
+0.013,0.3857142857142858,1510.6871155030128,63546.2630894553,84573.63864545306
+0.013,0.41428571428571437,1309.2350839080605,64897.81826642868,84576.67312795008
+0.013,0.44285714285714284,1147.0186618242424,66090.0353171933,84586.77538236702
+0.013,0.4714285714285714,1012.2689640456214,67126.29358727558,84561.48273854019
+0.013,0.5,898.9148314376152,68072.94329778731,84557.14998008407
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-avg.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-avg.csv
new file mode 100644
index 0000000000..dc0bd88c56
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-avg.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,152.4,797.65,49.95
+0.004,0.1285714285714286,93.45,906.55,0.0
+0.004,0.15714285714285714,59.05,940.95,0.0
+0.004,0.18571428571428572,34.1,915.95,49.95
+0.004,0.2142857142857143,20.75,979.25,0.0
+0.004,0.24285714285714288,12.55,887.55,99.9
+0.004,0.27142857142857146,5.15,795.05,199.8
+0.004,0.30000000000000004,3.35,846.8,149.85
+0.004,0.3285714285714286,2.25,947.75,50.0
+0.004,0.3571428571428572,1.05,948.9,50.05
+0.004,0.3857142857142858,0.6,949.3,50.1
+0.004,0.41428571428571437,0.3,899.6,100.1
+0.004,0.44285714285714284,0.25,949.45,50.3
+0.004,0.4714285714285714,0.05,849.65,150.3
+0.004,0.5,0.05,799.5,200.45
+0.004642857142857143,0.1,155.6,844.4,0.0
+0.004642857142857143,0.1285714285714286,90.15,909.85,0.0
+0.004642857142857143,0.15714285714285714,50.05,850.05,99.9
+0.004642857142857143,0.18571428571428572,33.5,966.5,0.0
+0.004642857142857143,0.2142857142857143,20.8,979.2,0.0
+0.004642857142857143,0.24285714285714288,10.5,939.55,49.95
+0.004642857142857143,0.27142857142857146,6.8,993.2,0.0
+0.004642857142857143,0.30000000000000004,4.0,946.05,49.95
+0.004642857142857143,0.3285714285714286,2.7,947.35,49.95
+0.004642857142857143,0.3571428571428572,1.4,898.7,99.9
+0.004642857142857143,0.3857142857142858,0.7,799.5,199.8
+0.004642857142857143,0.41428571428571437,0.65,899.45,99.9
+0.004642857142857143,0.44285714285714284,0.3,949.75,49.95
+0.004642857142857143,0.4714285714285714,0.2,949.85,49.95
+0.004642857142857143,0.5,0.15,999.8,0.05
+0.005285714285714286,0.1,153.05,846.95,0.0
+0.005285714285714286,0.1285714285714286,88.4,911.6,0.0
+0.005285714285714286,0.15714285714285714,48.25,851.85,99.9
+0.005285714285714286,0.18571428571428572,33.15,966.85,0.0
+0.005285714285714286,0.2142857142857143,18.7,981.3,0.0
+0.005285714285714286,0.24285714285714288,10.0,890.1,99.9
+0.005285714285714286,0.27142857142857146,5.8,944.25,49.95
+0.005285714285714286,0.30000000000000004,3.45,996.55,0.0
+0.005285714285714286,0.3285714285714286,2.0,948.05,49.95
+0.005285714285714286,0.3571428571428572,1.0,899.1,99.9
+0.005285714285714286,0.3857142857142858,0.75,949.3,49.95
+0.005285714285714286,0.41428571428571437,0.4,999.6,0.0
+0.005285714285714286,0.44285714285714284,0.2,949.85,49.95
+0.005285714285714286,0.4714285714285714,0.15,949.9,49.95
+0.005285714285714286,0.5,0.0,950.05,49.95
+0.005928571428571429,0.1,153.55,846.45,0.0
+0.005928571428571429,0.1285714285714286,90.0,910.0,0.0
+0.005928571428571429,0.15714285714285714,52.8,947.2,0.0
+0.005928571428571429,0.18571428571428572,28.4,921.65,49.95
+0.005928571428571429,0.2142857142857143,15.65,884.45,99.9
+0.005928571428571429,0.24285714285714288,9.45,890.7,99.85
+0.005928571428571429,0.27142857142857146,4.95,895.15,99.9
+0.005928571428571429,0.30000000000000004,2.7,947.35,49.95
+0.005928571428571429,0.3285714285714286,2.05,997.95,0.0
+0.005928571428571429,0.3571428571428572,1.2,898.95,99.85
+0.005928571428571429,0.3857142857142858,0.95,899.15,99.9
+0.005928571428571429,0.41428571428571437,0.65,899.45,99.9
+0.005928571428571429,0.44285714285714284,0.6,899.55,99.85
+0.005928571428571429,0.4714285714285714,0.35,899.8,99.85
+0.005928571428571429,0.5,0.15,800.15,199.7
+0.006571428571428572,0.1,149.75,850.25,0.0
+0.006571428571428572,0.1285714285714286,83.2,866.85,49.95
+0.006571428571428572,0.15714285714285714,49.85,950.15,0.0
+0.006571428571428572,0.18571428571428572,31.45,968.55,0.0
+0.006571428571428572,0.2142857142857143,18.2,981.8,0.0
+0.006571428571428572,0.24285714285714288,10.25,989.75,0.0
+0.006571428571428572,0.27142857142857146,6.0,994.0,0.0
+0.006571428571428572,0.30000000000000004,3.5,996.5,0.0
+0.006571428571428572,0.3285714285714286,1.9,898.2,99.9
+0.006571428571428572,0.3571428571428572,1.4,948.65,49.95
+0.006571428571428572,0.3857142857142858,0.95,899.15,99.9
+0.006571428571428572,0.41428571428571437,0.65,899.45,99.9
+0.006571428571428572,0.44285714285714284,0.55,899.6,99.85
+0.006571428571428572,0.4714285714285714,0.1,900.0,99.9
+0.006571428571428572,0.5,0.0,900.1,99.9
+0.007214285714285715,0.1,153.3,846.7,0.0
+0.007214285714285715,0.1285714285714286,87.25,912.75,0.0
+0.007214285714285715,0.15714285714285714,48.0,902.05,49.95
+0.007214285714285715,0.18571428571428572,26.15,923.9,49.95
+0.007214285714285715,0.2142857142857143,16.1,884.0,99.9
+0.007214285714285715,0.24285714285714288,10.35,889.75,99.9
+0.007214285714285715,0.27142857142857146,5.6,944.45,49.95
+0.007214285714285715,0.30000000000000004,4.25,995.75,0.0
+0.007214285714285715,0.3285714285714286,2.05,948.0,49.95
+0.007214285714285715,0.3571428571428572,1.4,998.6,0.0
+0.007214285714285715,0.3857142857142858,0.85,949.2,49.95
+0.007214285714285715,0.41428571428571437,0.4,899.7,99.9
+0.007214285714285715,0.44285714285714284,0.2,899.9,99.9
+0.007214285714285715,0.4714285714285714,0.1,900.0,99.9
+0.007214285714285715,0.5,0.0,900.1,99.9
+0.007857142857142858,0.1,142.35,807.7,49.95
+0.007857142857142858,0.1285714285714286,85.95,914.05,0.0
+0.007857142857142858,0.15714285714285714,49.25,950.75,0.0
+0.007857142857142858,0.18571428571428572,28.05,971.95,0.0
+0.007857142857142858,0.2142857142857143,15.2,884.9,99.9
+0.007857142857142858,0.24285714285714288,9.55,940.5,49.95
+0.007857142857142858,0.27142857142857146,5.05,895.05,99.9
+0.007857142857142858,0.30000000000000004,3.25,996.75,0.0
+0.007857142857142858,0.3285714285714286,1.7,998.3,0.0
+0.007857142857142858,0.3571428571428572,1.15,998.85,0.0
+0.007857142857142858,0.3857142857142858,0.9,999.1,0.0
+0.007857142857142858,0.41428571428571437,0.45,949.6,49.95
+0.007857142857142858,0.44285714285714284,0.25,999.75,0.0
+0.007857142857142858,0.4714285714285714,0.2,999.8,0.0
+0.007857142857142858,0.5,0.1,999.9,0.0
+0.0085,0.1,146.05,853.95,0.0
+0.0085,0.1285714285714286,87.0,913.0,0.0
+0.0085,0.15714285714285714,48.6,951.4,0.0
+0.0085,0.18571428571428572,26.85,973.15,0.0
+0.0085,0.2142857142857143,16.05,934.0,49.95
+0.0085,0.24285714285714288,9.3,940.75,49.95
+0.0085,0.27142857142857146,5.5,994.5,0.0
+0.0085,0.30000000000000004,3.35,996.65,0.0
+0.0085,0.3285714285714286,1.8,948.25,49.95
+0.0085,0.3571428571428572,1.3,998.7,0.0
+0.0085,0.3857142857142858,0.5,999.5,0.0
+0.0085,0.41428571428571437,0.2,949.85,49.95
+0.0085,0.44285714285714284,0.05,950.0,49.95
+0.0085,0.4714285714285714,0.05,950.0,49.95
+0.0085,0.5,0.0,950.05,49.95
+0.009142857142857144,0.1,141.85,858.15,0.0
+0.009142857142857144,0.1285714285714286,84.4,915.6,0.0
+0.009142857142857144,0.15714285714285714,49.3,950.7,0.0
+0.009142857142857144,0.18571428571428572,28.75,971.25,0.0
+0.009142857142857144,0.2142857142857143,16.35,983.65,0.0
+0.009142857142857144,0.24285714285714288,10.6,989.4,0.0
+0.009142857142857144,0.27142857142857146,5.5,994.5,0.0
+0.009142857142857144,0.30000000000000004,3.35,996.65,0.0
+0.009142857142857144,0.3285714285714286,1.75,998.25,0.0
+0.009142857142857144,0.3571428571428572,1.3,998.7,0.0
+0.009142857142857144,0.3857142857142858,0.7,999.3,0.0
+0.009142857142857144,0.41428571428571437,0.35,999.65,0.0
+0.009142857142857144,0.44285714285714284,0.2,999.8,0.0
+0.009142857142857144,0.4714285714285714,0.15,949.9,49.95
+0.009142857142857144,0.5,0.1,949.95,49.95
+0.009785714285714286,0.1,131.7,768.4,99.9
+0.009785714285714286,0.1285714285714286,85.5,914.5,0.0
+0.009785714285714286,0.15714285714285714,46.6,903.45,49.95
+0.009785714285714286,0.18571428571428572,29.65,970.35,0.0
+0.009785714285714286,0.2142857142857143,16.8,983.2,0.0
+0.009785714285714286,0.24285714285714288,9.5,990.5,0.0
+0.009785714285714286,0.27142857142857146,6.05,944.0,49.95
+0.009785714285714286,0.30000000000000004,2.9,947.15,49.95
+0.009785714285714286,0.3285714285714286,1.7,948.35,49.95
+0.009785714285714286,0.3571428571428572,1.1,948.95,49.95
+0.009785714285714286,0.3857142857142858,0.7,999.3,0.0
+0.009785714285714286,0.41428571428571437,0.35,999.65,0.0
+0.009785714285714286,0.44285714285714284,0.2,999.8,0.0
+0.009785714285714286,0.4714285714285714,0.15,999.85,0.0
+0.009785714285714286,0.5,0.05,999.95,0.0
+0.01042857142857143,0.1,144.1,855.9,0.0
+0.01042857142857143,0.1285714285714286,83.55,916.45,0.0
+0.01042857142857143,0.15714285714285714,47.65,952.35,0.0
+0.01042857142857143,0.18571428571428572,25.5,924.55,49.95
+0.01042857142857143,0.2142857142857143,17.0,983.0,0.0
+0.01042857142857143,0.24285714285714288,8.9,991.1,0.0
+0.01042857142857143,0.27142857142857146,5.0,995.0,0.0
+0.01042857142857143,0.30000000000000004,2.6,997.4,0.0
+0.01042857142857143,0.3285714285714286,1.6,948.45,49.95
+0.01042857142857143,0.3571428571428572,0.8,949.25,49.95
+0.01042857142857143,0.3857142857142858,0.6,949.45,49.95
+0.01042857142857143,0.41428571428571437,0.3,999.7,0.0
+0.01042857142857143,0.44285714285714284,0.15,999.85,0.0
+0.01042857142857143,0.4714285714285714,0.05,999.95,0.0
+0.01042857142857143,0.5,0.05,999.95,0.0
+0.011071428571428572,0.1,143.65,856.35,0.0
+0.011071428571428572,0.1285714285714286,78.45,871.6,49.95
+0.011071428571428572,0.15714285714285714,47.65,952.35,0.0
+0.011071428571428572,0.18571428571428572,26.0,974.0,0.0
+0.011071428571428572,0.2142857142857143,15.7,984.3,0.0
+0.011071428571428572,0.24285714285714288,7.85,942.2,49.95
+0.011071428571428572,0.27142857142857146,4.25,945.8,49.95
+0.011071428571428572,0.30000000000000004,2.55,997.45,0.0
+0.011071428571428572,0.3285714285714286,1.75,998.25,0.0
+0.011071428571428572,0.3571428571428572,1.1,998.9,0.0
+0.011071428571428572,0.3857142857142858,0.6,999.4,0.0
+0.011071428571428572,0.41428571428571437,0.45,999.55,0.0
+0.011071428571428572,0.44285714285714284,0.35,999.65,0.0
+0.011071428571428572,0.4714285714285714,0.15,999.85,0.0
+0.011071428571428572,0.5,0.15,999.85,0.0
+0.011714285714285714,0.1,139.5,860.5,0.0
+0.011714285714285714,0.1285714285714286,82.8,917.2,0.0
+0.011714285714285714,0.15714285714285714,47.6,952.4,0.0
+0.011714285714285714,0.18571428571428572,25.95,974.05,0.0
+0.011714285714285714,0.2142857142857143,15.7,984.3,0.0
+0.011714285714285714,0.24285714285714288,8.15,991.85,0.0
+0.011714285714285714,0.27142857142857146,4.25,945.8,49.95
+0.011714285714285714,0.30000000000000004,3.05,947.0,49.95
+0.011714285714285714,0.3285714285714286,1.75,998.25,0.0
+0.011714285714285714,0.3571428571428572,1.1,899.0,99.9
+0.011714285714285714,0.3857142857142858,0.7,949.35,49.95
+0.011714285714285714,0.41428571428571437,0.2,849.95,149.85
+0.011714285714285714,0.44285714285714284,0.05,850.1,149.85
+0.011714285714285714,0.4714285714285714,0.05,850.1,149.85
+0.011714285714285714,0.5,0.0,850.15,149.85
+0.012357142857142856,0.1,144.65,855.35,0.0
+0.012357142857142856,0.1285714285714286,85.15,914.85,0.0
+0.012357142857142856,0.15714285714285714,48.25,951.75,0.0
+0.012357142857142856,0.18571428571428572,25.7,924.35,49.95
+0.012357142857142856,0.2142857142857143,16.55,983.45,0.0
+0.012357142857142856,0.24285714285714288,8.2,991.8,0.0
+0.012357142857142856,0.27142857142857146,5.05,945.0,49.95
+0.012357142857142856,0.30000000000000004,3.05,947.0,49.95
+0.012357142857142856,0.3285714285714286,1.7,998.3,0.0
+0.012357142857142856,0.3571428571428572,1.1,899.0,99.9
+0.012357142857142856,0.3857142857142858,0.7,949.35,49.95
+0.012357142857142856,0.41428571428571437,0.15,850.0,149.85
+0.012357142857142856,0.44285714285714284,0.25,899.85,99.9
+0.012357142857142856,0.4714285714285714,0.15,899.95,99.9
+0.012357142857142856,0.5,0.05,900.05,99.9
+0.013,0.1,140.25,859.75,0.0
+0.013,0.1285714285714286,79.1,920.9,0.0
+0.013,0.15714285714285714,48.25,951.75,0.0
+0.013,0.18571428571428572,24.9,925.15,49.95
+0.013,0.2142857142857143,13.85,936.2,49.95
+0.013,0.24285714285714288,9.6,990.4,0.0
+0.013,0.27142857142857146,4.7,995.3,0.0
+0.013,0.30000000000000004,3.3,996.7,0.0
+0.013,0.3285714285714286,1.95,998.05,0.0
+0.013,0.3571428571428572,1.15,998.85,0.0
+0.013,0.3857142857142858,0.4,899.7,99.9
+0.013,0.41428571428571437,0.35,899.75,99.9
+0.013,0.44285714285714284,0.25,899.85,99.9
+0.013,0.4714285714285714,0.15,899.95,99.9
+0.013,0.5,0.05,900.05,99.9
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-max.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-max.csv
new file mode 100644
index 0000000000..947dd86417
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-max.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,177.0,868.0,999.0
+0.004,0.1285714285714286,119.0,926.0,0.0
+0.004,0.15714285714285714,74.0,949.0,0.0
+0.004,0.18571428571428572,51.0,974.0,999.0
+0.004,0.2142857142857143,31.0,986.0,0.0
+0.004,0.24285714285714288,21.0,989.0,999.0
+0.004,0.27142857142857146,13.0,998.0,999.0
+0.004,0.30000000000000004,8.0,998.0,999.0
+0.004,0.3285714285714286,4.0,1000.0,999.0
+0.004,0.3571428571428572,2.0,1000.0,999.0
+0.004,0.3857142857142858,3.0,1000.0,999.0
+0.004,0.41428571428571437,2.0,1000.0,999.0
+0.004,0.44285714285714284,1.0,1000.0,999.0
+0.004,0.4714285714285714,1.0,1000.0,999.0
+0.004,0.5,1.0,1000.0,999.0
+0.004642857142857143,0.1,171.0,871.0,0.0
+0.004642857142857143,0.1285714285714286,113.0,929.0,0.0
+0.004642857142857143,0.15714285714285714,71.0,957.0,999.0
+0.004642857142857143,0.18571428571428572,45.0,978.0,0.0
+0.004642857142857143,0.2142857142857143,28.0,986.0,0.0
+0.004642857142857143,0.24285714285714288,20.0,996.0,999.0
+0.004642857142857143,0.27142857142857146,13.0,997.0,0.0
+0.004642857142857143,0.30000000000000004,8.0,999.0,999.0
+0.004642857142857143,0.3285714285714286,6.0,1000.0,999.0
+0.004642857142857143,0.3571428571428572,4.0,1000.0,999.0
+0.004642857142857143,0.3857142857142858,2.0,1000.0,999.0
+0.004642857142857143,0.41428571428571437,2.0,1000.0,999.0
+0.004642857142857143,0.44285714285714284,2.0,1000.0,999.0
+0.004642857142857143,0.4714285714285714,2.0,1000.0,999.0
+0.004642857142857143,0.5,1.0,1000.0,1.0
+0.005285714285714286,0.1,175.0,866.0,0.0
+0.005285714285714286,0.1285714285714286,100.0,929.0,0.0
+0.005285714285714286,0.15714285714285714,75.0,957.0,999.0
+0.005285714285714286,0.18571428571428572,44.0,978.0,0.0
+0.005285714285714286,0.2142857142857143,26.0,988.0,0.0
+0.005285714285714286,0.24285714285714288,17.0,994.0,999.0
+0.005285714285714286,0.27142857142857146,12.0,998.0,999.0
+0.005285714285714286,0.30000000000000004,9.0,1000.0,0.0
+0.005285714285714286,0.3285714285714286,6.0,1000.0,999.0
+0.005285714285714286,0.3571428571428572,4.0,1000.0,999.0
+0.005285714285714286,0.3857142857142858,2.0,1000.0,999.0
+0.005285714285714286,0.41428571428571437,2.0,1000.0,0.0
+0.005285714285714286,0.44285714285714284,1.0,1000.0,999.0
+0.005285714285714286,0.4714285714285714,1.0,1000.0,999.0
+0.005285714285714286,0.5,0.0,1000.0,999.0
+0.005928571428571429,0.1,178.0,869.0,0.0
+0.005928571428571429,0.1285714285714286,101.0,929.0,0.0
+0.005928571428571429,0.15714285714285714,62.0,965.0,0.0
+0.005928571428571429,0.18571428571428572,36.0,979.0,999.0
+0.005928571428571429,0.2142857142857143,29.0,994.0,999.0
+0.005928571428571429,0.24285714285714288,15.0,994.0,999.0
+0.005928571428571429,0.27142857142857146,10.0,998.0,999.0
+0.005928571428571429,0.30000000000000004,8.0,1000.0,999.0
+0.005928571428571429,0.3285714285714286,5.0,1000.0,0.0
+0.005928571428571429,0.3571428571428572,2.0,1000.0,999.0
+0.005928571428571429,0.3857142857142858,3.0,1000.0,999.0
+0.005928571428571429,0.41428571428571437,3.0,1000.0,999.0
+0.005928571428571429,0.44285714285714284,2.0,1000.0,999.0
+0.005928571428571429,0.4714285714285714,2.0,1000.0,999.0
+0.005928571428571429,0.5,2.0,1000.0,999.0
+0.006571428571428572,0.1,166.0,866.0,0.0
+0.006571428571428572,0.1285714285714286,103.0,927.0,999.0
+0.006571428571428572,0.15714285714285714,64.0,967.0,0.0
+0.006571428571428572,0.18571428571428572,39.0,978.0,0.0
+0.006571428571428572,0.2142857142857143,28.0,989.0,0.0
+0.006571428571428572,0.24285714285714288,14.0,995.0,0.0
+0.006571428571428572,0.27142857142857146,10.0,998.0,0.0
+0.006571428571428572,0.30000000000000004,6.0,1000.0,0.0
+0.006571428571428572,0.3285714285714286,4.0,1000.0,999.0
+0.006571428571428572,0.3571428571428572,3.0,1000.0,999.0
+0.006571428571428572,0.3857142857142858,3.0,1000.0,999.0
+0.006571428571428572,0.41428571428571437,3.0,1000.0,999.0
+0.006571428571428572,0.44285714285714284,2.0,1000.0,999.0
+0.006571428571428572,0.4714285714285714,1.0,1000.0,999.0
+0.006571428571428572,0.5,0.0,1000.0,999.0
+0.007214285714285715,0.1,181.0,862.0,0.0
+0.007214285714285715,0.1285714285714286,108.0,931.0,0.0
+0.007214285714285715,0.15714285714285714,60.0,958.0,999.0
+0.007214285714285715,0.18571428571428572,43.0,982.0,999.0
+0.007214285714285715,0.2142857142857143,29.0,987.0,999.0
+0.007214285714285715,0.24285714285714288,17.0,996.0,999.0
+0.007214285714285715,0.27142857142857146,10.0,998.0,999.0
+0.007214285714285715,0.30000000000000004,8.0,999.0,0.0
+0.007214285714285715,0.3285714285714286,5.0,1000.0,999.0
+0.007214285714285715,0.3571428571428572,3.0,1000.0,0.0
+0.007214285714285715,0.3857142857142858,4.0,1000.0,999.0
+0.007214285714285715,0.41428571428571437,1.0,1000.0,999.0
+0.007214285714285715,0.44285714285714284,1.0,1000.0,999.0
+0.007214285714285715,0.4714285714285714,1.0,1000.0,999.0
+0.007214285714285715,0.5,0.0,1000.0,999.0
+0.007857142857142858,0.1,170.0,870.0,999.0
+0.007857142857142858,0.1285714285714286,107.0,931.0,0.0
+0.007857142857142858,0.15714285714285714,61.0,965.0,0.0
+0.007857142857142858,0.18571428571428572,38.0,981.0,0.0
+0.007857142857142858,0.2142857142857143,23.0,988.0,999.0
+0.007857142857142858,0.24285714285714288,16.0,995.0,999.0
+0.007857142857142858,0.27142857142857146,12.0,999.0,999.0
+0.007857142857142858,0.30000000000000004,7.0,1000.0,0.0
+0.007857142857142858,0.3285714285714286,5.0,1000.0,0.0
+0.007857142857142858,0.3571428571428572,4.0,1000.0,0.0
+0.007857142857142858,0.3857142857142858,5.0,1000.0,0.0
+0.007857142857142858,0.41428571428571437,2.0,1000.0,999.0
+0.007857142857142858,0.44285714285714284,2.0,1000.0,0.0
+0.007857142857142858,0.4714285714285714,2.0,1000.0,0.0
+0.007857142857142858,0.5,1.0,1000.0,0.0
+0.0085,0.1,160.0,867.0,0.0
+0.0085,0.1285714285714286,104.0,931.0,0.0
+0.0085,0.15714285714285714,62.0,969.0,0.0
+0.0085,0.18571428571428572,35.0,982.0,0.0
+0.0085,0.2142857142857143,25.0,989.0,999.0
+0.0085,0.24285714285714288,16.0,996.0,999.0
+0.0085,0.27142857142857146,9.0,999.0,0.0
+0.0085,0.30000000000000004,7.0,1000.0,0.0
+0.0085,0.3285714285714286,4.0,1000.0,999.0
+0.0085,0.3571428571428572,3.0,1000.0,0.0
+0.0085,0.3857142857142858,2.0,1000.0,0.0
+0.0085,0.41428571428571437,1.0,1000.0,999.0
+0.0085,0.44285714285714284,1.0,1000.0,999.0
+0.0085,0.4714285714285714,1.0,1000.0,999.0
+0.0085,0.5,0.0,1000.0,999.0
+0.009142857142857144,0.1,161.0,889.0,0.0
+0.009142857142857144,0.1285714285714286,105.0,933.0,0.0
+0.009142857142857144,0.15714285714285714,63.0,965.0,0.0
+0.009142857142857144,0.18571428571428572,35.0,976.0,0.0
+0.009142857142857144,0.2142857142857143,23.0,993.0,0.0
+0.009142857142857144,0.24285714285714288,20.0,994.0,0.0
+0.009142857142857144,0.27142857142857146,9.0,999.0,0.0
+0.009142857142857144,0.30000000000000004,8.0,1000.0,0.0
+0.009142857142857144,0.3285714285714286,4.0,1000.0,0.0
+0.009142857142857144,0.3571428571428572,3.0,1000.0,0.0
+0.009142857142857144,0.3857142857142858,2.0,1000.0,0.0
+0.009142857142857144,0.41428571428571437,2.0,1000.0,0.0
+0.009142857142857144,0.44285714285714284,2.0,1000.0,0.0
+0.009142857142857144,0.4714285714285714,1.0,1000.0,999.0
+0.009142857142857144,0.5,1.0,1000.0,999.0
+0.009785714285714286,0.1,167.0,874.0,999.0
+0.009785714285714286,0.1285714285714286,104.0,931.0,0.0
+0.009785714285714286,0.15714285714285714,64.0,964.0,999.0
+0.009785714285714286,0.18571428571428572,39.0,979.0,0.0
+0.009785714285714286,0.2142857142857143,23.0,990.0,0.0
+0.009785714285714286,0.24285714285714288,12.0,996.0,0.0
+0.009785714285714286,0.27142857142857146,10.0,997.0,999.0
+0.009785714285714286,0.30000000000000004,6.0,999.0,999.0
+0.009785714285714286,0.3285714285714286,4.0,1000.0,999.0
+0.009785714285714286,0.3571428571428572,4.0,1000.0,999.0
+0.009785714285714286,0.3857142857142858,2.0,1000.0,0.0
+0.009785714285714286,0.41428571428571437,2.0,1000.0,0.0
+0.009785714285714286,0.44285714285714284,2.0,1000.0,0.0
+0.009785714285714286,0.4714285714285714,1.0,1000.0,0.0
+0.009785714285714286,0.5,1.0,1000.0,0.0
+0.01042857142857143,0.1,160.0,878.0,0.0
+0.01042857142857143,0.1285714285714286,97.0,932.0,0.0
+0.01042857142857143,0.15714285714285714,65.0,966.0,0.0
+0.01042857142857143,0.18571428571428572,36.0,983.0,999.0
+0.01042857142857143,0.2142857142857143,25.0,990.0,0.0
+0.01042857142857143,0.24285714285714288,13.0,996.0,0.0
+0.01042857142857143,0.27142857142857146,8.0,999.0,0.0
+0.01042857142857143,0.30000000000000004,6.0,999.0,0.0
+0.01042857142857143,0.3285714285714286,5.0,1000.0,999.0
+0.01042857142857143,0.3571428571428572,3.0,1000.0,999.0
+0.01042857142857143,0.3857142857142858,3.0,1000.0,999.0
+0.01042857142857143,0.41428571428571437,2.0,1000.0,0.0
+0.01042857142857143,0.44285714285714284,1.0,1000.0,0.0
+0.01042857142857143,0.4714285714285714,1.0,1000.0,0.0
+0.01042857142857143,0.5,1.0,1000.0,0.0
+0.011071428571428572,0.1,159.0,878.0,0.0
+0.011071428571428572,0.1285714285714286,98.0,930.0,999.0
+0.011071428571428572,0.15714285714285714,65.0,966.0,0.0
+0.011071428571428572,0.18571428571428572,41.0,981.0,0.0
+0.011071428571428572,0.2142857142857143,25.0,993.0,0.0
+0.011071428571428572,0.24285714285714288,13.0,996.0,999.0
+0.011071428571428572,0.27142857142857146,7.0,999.0,999.0
+0.011071428571428572,0.30000000000000004,5.0,999.0,0.0
+0.011071428571428572,0.3285714285714286,4.0,1000.0,0.0
+0.011071428571428572,0.3571428571428572,3.0,1000.0,0.0
+0.011071428571428572,0.3857142857142858,2.0,1000.0,0.0
+0.011071428571428572,0.41428571428571437,2.0,1000.0,0.0
+0.011071428571428572,0.44285714285714284,2.0,1000.0,0.0
+0.011071428571428572,0.4714285714285714,1.0,1000.0,0.0
+0.011071428571428572,0.5,1.0,1000.0,0.0
+0.011714285714285714,0.1,156.0,882.0,0.0
+0.011714285714285714,0.1285714285714286,96.0,930.0,0.0
+0.011714285714285714,0.15714285714285714,62.0,963.0,0.0
+0.011714285714285714,0.18571428571428572,41.0,982.0,0.0
+0.011714285714285714,0.2142857142857143,24.0,993.0,0.0
+0.011714285714285714,0.24285714285714288,13.0,996.0,0.0
+0.011714285714285714,0.27142857142857146,7.0,999.0,999.0
+0.011714285714285714,0.30000000000000004,9.0,999.0,999.0
+0.011714285714285714,0.3285714285714286,6.0,1000.0,0.0
+0.011714285714285714,0.3571428571428572,4.0,1000.0,999.0
+0.011714285714285714,0.3857142857142858,2.0,1000.0,999.0
+0.011714285714285714,0.41428571428571437,1.0,1000.0,999.0
+0.011714285714285714,0.44285714285714284,1.0,1000.0,999.0
+0.011714285714285714,0.4714285714285714,1.0,1000.0,999.0
+0.011714285714285714,0.5,0.0,1000.0,999.0
+0.012357142857142856,0.1,165.0,882.0,0.0
+0.012357142857142856,0.1285714285714286,102.0,931.0,0.0
+0.012357142857142856,0.15714285714285714,73.0,965.0,0.0
+0.012357142857142856,0.18571428571428572,38.0,985.0,999.0
+0.012357142857142856,0.2142857142857143,24.0,991.0,0.0
+0.012357142857142856,0.24285714285714288,15.0,996.0,0.0
+0.012357142857142856,0.27142857142857146,10.0,997.0,999.0
+0.012357142857142856,0.30000000000000004,9.0,999.0,999.0
+0.012357142857142856,0.3285714285714286,6.0,1000.0,0.0
+0.012357142857142856,0.3571428571428572,4.0,1000.0,999.0
+0.012357142857142856,0.3857142857142858,2.0,1000.0,999.0
+0.012357142857142856,0.41428571428571437,1.0,1000.0,999.0
+0.012357142857142856,0.44285714285714284,1.0,1000.0,999.0
+0.012357142857142856,0.4714285714285714,1.0,1000.0,999.0
+0.012357142857142856,0.5,1.0,1000.0,999.0
+0.013,0.1,159.0,874.0,0.0
+0.013,0.1285714285714286,94.0,936.0,0.0
+0.013,0.15714285714285714,59.0,965.0,0.0
+0.013,0.18571428571428572,40.0,981.0,999.0
+0.013,0.2142857142857143,20.0,990.0,999.0
+0.013,0.24285714285714288,15.0,997.0,0.0
+0.013,0.27142857142857146,9.0,1000.0,0.0
+0.013,0.30000000000000004,7.0,1000.0,0.0
+0.013,0.3285714285714286,4.0,1000.0,0.0
+0.013,0.3571428571428572,3.0,1000.0,0.0
+0.013,0.3857142857142858,2.0,1000.0,999.0
+0.013,0.41428571428571437,2.0,1000.0,999.0
+0.013,0.44285714285714284,1.0,1000.0,999.0
+0.013,0.4714285714285714,1.0,1000.0,999.0
+0.013,0.5,1.0,1000.0,999.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-min.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-min.csv
new file mode 100644
index 0000000000..495738397e
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-min.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,0.0,1.0,0.0
+0.004,0.1285714285714286,74.0,881.0,0.0
+0.004,0.15714285714285714,51.0,926.0,0.0
+0.004,0.18571428571428572,0.0,1.0,0.0
+0.004,0.2142857142857143,14.0,969.0,0.0
+0.004,0.24285714285714288,0.0,1.0,0.0
+0.004,0.27142857142857146,0.0,1.0,0.0
+0.004,0.30000000000000004,0.0,1.0,0.0
+0.004,0.3285714285714286,0.0,1.0,0.0
+0.004,0.3571428571428572,0.0,1.0,0.0
+0.004,0.3857142857142858,0.0,1.0,0.0
+0.004,0.41428571428571437,0.0,1.0,0.0
+0.004,0.44285714285714284,0.0,1.0,0.0
+0.004,0.4714285714285714,0.0,1.0,0.0
+0.004,0.5,0.0,1.0,0.0
+0.004642857142857143,0.1,129.0,829.0,0.0
+0.004642857142857143,0.1285714285714286,71.0,887.0,0.0
+0.004642857142857143,0.15714285714285714,0.0,1.0,0.0
+0.004642857142857143,0.18571428571428572,22.0,955.0,0.0
+0.004642857142857143,0.2142857142857143,14.0,972.0,0.0
+0.004642857142857143,0.24285714285714288,0.0,1.0,0.0
+0.004642857142857143,0.27142857142857146,3.0,987.0,0.0
+0.004642857142857143,0.30000000000000004,0.0,1.0,0.0
+0.004642857142857143,0.3285714285714286,0.0,1.0,0.0
+0.004642857142857143,0.3571428571428572,0.0,1.0,0.0
+0.004642857142857143,0.3857142857142858,0.0,1.0,0.0
+0.004642857142857143,0.41428571428571437,0.0,1.0,0.0
+0.004642857142857143,0.44285714285714284,0.0,1.0,0.0
+0.004642857142857143,0.4714285714285714,0.0,1.0,0.0
+0.004642857142857143,0.5,0.0,999.0,0.0
+0.005285714285714286,0.1,134.0,825.0,0.0
+0.005285714285714286,0.1285714285714286,71.0,900.0,0.0
+0.005285714285714286,0.15714285714285714,0.0,1.0,0.0
+0.005285714285714286,0.18571428571428572,22.0,956.0,0.0
+0.005285714285714286,0.2142857142857143,12.0,974.0,0.0
+0.005285714285714286,0.24285714285714288,0.0,1.0,0.0
+0.005285714285714286,0.27142857142857146,0.0,1.0,0.0
+0.005285714285714286,0.30000000000000004,0.0,991.0,0.0
+0.005285714285714286,0.3285714285714286,0.0,1.0,0.0
+0.005285714285714286,0.3571428571428572,0.0,1.0,0.0
+0.005285714285714286,0.3857142857142858,0.0,1.0,0.0
+0.005285714285714286,0.41428571428571437,0.0,998.0,0.0
+0.005285714285714286,0.44285714285714284,0.0,1.0,0.0
+0.005285714285714286,0.4714285714285714,0.0,1.0,0.0
+0.005285714285714286,0.5,0.0,1.0,0.0
+0.005928571428571429,0.1,131.0,822.0,0.0
+0.005928571428571429,0.1285714285714286,71.0,899.0,0.0
+0.005928571428571429,0.15714285714285714,35.0,938.0,0.0
+0.005928571428571429,0.18571428571428572,0.0,1.0,0.0
+0.005928571428571429,0.2142857142857143,0.0,1.0,0.0
+0.005928571428571429,0.24285714285714288,0.0,1.0,0.0
+0.005928571428571429,0.27142857142857146,0.0,1.0,0.0
+0.005928571428571429,0.30000000000000004,0.0,1.0,0.0
+0.005928571428571429,0.3285714285714286,0.0,995.0,0.0
+0.005928571428571429,0.3571428571428572,0.0,1.0,0.0
+0.005928571428571429,0.3857142857142858,0.0,1.0,0.0
+0.005928571428571429,0.41428571428571437,0.0,1.0,0.0
+0.005928571428571429,0.44285714285714284,0.0,1.0,0.0
+0.005928571428571429,0.4714285714285714,0.0,1.0,0.0
+0.005928571428571429,0.5,0.0,1.0,0.0
+0.006571428571428572,0.1,134.0,834.0,0.0
+0.006571428571428572,0.1285714285714286,0.0,1.0,0.0
+0.006571428571428572,0.15714285714285714,33.0,936.0,0.0
+0.006571428571428572,0.18571428571428572,22.0,961.0,0.0
+0.006571428571428572,0.2142857142857143,11.0,972.0,0.0
+0.006571428571428572,0.24285714285714288,5.0,986.0,0.0
+0.006571428571428572,0.27142857142857146,2.0,990.0,0.0
+0.006571428571428572,0.30000000000000004,0.0,994.0,0.0
+0.006571428571428572,0.3285714285714286,0.0,1.0,0.0
+0.006571428571428572,0.3571428571428572,0.0,1.0,0.0
+0.006571428571428572,0.3857142857142858,0.0,1.0,0.0
+0.006571428571428572,0.41428571428571437,0.0,1.0,0.0
+0.006571428571428572,0.44285714285714284,0.0,1.0,0.0
+0.006571428571428572,0.4714285714285714,0.0,1.0,0.0
+0.006571428571428572,0.5,0.0,1.0,0.0
+0.007214285714285715,0.1,138.0,819.0,0.0
+0.007214285714285715,0.1285714285714286,69.0,892.0,0.0
+0.007214285714285715,0.15714285714285714,0.0,1.0,0.0
+0.007214285714285715,0.18571428571428572,0.0,1.0,0.0
+0.007214285714285715,0.2142857142857143,0.0,1.0,0.0
+0.007214285714285715,0.24285714285714288,0.0,1.0,0.0
+0.007214285714285715,0.27142857142857146,0.0,1.0,0.0
+0.007214285714285715,0.30000000000000004,1.0,992.0,0.0
+0.007214285714285715,0.3285714285714286,0.0,1.0,0.0
+0.007214285714285715,0.3571428571428572,0.0,997.0,0.0
+0.007214285714285715,0.3857142857142858,0.0,1.0,0.0
+0.007214285714285715,0.41428571428571437,0.0,1.0,0.0
+0.007214285714285715,0.44285714285714284,0.0,1.0,0.0
+0.007214285714285715,0.4714285714285714,0.0,1.0,0.0
+0.007214285714285715,0.5,0.0,1.0,0.0
+0.007857142857142858,0.1,0.0,1.0,0.0
+0.007857142857142858,0.1285714285714286,69.0,893.0,0.0
+0.007857142857142858,0.15714285714285714,35.0,939.0,0.0
+0.007857142857142858,0.18571428571428572,19.0,962.0,0.0
+0.007857142857142858,0.2142857142857143,0.0,1.0,0.0
+0.007857142857142858,0.24285714285714288,0.0,1.0,0.0
+0.007857142857142858,0.27142857142857146,0.0,1.0,0.0
+0.007857142857142858,0.30000000000000004,0.0,993.0,0.0
+0.007857142857142858,0.3285714285714286,0.0,995.0,0.0
+0.007857142857142858,0.3571428571428572,0.0,996.0,0.0
+0.007857142857142858,0.3857142857142858,0.0,995.0,0.0
+0.007857142857142858,0.41428571428571437,0.0,1.0,0.0
+0.007857142857142858,0.44285714285714284,0.0,998.0,0.0
+0.007857142857142858,0.4714285714285714,0.0,998.0,0.0
+0.007857142857142858,0.5,0.0,999.0,0.0
+0.0085,0.1,133.0,840.0,0.0
+0.0085,0.1285714285714286,69.0,896.0,0.0
+0.0085,0.15714285714285714,31.0,938.0,0.0
+0.0085,0.18571428571428572,18.0,965.0,0.0
+0.0085,0.2142857142857143,0.0,1.0,0.0
+0.0085,0.24285714285714288,0.0,1.0,0.0
+0.0085,0.27142857142857146,1.0,991.0,0.0
+0.0085,0.30000000000000004,0.0,993.0,0.0
+0.0085,0.3285714285714286,0.0,1.0,0.0
+0.0085,0.3571428571428572,0.0,997.0,0.0
+0.0085,0.3857142857142858,0.0,998.0,0.0
+0.0085,0.41428571428571437,0.0,1.0,0.0
+0.0085,0.44285714285714284,0.0,1.0,0.0
+0.0085,0.4714285714285714,0.0,1.0,0.0
+0.0085,0.5,0.0,1.0,0.0
+0.009142857142857144,0.1,111.0,839.0,0.0
+0.009142857142857144,0.1285714285714286,67.0,895.0,0.0
+0.009142857142857144,0.15714285714285714,35.0,937.0,0.0
+0.009142857142857144,0.18571428571428572,24.0,965.0,0.0
+0.009142857142857144,0.2142857142857143,7.0,977.0,0.0
+0.009142857142857144,0.24285714285714288,6.0,980.0,0.0
+0.009142857142857144,0.27142857142857146,1.0,991.0,0.0
+0.009142857142857144,0.30000000000000004,0.0,992.0,0.0
+0.009142857142857144,0.3285714285714286,0.0,996.0,0.0
+0.009142857142857144,0.3571428571428572,0.0,997.0,0.0
+0.009142857142857144,0.3857142857142858,0.0,998.0,0.0
+0.009142857142857144,0.41428571428571437,0.0,998.0,0.0
+0.009142857142857144,0.44285714285714284,0.0,998.0,0.0
+0.009142857142857144,0.4714285714285714,0.0,1.0,0.0
+0.009142857142857144,0.5,0.0,1.0,0.0
+0.009785714285714286,0.1,0.0,1.0,0.0
+0.009785714285714286,0.1285714285714286,69.0,896.0,0.0
+0.009785714285714286,0.15714285714285714,0.0,1.0,0.0
+0.009785714285714286,0.18571428571428572,21.0,961.0,0.0
+0.009785714285714286,0.2142857142857143,10.0,977.0,0.0
+0.009785714285714286,0.24285714285714288,4.0,988.0,0.0
+0.009785714285714286,0.27142857142857146,0.0,1.0,0.0
+0.009785714285714286,0.30000000000000004,0.0,1.0,0.0
+0.009785714285714286,0.3285714285714286,0.0,1.0,0.0
+0.009785714285714286,0.3571428571428572,0.0,1.0,0.0
+0.009785714285714286,0.3857142857142858,0.0,998.0,0.0
+0.009785714285714286,0.41428571428571437,0.0,998.0,0.0
+0.009785714285714286,0.44285714285714284,0.0,998.0,0.0
+0.009785714285714286,0.4714285714285714,0.0,999.0,0.0
+0.009785714285714286,0.5,0.0,999.0,0.0
+0.01042857142857143,0.1,122.0,840.0,0.0
+0.01042857142857143,0.1285714285714286,68.0,903.0,0.0
+0.01042857142857143,0.15714285714285714,34.0,935.0,0.0
+0.01042857142857143,0.18571428571428572,0.0,1.0,0.0
+0.01042857142857143,0.2142857142857143,10.0,975.0,0.0
+0.01042857142857143,0.24285714285714288,4.0,987.0,0.0
+0.01042857142857143,0.27142857142857146,1.0,992.0,0.0
+0.01042857142857143,0.30000000000000004,1.0,994.0,0.0
+0.01042857142857143,0.3285714285714286,0.0,1.0,0.0
+0.01042857142857143,0.3571428571428572,0.0,1.0,0.0
+0.01042857142857143,0.3857142857142858,0.0,1.0,0.0
+0.01042857142857143,0.41428571428571437,0.0,998.0,0.0
+0.01042857142857143,0.44285714285714284,0.0,999.0,0.0
+0.01042857142857143,0.4714285714285714,0.0,999.0,0.0
+0.01042857142857143,0.5,0.0,999.0,0.0
+0.011071428571428572,0.1,122.0,841.0,0.0
+0.011071428571428572,0.1285714285714286,0.0,1.0,0.0
+0.011071428571428572,0.15714285714285714,34.0,935.0,0.0
+0.011071428571428572,0.18571428571428572,19.0,959.0,0.0
+0.011071428571428572,0.2142857142857143,7.0,975.0,0.0
+0.011071428571428572,0.24285714285714288,0.0,1.0,0.0
+0.011071428571428572,0.27142857142857146,0.0,1.0,0.0
+0.011071428571428572,0.30000000000000004,1.0,995.0,0.0
+0.011071428571428572,0.3285714285714286,0.0,996.0,0.0
+0.011071428571428572,0.3571428571428572,0.0,997.0,0.0
+0.011071428571428572,0.3857142857142858,0.0,998.0,0.0
+0.011071428571428572,0.41428571428571437,0.0,998.0,0.0
+0.011071428571428572,0.44285714285714284,0.0,998.0,0.0
+0.011071428571428572,0.4714285714285714,0.0,999.0,0.0
+0.011071428571428572,0.5,0.0,999.0,0.0
+0.011714285714285714,0.1,118.0,844.0,0.0
+0.011714285714285714,0.1285714285714286,70.0,904.0,0.0
+0.011714285714285714,0.15714285714285714,37.0,938.0,0.0
+0.011714285714285714,0.18571428571428572,18.0,959.0,0.0
+0.011714285714285714,0.2142857142857143,7.0,976.0,0.0
+0.011714285714285714,0.24285714285714288,4.0,987.0,0.0
+0.011714285714285714,0.27142857142857146,0.0,1.0,0.0
+0.011714285714285714,0.30000000000000004,0.0,1.0,0.0
+0.011714285714285714,0.3285714285714286,0.0,994.0,0.0
+0.011714285714285714,0.3571428571428572,0.0,1.0,0.0
+0.011714285714285714,0.3857142857142858,0.0,1.0,0.0
+0.011714285714285714,0.41428571428571437,0.0,1.0,0.0
+0.011714285714285714,0.44285714285714284,0.0,1.0,0.0
+0.011714285714285714,0.4714285714285714,0.0,1.0,0.0
+0.011714285714285714,0.5,0.0,1.0,0.0
+0.012357142857142856,0.1,118.0,835.0,0.0
+0.012357142857142856,0.1285714285714286,69.0,898.0,0.0
+0.012357142857142856,0.15714285714285714,35.0,927.0,0.0
+0.012357142857142856,0.18571428571428572,0.0,1.0,0.0
+0.012357142857142856,0.2142857142857143,9.0,976.0,0.0
+0.012357142857142856,0.24285714285714288,4.0,985.0,0.0
+0.012357142857142856,0.27142857142857146,0.0,1.0,0.0
+0.012357142857142856,0.30000000000000004,0.0,1.0,0.0
+0.012357142857142856,0.3285714285714286,0.0,994.0,0.0
+0.012357142857142856,0.3571428571428572,0.0,1.0,0.0
+0.012357142857142856,0.3857142857142858,0.0,1.0,0.0
+0.012357142857142856,0.41428571428571437,0.0,1.0,0.0
+0.012357142857142856,0.44285714285714284,0.0,1.0,0.0
+0.012357142857142856,0.4714285714285714,0.0,1.0,0.0
+0.012357142857142856,0.5,0.0,1.0,0.0
+0.013,0.1,126.0,841.0,0.0
+0.013,0.1285714285714286,64.0,906.0,0.0
+0.013,0.15714285714285714,35.0,941.0,0.0
+0.013,0.18571428571428572,0.0,1.0,0.0
+0.013,0.2142857142857143,0.0,1.0,0.0
+0.013,0.24285714285714288,3.0,985.0,0.0
+0.013,0.27142857142857146,0.0,991.0,0.0
+0.013,0.30000000000000004,0.0,993.0,0.0
+0.013,0.3285714285714286,0.0,996.0,0.0
+0.013,0.3571428571428572,0.0,997.0,0.0
+0.013,0.3857142857142858,0.0,1.0,0.0
+0.013,0.41428571428571437,0.0,1.0,0.0
+0.013,0.44285714285714284,0.0,1.0,0.0
+0.013,0.4714285714285714,0.0,1.0,0.0
+0.013,0.5,0.0,1.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-var.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-var.csv
new file mode 100644
index 0000000000..913f227b4b
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/final-var.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,1349.94,33530.22749999999,47405.047499999986
+0.004,0.1285714285714286,123.04750000000001,123.04749999999999,0.0
+0.004,0.15714285714285714,28.747499999999995,28.747500000000002,0.0
+0.004,0.18571428571428572,98.39000000000001,44096.84749999999,47405.047499999986
+0.004,0.2142857142857143,22.7875,22.7875,0.0
+0.004,0.24285714285714288,24.6475,87337.2475,89820.09000000001
+0.004,0.27142857142857146,13.427500000000004,157635.6475,159680.16000000006
+0.004,0.30000000000000004,5.027500000000001,126246.16,127245.12749999999
+0.004,0.3285714285714286,1.7875,47177.1875,47400.1
+0.004,0.3571428571428572,0.7474999999999999,47290.89,47395.147499999985
+0.004,0.3857142857142858,1.0399999999999998,47331.61,47390.19
+0.004,0.41428571428571437,0.30999999999999994,89720.84000000001,89780.29
+0.004,0.44285714285714284,0.1875,47345.5475,47370.409999999996
+0.004,0.4714285714285714,0.0475,127095.72750000001,127110.70999999999
+0.004,0.5,0.04749999999999999,159401.15,159420.94749999998
+0.004642857142857143,0.1,146.54000000000002,146.54,0.0
+0.004642857142857143,0.1285714285714286,67.6275,67.62750000000003,0.0
+0.004642857142857143,0.15714285714285714,319.2475,80139.3475,89820.09000000001
+0.004642857142857143,0.18571428571428572,30.55,30.55,0.0
+0.004642857142857143,0.2142857142857143,13.959999999999999,13.959999999999999,0.0
+0.004642857142857143,0.24285714285714288,28.35,46384.447499999995,47405.047499999986
+0.004642857142857143,0.27142857142857146,5.36,5.36,0.0
+0.004642857142857143,0.30000000000000004,4.2,47009.64750000001,47405.047499999986
+0.004642857142857143,0.3285714285714286,2.9099999999999997,47138.22749999999,47405.0475
+0.004642857142857143,0.3571428571428572,1.3400000000000003,89541.70999999999,89820.09000000001
+0.004642857142857143,0.3857142857142858,0.8100000000000002,159401.25,159680.16000000006
+0.004642857142857143,0.41428571428571437,0.6275,89690.8475,89820.09000000001
+0.004642857142857143,0.44285714285714284,0.41,47375.4875,47405.047499999986
+0.004642857142857143,0.4714285714285714,0.36000000000000004,47385.42749999999,47405.047499999986
+0.004642857142857143,0.5,0.1275,0.16000000000000003,0.04749999999999999
+0.005285714285714286,0.1,119.74750000000002,119.74750000000002,0.0
+0.005285714285714286,0.1285714285714286,64.84,64.84,0.0
+0.005285714285714286,0.15714285714285714,305.1875,80484.9275,89820.09000000001
+0.005285714285714286,0.18571428571428572,28.127499999999998,28.127500000000005,0.0
+0.005285714285714286,0.2142857142857143,11.71,11.71,0.0
+0.005285714285714286,0.24285714285714288,21.1,87843.19,89820.09000000001
+0.005285714285714286,0.27142857142857146,9.459999999999999,46835.0875,47405.047499999986
+0.005285714285714286,0.30000000000000004,5.1475,5.147500000000001,0.0
+0.005285714285714286,0.3285714285714286,3.0,47208.247500000005,47405.0475
+0.005285714285714286,0.3571428571428572,1.2,89621.49000000002,89820.09000000001
+0.005285714285714286,0.3857142857142858,0.5875,47330.71000000001,47405.047499999986
+0.005285714285714286,0.41428571428571437,0.4400000000000001,0.4400000000000002,0.0
+0.005285714285714286,0.44285714285714284,0.16000000000000006,47385.22749999999,47405.0475
+0.005285714285714286,0.4714285714285714,0.1275,47390.19,47405.0475
+0.005285714285714286,0.5,0.0,47405.0475,47405.0475
+0.005928571428571429,0.1,173.4475,173.44749999999996,0.0
+0.005928571428571429,0.1285714285714286,59.6,59.6,0.0
+0.005928571428571429,0.15714285714285714,43.260000000000005,43.25999999999999,0.0
+0.005928571428571429,0.18571428571428572,58.24000000000001,44626.12750000001,47405.047499999986
+0.005928571428571429,0.2142857142857143,52.427499999999995,86745.6475,89820.09000000001
+0.005928571428571429,0.24285714285714288,16.1475,87859.21000000002,89730.22749999998
+0.005928571428571429,0.27142857142857146,7.7475000000000005,88838.82749999998,89820.09000000001
+0.005928571428571429,0.30000000000000004,4.01,47139.32750000001,47405.047499999986
+0.005928571428571429,0.3285714285714286,2.3475,2.3475000000000006,0.0
+0.005928571428571429,0.3571428571428572,0.76,89491.3475,89730.2275
+0.005928571428571429,0.3857142857142858,0.5474999999999999,89630.82749999998,89820.09000000001
+0.005928571428571429,0.41428571428571437,0.7275,89690.94749999998,89820.09000000001
+0.005928571428571429,0.44285714285714284,0.5399999999999998,89610.9475,89730.22749999998
+0.005928571428571429,0.4714285714285714,0.4274999999999999,89660.76,89730.22749999998
+0.005928571428571429,0.5,0.22749999999999998,159460.72749999998,159520.40999999997
+0.006571428571428572,0.1,97.2875,97.2875,0.0
+0.006571428571428572,0.1285714285714286,428.16,39521.527500000004,47405.04749999999
+0.006571428571428572,0.15714285714285714,54.827499999999986,54.8275,0.0
+0.006571428571428572,0.18571428571428572,25.0475,25.047500000000003,0.0
+0.006571428571428572,0.2142857142857143,16.76,16.76,0.0
+0.006571428571428572,0.24285714285714288,5.6875,5.6875,0.0
+0.006571428571428572,0.27142857142857146,5.4,5.4,0.0
+0.006571428571428572,0.30000000000000004,3.55,3.55,0.0
+0.006571428571428572,0.3285714285714286,1.49,89441.95999999999,89820.09000000001
+0.006571428571428572,0.3571428571428572,0.74,47265.9275,47405.047499999986
+0.006571428571428572,0.3857142857142858,0.5474999999999999,89630.82749999998,89820.09000000001
+0.006571428571428572,0.41428571428571437,0.7275,89690.94749999998,89820.09000000001
+0.006571428571428572,0.44285714285714284,0.5475000000000001,89620.94,89730.22749999998
+0.006571428571428572,0.4714285714285714,0.09000000000000001,89800.2,89820.09000000001
+0.006571428571428572,0.5,0.0,89820.09000000001,89820.09000000001
+0.007214285714285715,0.1,149.31,149.31000000000003,0.0
+0.007214285714285715,0.1285714285714286,105.1875,105.1875,0.0
+0.007214285714285715,0.15714285714285714,144.5,42754.3475,47405.04749999999
+0.007214285714285715,0.18571428571428572,59.427499999999995,44852.08999999999,47405.047499999986
+0.007214285714285715,0.2142857142857143,46.69,86650.0,89820.09000000001
+0.007214285714285715,0.24285714285714288,19.527500000000003,87771.6875,89820.09000000001
+0.007214285714285715,0.27142857142857146,6.4399999999999995,46852.04749999999,47405.047499999986
+0.007214285714285715,0.30000000000000004,2.4875,2.4875,0.0
+0.007214285714285715,0.3285714285714286,1.7475,47202.0,47405.047499999986
+0.007214285714285715,0.3571428571428572,0.9399999999999998,0.9400000000000001,0.0
+0.007214285714285715,0.3857142857142858,1.0274999999999999,47321.16,47405.047499999986
+0.007214285714285715,0.41428571428571437,0.24000000000000005,89740.41,89820.09000000001
+0.007214285714285715,0.44285714285714284,0.16000000000000006,89780.29000000001,89820.09000000001
+0.007214285714285715,0.4714285714285714,0.09000000000000001,89800.2,89820.09000000001
+0.007214285714285715,0.5,0.0,89820.09000000001,89820.09000000001
+0.007857142857142858,0.1,1173.0275,34357.310000000005,47405.047499999986
+0.007857142857142858,0.1285714285714286,84.74750000000002,84.74750000000002,0.0
+0.007857142857142858,0.15714285714285714,46.9875,46.9875,0.0
+0.007857142857142858,0.18571428571428572,25.647499999999997,25.6475,0.0
+0.007857142857142858,0.2142857142857143,34.46,86817.59,89820.09000000001
+0.007857142857142858,0.24285714285714288,14.547500000000003,46465.55,47405.04749999999
+0.007857142857142858,0.27142857142857146,9.947500000000002,88821.04750000002,89820.09000000001
+0.007857142857142858,0.30000000000000004,3.8875,3.8875,0.0
+0.007857142857142858,0.3285714285714286,1.31,1.31,0.0
+0.007857142857142858,0.3571428571428572,1.1275000000000002,1.1275000000000002,0.0
+0.007857142857142858,0.3857142857142858,1.2899999999999998,1.2900000000000003,0.0
+0.007857142857142858,0.41428571428571437,0.44750000000000023,47360.54,47405.04749999999
+0.007857142857142858,0.44285714285714284,0.2875,0.2875,0.0
+0.007857142857142858,0.4714285714285714,0.26000000000000006,0.25999999999999995,0.0
+0.007857142857142858,0.5,0.09000000000000001,0.09,0.0
+0.0085,0.1,54.347500000000004,54.34750000000001,0.0
+0.0085,0.1285714285714286,54.7,54.7,0.0
+0.0085,0.15714285714285714,57.74000000000001,57.74000000000001,0.0
+0.0085,0.18571428571428572,19.627499999999998,19.627499999999998,0.0
+0.0085,0.2142857142857143,25.947499999999998,45827.6,47405.047499999986
+0.0085,0.24285714285714288,16.21,46492.1875,47405.047499999986
+0.0085,0.27142857142857146,4.25,4.25,0.0
+0.0085,0.30000000000000004,3.9274999999999998,3.9275000000000007,0.0
+0.0085,0.3285714285714286,1.36,47226.5875,47405.047499999986
+0.0085,0.3571428571428572,1.0100000000000002,1.01,0.0
+0.0085,0.3857142857142858,0.35,0.35,0.0
+0.0085,0.41428571428571437,0.16000000000000003,47385.22749999999,47405.0475
+0.0085,0.44285714285714284,0.04749999999999999,47400.1,47405.0475
+0.0085,0.4714285714285714,0.04749999999999999,47400.1,47405.0475
+0.0085,0.5,0.0,47405.0475,47405.0475
+0.009142857142857144,0.1,191.42749999999998,191.4275,0.0
+0.009142857142857144,0.1285714285714286,103.34,103.34,0.0
+0.009142857142857144,0.15714285714285714,50.010000000000005,50.00999999999999,0.0
+0.009142857142857144,0.18571428571428572,10.7875,10.7875,0.0
+0.009142857142857144,0.2142857142857143,15.9275,15.927499999999998,0.0
+0.009142857142857144,0.24285714285714288,11.940000000000001,11.939999999999998,0.0
+0.009142857142857144,0.27142857142857146,4.65,4.65,0.0
+0.009142857142857144,0.30000000000000004,4.027500000000001,4.027500000000001,0.0
+0.009142857142857144,0.3285714285714286,1.3875,1.3875,0.0
+0.009142857142857144,0.3571428571428572,1.0100000000000002,1.01,0.0
+0.009142857142857144,0.3857142857142858,0.51,0.5100000000000001,0.0
+0.009142857142857144,0.41428571428571437,0.32749999999999996,0.32749999999999996,0.0
+0.009142857142857144,0.44285714285714284,0.26000000000000006,0.25999999999999995,0.0
+0.009142857142857144,0.4714285714285714,0.1275,47390.19,47405.047499999986
+0.009142857142857144,0.5,0.09000000000000001,47395.147499999985,47405.047499999986
+0.009785714285714286,0.1,2039.4099999999999,65545.84000000001,89820.09000000001
+0.009785714285714286,0.1285714285714286,60.65,60.65,0.0
+0.009785714285714286,0.15714285714285714,161.44,42911.1475,47405.047499999986
+0.009785714285714286,0.18571428571428572,21.127499999999998,21.127499999999998,0.0
+0.009785714285714286,0.2142857142857143,12.059999999999999,12.060000000000002,0.0
+0.009785714285714286,0.24285714285714288,5.55,5.55,0.0
+0.009785714285714286,0.27142857142857146,4.9475,46805.6,47405.047499999986
+0.009785714285714286,0.30000000000000004,2.79,47118.1275,47405.047499999986
+0.009785714285714286,0.3285714285714286,1.7100000000000002,47236.927500000005,47405.047499999986
+0.009785714285714286,0.3571428571428572,0.8900000000000002,47296.0475,47405.047499999986
+0.009785714285714286,0.3857142857142858,0.51,0.5100000000000001,0.0
+0.009785714285714286,0.41428571428571437,0.32749999999999996,0.32749999999999996,0.0
+0.009785714285714286,0.44285714285714284,0.26000000000000006,0.25999999999999995,0.0
+0.009785714285714286,0.4714285714285714,0.1275,0.12750000000000003,0.0
+0.009785714285714286,0.5,0.04749999999999999,0.047500000000000014,0.0
+0.01042857142857143,0.1,106.99000000000001,106.98999999999998,0.0
+0.01042857142857143,0.1285714285714286,76.54750000000001,76.54750000000001,0.0
+0.01042857142857143,0.15714285714285714,61.82750000000001,61.8275,0.0
+0.01042857142857143,0.18571428571428572,57.15,44914.747500000005,47405.047499999986
+0.01042857142857143,0.2142857142857143,14.5,14.5,0.0
+0.01042857142857143,0.24285714285714288,7.19,7.19,0.0
+0.01042857142857143,0.27142857142857146,2.6,2.6,0.0
+0.01042857142857143,0.30000000000000004,2.3400000000000007,2.34,0.0
+0.01042857142857143,0.3285714285714286,1.8400000000000003,47247.0475,47405.047499999986
+0.01042857142857143,0.3571428571428572,0.86,47325.9875,47405.047499999986
+0.01042857142857143,0.3857142857142858,0.6399999999999999,47345.747500000005,47405.047499999986
+0.01042857142857143,0.41428571428571437,0.41,0.41000000000000003,0.0
+0.01042857142857143,0.44285714285714284,0.1275,0.12750000000000003,0.0
+0.01042857142857143,0.4714285714285714,0.04749999999999999,0.047500000000000014,0.0
+0.01042857142857143,0.5,0.04749999999999999,0.047500000000000014,0.0
+0.011071428571428572,0.1,119.2275,119.22749999999999,0.0
+0.011071428571428572,0.1285714285714286,387.1474999999999,39955.03999999999,47405.04749999999
+0.011071428571428572,0.15714285714285714,54.92750000000001,54.927499999999995,0.0
+0.011071428571428572,0.18571428571428572,34.7,34.7,0.0
+0.011071428571428572,0.2142857142857143,18.81,18.810000000000002,0.0
+0.011071428571428572,0.24285714285714288,9.9275,46630.759999999995,47405.04749999999
+0.011071428571428572,0.27142857142857146,3.2875,46983.76,47405.047499999986
+0.011071428571428572,0.30000000000000004,0.8475000000000001,0.8475000000000001,0.0
+0.011071428571428572,0.3285714285714286,0.9875,0.9875,0.0
+0.011071428571428572,0.3571428571428572,0.7900000000000001,0.79,0.0
+0.011071428571428572,0.3857142857142858,0.43999999999999995,0.44000000000000006,0.0
+0.011071428571428572,0.41428571428571437,0.4475000000000001,0.4475000000000001,0.0
+0.011071428571428572,0.44285714285714284,0.3274999999999999,0.32749999999999996,0.0
+0.011071428571428572,0.4714285714285714,0.1275,0.12750000000000003,0.0
+0.011071428571428572,0.5,0.1275,0.12750000000000003,0.0
+0.011714285714285714,0.1,114.75,114.75,0.0
+0.011714285714285714,0.1285714285714286,50.459999999999994,50.459999999999994,0.0
+0.011714285714285714,0.15714285714285714,49.64,49.64,0.0
+0.011714285714285714,0.18571428571428572,36.2475,36.2475,0.0
+0.011714285714285714,0.2142857142857143,18.11,18.110000000000003,0.0
+0.011714285714285714,0.24285714285714288,7.727500000000001,7.727499999999997,0.0
+0.011714285714285714,0.27142857142857146,3.3875,46983.86,47405.047499999986
+0.011714285714285714,0.30000000000000004,3.5475000000000008,47103.9,47405.047499999986
+0.011714285714285714,0.3285714285714286,2.1875,2.1875,0.0
+0.011714285714285714,0.3571428571428572,1.2900000000000003,89601.6,89820.09000000001
+0.011714285714285714,0.3857142857142858,0.41000000000000003,47335.527500000004,47405.04749999999
+0.011714285714285714,0.41428571428571437,0.16000000000000006,127185.34749999999,127245.12749999999
+0.011714285714285714,0.44285714285714284,0.04749999999999999,127230.18999999999,127245.12749999999
+0.011714285714285714,0.4714285714285714,0.04749999999999999,127230.18999999999,127245.12749999999
+0.011714285714285714,0.5,0.0,127245.12749999999,127245.12749999999
+0.012357142857142856,0.1,114.62750000000001,114.62749999999998,0.0
+0.012357142857142856,0.1285714285714286,73.92750000000001,73.92750000000001,0.0
+0.012357142857142856,0.15714285714285714,77.0875,77.0875,0.0
+0.012357142857142856,0.18571428571428572,63.510000000000005,44901.1275,47405.047499999986
+0.012357142857142856,0.2142857142857143,15.147499999999999,15.147500000000003,0.0
+0.012357142857142856,0.24285714285714288,8.559999999999999,8.56,0.0
+0.012357142857142856,0.27142857142857146,6.647499999999999,46907.2,47405.047499999986
+0.012357142857142856,0.30000000000000004,3.5475000000000003,47103.9,47405.047499999986
+0.012357142857142856,0.3285714285714286,2.3100000000000005,2.31,0.0
+0.012357142857142856,0.3571428571428572,1.2900000000000003,89601.6,89820.09000000001
+0.012357142857142856,0.3857142857142858,0.41000000000000003,47335.527500000004,47405.04749999999
+0.012357142857142856,0.41428571428571437,0.1275,127200.3,127245.12749999999
+0.012357142857142856,0.44285714285714284,0.1875,89770.32749999998,89820.09000000001
+0.012357142857142856,0.4714285714285714,0.1275,89790.24749999998,89820.09000000001
+0.012357142857142856,0.5,0.0475,89810.14749999999,89820.09000000001
+0.013,0.1,68.8875,68.8875,0.0
+0.013,0.1285714285714286,65.19000000000001,65.18999999999998,0.0
+0.013,0.15714285714285714,28.9875,28.9875,0.0
+0.013,0.18571428571428572,52.29,44969.8275,47405.0475
+0.013,0.2142857142857143,16.327499999999997,46037.76,47405.047499999986
+0.013,0.24285714285714288,14.24,14.239999999999998,0.0
+0.013,0.27142857142857146,4.31,4.3100000000000005,0.0
+0.013,0.30000000000000004,3.21,3.210000000000001,0.0
+0.013,0.3285714285714286,1.3475,1.3474999999999997,0.0
+0.013,0.3571428571428572,0.6275000000000001,0.6275000000000002,0.0
+0.013,0.3857142857142858,0.5400000000000001,89740.71,89820.09000000001
+0.013,0.41428571428571437,0.5275,89750.6875,89820.09000000001
+0.013,0.44285714285714284,0.1875,89770.32749999998,89820.09000000001
+0.013,0.4714285714285714,0.1275,89790.24749999998,89820.09000000001
+0.013,0.5,0.0475,89810.14749999999,89820.09000000001
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-avg.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-avg.csv
new file mode 100644
index 0000000000..38ca8fac81
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-avg.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,843.8,797.65,999.0
+0.004,0.1285714285714286,861.45,906.55,999.0
+0.004,0.15714285714285714,839.15,940.95,999.0
+0.004,0.18571428571428572,775.2,915.95,999.0
+0.004,0.2142857142857143,791.1,979.25,999.0
+0.004,0.24285714285714288,694.85,887.55,999.0
+0.004,0.27142857142857146,602.35,795.05,999.0
+0.004,0.30000000000000004,624.8,846.8,999.0
+0.004,0.3285714285714286,684.05,947.75,999.0
+0.004,0.3571428571428572,667.45,948.9,999.0
+0.004,0.3857142857142858,651.5,949.3,999.0
+0.004,0.41428571428571437,601.45,899.6,999.0
+0.004,0.44285714285714284,621.7,949.45,999.0
+0.004,0.4714285714285714,540.1,849.65,999.0
+0.004,0.5,496.35,799.5,999.0
+0.004642857142857143,0.1,900.4,844.4,999.0
+0.004642857142857143,0.1285714285714286,876.3,909.85,999.0
+0.004642857142857143,0.15714285714285714,768.9,850.05,999.0
+0.004642857142857143,0.18571428571428572,833.25,966.5,999.0
+0.004642857142857143,0.2142857142857143,814.05,979.2,999.0
+0.004642857142857143,0.24285714285714288,754.15,939.55,999.0
+0.004642857142857143,0.27142857142857146,774.0,993.2,999.0
+0.004642857142857143,0.30000000000000004,720.6,946.05,999.0
+0.004642857142857143,0.3285714285714286,703.85,947.35,999.0
+0.004642857142857143,0.3571428571428572,652.8,898.7,999.0
+0.004642857142857143,0.3857142857142858,569.35,799.5,999.0
+0.004642857142857143,0.41428571428571437,626.55,899.45,999.0
+0.004642857142857143,0.44285714285714284,647.8,949.75,999.0
+0.004642857142857143,0.4714285714285714,635.1,949.85,999.0
+0.004642857142857143,0.5,654.3,999.8,999.0
+0.005285714285714286,0.1,903.4,846.95,999.0
+0.005285714285714286,0.1285714285714286,885.95,911.6,999.0
+0.005285714285714286,0.15714285714285714,782.75,851.85,999.0
+0.005285714285714286,0.18571428571428572,849.0,966.85,999.0
+0.005285714285714286,0.2142857142857143,832.6,981.3,999.0
+0.005285714285714286,0.24285714285714288,731.15,890.1,999.0
+0.005285714285714286,0.27142857142857146,754.25,944.25,999.0
+0.005285714285714286,0.30000000000000004,777.75,996.55,999.0
+0.005285714285714286,0.3285714285714286,724.15,948.05,999.0
+0.005285714285714286,0.3571428571428572,675.1,899.1,999.0
+0.005285714285714286,0.3857142857142858,698.15,949.3,999.0
+0.005285714285714286,0.41428571428571437,719.45,999.6,999.0
+0.005285714285714286,0.44285714285714284,669.6,949.85,999.0
+0.005285714285714286,0.4714285714285714,656.5,949.9,999.0
+0.005285714285714286,0.5,642.75,950.05,999.0
+0.005928571428571429,0.1,916.45,846.45,999.0
+0.005928571428571429,0.1285714285714286,896.7,910.0,999.0
+0.005928571428571429,0.15714285714285714,877.15,947.2,999.0
+0.005928571428571429,0.18571428571428572,817.95,921.65,999.0
+0.005928571428571429,0.2142857142857143,761.6,884.45,999.0
+0.005928571428571429,0.24285714285714288,745.6,890.7,999.0
+0.005928571428571429,0.27142857142857146,731.2,895.15,999.0
+0.005928571428571429,0.30000000000000004,756.4,947.35,999.0
+0.005928571428571429,0.3285714285714286,783.15,997.95,999.0
+0.005928571428571429,0.3571428571428572,698.35,898.95,999.0
+0.005928571428571429,0.3857142857142858,686.3,899.15,999.0
+0.005928571428571429,0.41428571428571437,673.95,899.45,999.0
+0.005928571428571429,0.44285714285714284,663.6,899.55,999.0
+0.005928571428571429,0.4714285714285714,651.85,899.8,999.0
+0.005928571428571429,0.5,570.5,800.15,999.0
+0.006571428571428572,0.1,922.8,850.25,999.0
+0.006571428571428572,0.1285714285714286,862.4,866.85,999.0
+0.006571428571428572,0.15714285714285714,891.25,950.15,999.0
+0.006571428571428572,0.18571428571428572,877.85,968.55,999.0
+0.006571428571428572,0.2142857142857143,862.25,981.8,999.0
+0.006571428571428572,0.24285714285714288,845.35,989.75,999.0
+0.006571428571428572,0.27142857142857146,831.7,994.0,999.0
+0.006571428571428572,0.30000000000000004,817.25,996.5,999.0
+0.006571428571428572,0.3285714285714286,724.55,898.2,999.0
+0.006571428571428572,0.3571428571428572,752.9,948.65,999.0
+0.006571428571428572,0.3857142857142858,703.35,899.15,999.0
+0.006571428571428572,0.41428571428571437,691.3,899.45,999.0
+0.006571428571428572,0.44285714285714284,680.45,899.6,999.0
+0.006571428571428572,0.4714285714285714,670.35,900.0,999.0
+0.006571428571428572,0.5,658.25,900.1,999.0
+0.007214285714285715,0.1,931.4,846.7,999.0
+0.007214285714285715,0.1285714285714286,910.95,912.75,999.0
+0.007214285714285715,0.15714285714285714,850.55,902.05,999.0
+0.007214285714285715,0.18571428571428572,836.05,923.9,999.0
+0.007214285714285715,0.2142857142857143,781.45,884.0,999.0
+0.007214285714285715,0.24285714285714288,766.35,889.75,999.0
+0.007214285714285715,0.27142857142857146,798.85,944.45,999.0
+0.007214285714285715,0.30000000000000004,827.65,995.75,999.0
+0.007214285714285715,0.3285714285714286,776.1,948.0,999.0
+0.007214285714285715,0.3571428571428572,806.1,998.6,999.0
+0.007214285714285715,0.3857142857142858,753.5,949.2,999.0
+0.007214285714285715,0.41428571428571437,703.55,899.7,999.0
+0.007214285714285715,0.44285714285714284,694.6,899.9,999.0
+0.007214285714285715,0.4714285714285714,685.6,900.0,999.0
+0.007214285714285715,0.5,674.85,900.1,999.0
+0.007857142857142858,0.1,886.5,807.7,999.0
+0.007857142857142858,0.1285714285714286,915.6,914.05,999.0
+0.007857142857142858,0.15714285714285714,903.5,950.75,999.0
+0.007857142857142858,0.18571428571428572,886.3,971.95,999.0
+0.007857142857142858,0.2142857142857143,782.9,884.9,999.0
+0.007857142857142858,0.24285714285714288,814.4,940.5,999.0
+0.007857142857142858,0.27142857142857146,758.35,895.05,999.0
+0.007857142857142858,0.30000000000000004,830.7,996.75,999.0
+0.007857142857142858,0.3285714285714286,819.0,998.3,999.0
+0.007857142857142858,0.3571428571428572,808.55,998.85,999.0
+0.007857142857142858,0.3857142857142858,797.05,999.1,999.0
+0.007857142857142858,0.41428571428571437,748.65,949.6,999.0
+0.007857142857142858,0.44285714285714284,776.45,999.75,999.0
+0.007857142857142858,0.4714285714285714,767.4,999.8,999.0
+0.007857142857142858,0.5,756.25,999.9,999.0
+0.0085,0.1,934.1,853.95,999.0
+0.0085,0.1285714285714286,923.75,913.0,999.0
+0.0085,0.15714285714285714,907.85,951.4,999.0
+0.0085,0.18571428571428572,892.15,973.15,999.0
+0.0085,0.2142857142857143,835.05,934.0,999.0
+0.0085,0.24285714285714288,823.75,940.75,999.0
+0.0085,0.27142857142857146,858.35,994.5,999.0
+0.0085,0.30000000000000004,847.25,996.65,999.0
+0.0085,0.3285714285714286,794.55,948.25,999.0
+0.0085,0.3571428571428572,826.15,998.7,999.0
+0.0085,0.3857142857142858,814.55,999.5,999.0
+0.0085,0.41428571428571437,765.75,949.85,999.0
+0.0085,0.44285714285714284,755.95,950.0,999.0
+0.0085,0.4714285714285714,745.8,950.0,999.0
+0.0085,0.5,736.9,950.05,999.0
+0.009142857142857144,0.1,941.45,858.15,999.0
+0.009142857142857144,0.1285714285714286,925.6,915.6,999.0
+0.009142857142857144,0.15714285714285714,912.3,950.7,999.0
+0.009142857142857144,0.18571428571428572,902.0,971.25,999.0
+0.009142857142857144,0.2142857142857143,891.6,983.65,999.0
+0.009142857142857144,0.24285714285714288,878.5,989.4,999.0
+0.009142857142857144,0.27142857142857146,867.4,994.5,999.0
+0.009142857142857144,0.30000000000000004,855.65,996.65,999.0
+0.009142857142857144,0.3285714285714286,845.15,998.25,999.0
+0.009142857142857144,0.3571428571428572,834.4,998.7,999.0
+0.009142857142857144,0.3857142857142858,823.05,999.3,999.0
+0.009142857142857144,0.41428571428571437,813.85,999.65,999.0
+0.009142857142857144,0.44285714285714284,805.2,999.8,999.0
+0.009142857142857144,0.4714285714285714,756.4,949.9,999.0
+0.009142857142857144,0.5,747.45,949.95,999.0
+0.009785714285714286,0.1,848.35,768.4,999.0
+0.009785714285714286,0.1285714285714286,929.5,914.5,999.0
+0.009785714285714286,0.15714285714285714,872.5,903.45,999.0
+0.009785714285714286,0.18571428571428572,905.2,970.35,999.0
+0.009785714285714286,0.2142857142857143,895.0,983.2,999.0
+0.009785714285714286,0.24285714285714288,882.7,990.5,999.0
+0.009785714285714286,0.27142857142857146,828.7,944.0,999.0
+0.009785714285714286,0.30000000000000004,818.75,947.15,999.0
+0.009785714285714286,0.3285714285714286,809.8,948.35,999.0
+0.009785714285714286,0.3571428571428572,798.7,948.95,999.0
+0.009785714285714286,0.3857142857142858,832.8,999.3,999.0
+0.009785714285714286,0.41428571428571437,823.95,999.65,999.0
+0.009785714285714286,0.44285714285714284,813.65,999.8,999.0
+0.009785714285714286,0.4714285714285714,804.95,999.85,999.0
+0.009785714285714286,0.5,794.8,999.95,999.0
+0.01042857142857143,0.1,946.5,855.9,999.0
+0.01042857142857143,0.1285714285714286,934.3,916.45,999.0
+0.01042857142857143,0.15714285714285714,923.75,952.35,999.0
+0.01042857142857143,0.18571428571428572,866.25,924.55,999.0
+0.01042857142857143,0.2142857142857143,900.95,983.0,999.0
+0.01042857142857143,0.24285714285714288,888.25,991.1,999.0
+0.01042857142857143,0.27142857142857146,878.7,995.0,999.0
+0.01042857142857143,0.30000000000000004,867.2,997.4,999.0
+0.01042857142857143,0.3285714285714286,814.95,948.45,999.0
+0.01042857142857143,0.3571428571428572,807.5,949.25,999.0
+0.01042857142857143,0.3857142857142858,798.6,949.45,999.0
+0.01042857142857143,0.41428571428571437,830.85,999.7,999.0
+0.01042857142857143,0.44285714285714284,823.3,999.85,999.0
+0.01042857142857143,0.4714285714285714,812.9,999.95,999.0
+0.01042857142857143,0.5,803.45,999.95,999.0
+0.011071428571428572,0.1,949.1,856.35,999.0
+0.011071428571428572,0.1285714285714286,891.7,871.6,999.0
+0.011071428571428572,0.15714285714285714,927.15,952.35,999.0
+0.011071428571428572,0.18571428571428572,915.7,974.0,999.0
+0.011071428571428572,0.2142857142857143,901.6,984.3,999.0
+0.011071428571428572,0.24285714285714288,849.75,942.2,999.0
+0.011071428571428572,0.27142857142857146,840.5,945.8,999.0
+0.011071428571428572,0.30000000000000004,876.3,997.45,999.0
+0.011071428571428572,0.3285714285714286,866.5,998.25,999.0
+0.011071428571428572,0.3571428571428572,859.2,998.9,999.0
+0.011071428571428572,0.3857142857142858,849.4,999.4,999.0
+0.011071428571428572,0.41428571428571437,841.85,999.55,999.0
+0.011071428571428572,0.44285714285714284,833.05,999.65,999.0
+0.011071428571428572,0.4714285714285714,825.15,999.85,999.0
+0.011071428571428572,0.5,817.1,999.85,999.0
+0.011714285714285714,0.1,951.85,860.5,999.0
+0.011714285714285714,0.1285714285714286,943.35,917.2,999.0
+0.011714285714285714,0.15714285714285714,931.6,952.4,999.0
+0.011714285714285714,0.18571428571428572,918.85,974.05,999.0
+0.011714285714285714,0.2142857142857143,906.15,984.3,999.0
+0.011714285714285714,0.24285714285714288,898.75,991.85,999.0
+0.011714285714285714,0.27142857142857146,845.25,945.8,999.0
+0.011714285714285714,0.30000000000000004,837.1,947.0,999.0
+0.011714285714285714,0.3285714285714286,872.1,998.25,999.0
+0.011714285714285714,0.3571428571428572,777.85,899.0,999.0
+0.011714285714285714,0.3857142857142858,814.05,949.35,999.0
+0.011714285714285714,0.41428571428571437,719.85,849.95,999.0
+0.011714285714285714,0.44285714285714284,713.65,850.1,999.0
+0.011714285714285714,0.4714285714285714,705.8,850.1,999.0
+0.011714285714285714,0.5,699.45,850.15,999.0
+0.012357142857142856,0.1,955.35,855.35,999.0
+0.012357142857142856,0.1285714285714286,942.85,914.85,999.0
+0.012357142857142856,0.15714285714285714,930.9,951.75,999.0
+0.012357142857142856,0.18571428571428572,874.05,924.35,999.0
+0.012357142857142856,0.2142857142857143,912.0,983.45,999.0
+0.012357142857142856,0.24285714285714288,901.6,991.8,999.0
+0.012357142857142856,0.27142857142857146,850.35,945.0,999.0
+0.012357142857142856,0.30000000000000004,841.55,947.0,999.0
+0.012357142857142856,0.3285714285714286,877.75,998.3,999.0
+0.012357142857142856,0.3571428571428572,782.3,899.0,999.0
+0.012357142857142856,0.3857142857142858,817.75,949.35,999.0
+0.012357142857142856,0.41428571428571437,725.45,850.0,999.0
+0.012357142857142856,0.44285714285714284,760.75,899.85,999.0
+0.012357142857142856,0.4714285714285714,753.45,899.95,999.0
+0.012357142857142856,0.5,747.35,900.05,999.0
+0.013,0.1,958.6,859.75,999.0
+0.013,0.1285714285714286,943.75,920.9,999.0
+0.013,0.15714285714285714,935.5,951.75,999.0
+0.013,0.18571428571428572,878.55,925.15,999.0
+0.013,0.2142857142857143,871.1,936.2,999.0
+0.013,0.24285714285714288,908.85,990.4,999.0
+0.013,0.27142857142857146,901.4,995.3,999.0
+0.013,0.30000000000000004,891.0,996.7,999.0
+0.013,0.3285714285714286,882.15,998.05,999.0
+0.013,0.3571428571428572,874.4,998.85,999.0
+0.013,0.3857142857142858,780.0,899.7,999.0
+0.013,0.41428571428571437,773.6,899.75,999.0
+0.013,0.44285714285714284,766.95,899.85,999.0
+0.013,0.4714285714285714,759.2,899.95,999.0
+0.013,0.5,753.15,900.05,999.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-max.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-max.csv
new file mode 100644
index 0000000000..721b1bf482
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-max.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,910.0,868.0,999.0
+0.004,0.1285714285714286,883.0,926.0,999.0
+0.004,0.15714285714285714,865.0,949.0,999.0
+0.004,0.18571428571428572,840.0,974.0,999.0
+0.004,0.2142857142857143,817.0,986.0,999.0
+0.004,0.24285714285714288,802.0,989.0,999.0
+0.004,0.27142857142857146,782.0,998.0,999.0
+0.004,0.30000000000000004,766.0,998.0,999.0
+0.004,0.3285714285714286,746.0,1000.0,999.0
+0.004,0.3571428571428572,728.0,1000.0,999.0
+0.004,0.3857142857142858,712.0,1000.0,999.0
+0.004,0.41428571428571437,697.0,1000.0,999.0
+0.004,0.44285714285714284,688.0,1000.0,999.0
+0.004,0.4714285714285714,673.0,1000.0,999.0
+0.004,0.5,652.0,1000.0,999.0
+0.004642857142857143,0.1,915.0,871.0,999.0
+0.004642857142857143,0.1285714285714286,895.0,929.0,999.0
+0.004642857142857143,0.15714285714285714,868.0,957.0,999.0
+0.004642857142857143,0.18571428571428572,854.0,978.0,999.0
+0.004642857142857143,0.2142857142857143,841.0,986.0,999.0
+0.004642857142857143,0.24285714285714288,830.0,996.0,999.0
+0.004642857142857143,0.27142857142857146,810.0,997.0,999.0
+0.004642857142857143,0.30000000000000004,790.0,999.0,999.0
+0.004642857142857143,0.3285714285714286,775.0,1000.0,999.0
+0.004642857142857143,0.3571428571428572,755.0,1000.0,999.0
+0.004642857142857143,0.3857142857142858,743.0,1000.0,999.0
+0.004642857142857143,0.41428571428571437,730.0,1000.0,999.0
+0.004642857142857143,0.44285714285714284,712.0,1000.0,999.0
+0.004642857142857143,0.4714285714285714,703.0,1000.0,999.0
+0.004642857142857143,0.5,686.0,1000.0,999.0
+0.005285714285714286,0.1,921.0,866.0,999.0
+0.005285714285714286,0.1285714285714286,901.0,929.0,999.0
+0.005285714285714286,0.15714285714285714,886.0,957.0,999.0
+0.005285714285714286,0.18571428571428572,871.0,978.0,999.0
+0.005285714285714286,0.2142857142857143,857.0,988.0,999.0
+0.005285714285714286,0.24285714285714288,830.0,994.0,999.0
+0.005285714285714286,0.27142857142857146,810.0,998.0,999.0
+0.005285714285714286,0.30000000000000004,797.0,1000.0,999.0
+0.005285714285714286,0.3285714285714286,780.0,1000.0,999.0
+0.005285714285714286,0.3571428571428572,767.0,1000.0,999.0
+0.005285714285714286,0.3857142857142858,755.0,1000.0,999.0
+0.005285714285714286,0.41428571428571437,739.0,1000.0,999.0
+0.005285714285714286,0.44285714285714284,722.0,1000.0,999.0
+0.005285714285714286,0.4714285714285714,711.0,1000.0,999.0
+0.005285714285714286,0.5,694.0,1000.0,999.0
+0.005928571428571429,0.1,938.0,869.0,999.0
+0.005928571428571429,0.1285714285714286,913.0,929.0,999.0
+0.005928571428571429,0.15714285714285714,894.0,965.0,999.0
+0.005928571428571429,0.18571428571428572,875.0,979.0,999.0
+0.005928571428571429,0.2142857142857143,867.0,994.0,999.0
+0.005928571428571429,0.24285714285714288,849.0,994.0,999.0
+0.005928571428571429,0.27142857142857146,831.0,998.0,999.0
+0.005928571428571429,0.30000000000000004,820.0,1000.0,999.0
+0.005928571428571429,0.3285714285714286,806.0,1000.0,999.0
+0.005928571428571429,0.3571428571428572,807.0,1000.0,999.0
+0.005928571428571429,0.3857142857142858,784.0,1000.0,999.0
+0.005928571428571429,0.41428571428571437,773.0,1000.0,999.0
+0.005928571428571429,0.44285714285714284,765.0,1000.0,999.0
+0.005928571428571429,0.4714285714285714,752.0,1000.0,999.0
+0.005928571428571429,0.5,737.0,1000.0,999.0
+0.006571428571428572,0.1,937.0,866.0,999.0
+0.006571428571428572,0.1285714285714286,921.0,927.0,999.0
+0.006571428571428572,0.15714285714285714,904.0,967.0,999.0
+0.006571428571428572,0.18571428571428572,899.0,978.0,999.0
+0.006571428571428572,0.2142857142857143,882.0,989.0,999.0
+0.006571428571428572,0.24285714285714288,863.0,995.0,999.0
+0.006571428571428572,0.27142857142857146,853.0,998.0,999.0
+0.006571428571428572,0.30000000000000004,841.0,1000.0,999.0
+0.006571428571428572,0.3285714285714286,830.0,1000.0,999.0
+0.006571428571428572,0.3571428571428572,821.0,1000.0,999.0
+0.006571428571428572,0.3857142857142858,807.0,1000.0,999.0
+0.006571428571428572,0.41428571428571437,798.0,1000.0,999.0
+0.006571428571428572,0.44285714285714284,781.0,1000.0,999.0
+0.006571428571428572,0.4714285714285714,772.0,1000.0,999.0
+0.006571428571428572,0.5,756.0,1000.0,999.0
+0.007214285714285715,0.1,941.0,862.0,999.0
+0.007214285714285715,0.1285714285714286,923.0,931.0,999.0
+0.007214285714285715,0.15714285714285714,906.0,958.0,999.0
+0.007214285714285715,0.18571428571428572,898.0,982.0,999.0
+0.007214285714285715,0.2142857142857143,886.0,987.0,999.0
+0.007214285714285715,0.24285714285714288,868.0,996.0,999.0
+0.007214285714285715,0.27142857142857146,865.0,998.0,999.0
+0.007214285714285715,0.30000000000000004,858.0,999.0,999.0
+0.007214285714285715,0.3285714285714286,838.0,1000.0,999.0
+0.007214285714285715,0.3571428571428572,824.0,1000.0,999.0
+0.007214285714285715,0.3857142857142858,813.0,1000.0,999.0
+0.007214285714285715,0.41428571428571437,803.0,1000.0,999.0
+0.007214285714285715,0.44285714285714284,794.0,1000.0,999.0
+0.007214285714285715,0.4714285714285714,786.0,1000.0,999.0
+0.007214285714285715,0.5,776.0,1000.0,999.0
+0.007857142857142858,0.1,943.0,870.0,999.0
+0.007857142857142858,0.1285714285714286,930.0,931.0,999.0
+0.007857142857142858,0.15714285714285714,931.0,965.0,999.0
+0.007857142857142858,0.18571428571428572,908.0,981.0,999.0
+0.007857142857142858,0.2142857142857143,898.0,988.0,999.0
+0.007857142857142858,0.24285714285714288,875.0,995.0,999.0
+0.007857142857142858,0.27142857142857146,862.0,999.0,999.0
+0.007857142857142858,0.30000000000000004,855.0,1000.0,999.0
+0.007857142857142858,0.3285714285714286,843.0,1000.0,999.0
+0.007857142857142858,0.3571428571428572,837.0,1000.0,999.0
+0.007857142857142858,0.3857142857142858,828.0,1000.0,999.0
+0.007857142857142858,0.41428571428571437,819.0,1000.0,999.0
+0.007857142857142858,0.44285714285714284,810.0,1000.0,999.0
+0.007857142857142858,0.4714285714285714,800.0,1000.0,999.0
+0.007857142857142858,0.5,789.0,1000.0,999.0
+0.0085,0.1,946.0,867.0,999.0
+0.0085,0.1285714285714286,938.0,931.0,999.0
+0.0085,0.15714285714285714,936.0,969.0,999.0
+0.0085,0.18571428571428572,911.0,982.0,999.0
+0.0085,0.2142857142857143,901.0,989.0,999.0
+0.0085,0.24285714285714288,881.0,996.0,999.0
+0.0085,0.27142857142857146,881.0,999.0,999.0
+0.0085,0.30000000000000004,873.0,1000.0,999.0
+0.0085,0.3285714285714286,862.0,1000.0,999.0
+0.0085,0.3571428571428572,851.0,1000.0,999.0
+0.0085,0.3857142857142858,842.0,1000.0,999.0
+0.0085,0.41428571428571437,826.0,1000.0,999.0
+0.0085,0.44285714285714284,819.0,1000.0,999.0
+0.0085,0.4714285714285714,815.0,1000.0,999.0
+0.0085,0.5,805.0,1000.0,999.0
+0.009142857142857144,0.1,954.0,889.0,999.0
+0.009142857142857144,0.1285714285714286,941.0,933.0,999.0
+0.009142857142857144,0.15714285714285714,933.0,965.0,999.0
+0.009142857142857144,0.18571428571428572,925.0,976.0,999.0
+0.009142857142857144,0.2142857142857143,917.0,993.0,999.0
+0.009142857142857144,0.24285714285714288,899.0,994.0,999.0
+0.009142857142857144,0.27142857142857146,886.0,999.0,999.0
+0.009142857142857144,0.30000000000000004,877.0,1000.0,999.0
+0.009142857142857144,0.3285714285714286,869.0,1000.0,999.0
+0.009142857142857144,0.3571428571428572,861.0,1000.0,999.0
+0.009142857142857144,0.3857142857142858,845.0,1000.0,999.0
+0.009142857142857144,0.41428571428571437,838.0,1000.0,999.0
+0.009142857142857144,0.44285714285714284,827.0,1000.0,999.0
+0.009142857142857144,0.4714285714285714,821.0,1000.0,999.0
+0.009142857142857144,0.5,810.0,1000.0,999.0
+0.009785714285714286,0.1,955.0,874.0,999.0
+0.009785714285714286,0.1285714285714286,940.0,931.0,999.0
+0.009785714285714286,0.15714285714285714,929.0,964.0,999.0
+0.009785714285714286,0.18571428571428572,916.0,979.0,999.0
+0.009785714285714286,0.2142857142857143,910.0,990.0,999.0
+0.009785714285714286,0.24285714285714288,897.0,996.0,999.0
+0.009785714285714286,0.27142857142857146,888.0,997.0,999.0
+0.009785714285714286,0.30000000000000004,883.0,999.0,999.0
+0.009785714285714286,0.3285714285714286,875.0,1000.0,999.0
+0.009785714285714286,0.3571428571428572,861.0,1000.0,999.0
+0.009785714285714286,0.3857142857142858,853.0,1000.0,999.0
+0.009785714285714286,0.41428571428571437,845.0,1000.0,999.0
+0.009785714285714286,0.44285714285714284,839.0,1000.0,999.0
+0.009785714285714286,0.4714285714285714,829.0,1000.0,999.0
+0.009785714285714286,0.5,822.0,1000.0,999.0
+0.01042857142857143,0.1,958.0,878.0,999.0
+0.01042857142857143,0.1285714285714286,948.0,932.0,999.0
+0.01042857142857143,0.15714285714285714,937.0,966.0,999.0
+0.01042857142857143,0.18571428571428572,934.0,983.0,999.0
+0.01042857142857143,0.2142857142857143,926.0,990.0,999.0
+0.01042857142857143,0.24285714285714288,905.0,996.0,999.0
+0.01042857142857143,0.27142857142857146,895.0,999.0,999.0
+0.01042857142857143,0.30000000000000004,881.0,999.0,999.0
+0.01042857142857143,0.3285714285714286,874.0,1000.0,999.0
+0.01042857142857143,0.3571428571428572,869.0,1000.0,999.0
+0.01042857142857143,0.3857142857142858,858.0,1000.0,999.0
+0.01042857142857143,0.41428571428571437,851.0,1000.0,999.0
+0.01042857142857143,0.44285714285714284,848.0,1000.0,999.0
+0.01042857142857143,0.4714285714285714,836.0,1000.0,999.0
+0.01042857142857143,0.5,825.0,1000.0,999.0
+0.011071428571428572,0.1,963.0,878.0,999.0
+0.011071428571428572,0.1285714285714286,951.0,930.0,999.0
+0.011071428571428572,0.15714285714285714,940.0,966.0,999.0
+0.011071428571428572,0.18571428571428572,933.0,981.0,999.0
+0.011071428571428572,0.2142857142857143,918.0,993.0,999.0
+0.011071428571428572,0.24285714285714288,913.0,996.0,999.0
+0.011071428571428572,0.27142857142857146,899.0,999.0,999.0
+0.011071428571428572,0.30000000000000004,895.0,999.0,999.0
+0.011071428571428572,0.3285714285714286,887.0,1000.0,999.0
+0.011071428571428572,0.3571428571428572,879.0,1000.0,999.0
+0.011071428571428572,0.3857142857142858,866.0,1000.0,999.0
+0.011071428571428572,0.41428571428571437,860.0,1000.0,999.0
+0.011071428571428572,0.44285714285714284,849.0,1000.0,999.0
+0.011071428571428572,0.4714285714285714,846.0,1000.0,999.0
+0.011071428571428572,0.5,839.0,1000.0,999.0
+0.011714285714285714,0.1,964.0,882.0,999.0
+0.011714285714285714,0.1285714285714286,962.0,930.0,999.0
+0.011714285714285714,0.15714285714285714,952.0,963.0,999.0
+0.011714285714285714,0.18571428571428572,938.0,982.0,999.0
+0.011714285714285714,0.2142857142857143,925.0,993.0,999.0
+0.011714285714285714,0.24285714285714288,918.0,996.0,999.0
+0.011714285714285714,0.27142857142857146,903.0,999.0,999.0
+0.011714285714285714,0.30000000000000004,904.0,999.0,999.0
+0.011714285714285714,0.3285714285714286,891.0,1000.0,999.0
+0.011714285714285714,0.3571428571428572,890.0,1000.0,999.0
+0.011714285714285714,0.3857142857142858,884.0,1000.0,999.0
+0.011714285714285714,0.41428571428571437,873.0,1000.0,999.0
+0.011714285714285714,0.44285714285714284,866.0,1000.0,999.0
+0.011714285714285714,0.4714285714285714,857.0,1000.0,999.0
+0.011714285714285714,0.5,847.0,1000.0,999.0
+0.012357142857142856,0.1,966.0,882.0,999.0
+0.012357142857142856,0.1285714285714286,952.0,931.0,999.0
+0.012357142857142856,0.15714285714285714,942.0,965.0,999.0
+0.012357142857142856,0.18571428571428572,935.0,985.0,999.0
+0.012357142857142856,0.2142857142857143,926.0,991.0,999.0
+0.012357142857142856,0.24285714285714288,923.0,996.0,999.0
+0.012357142857142856,0.27142857142857146,917.0,997.0,999.0
+0.012357142857142856,0.30000000000000004,909.0,999.0,999.0
+0.012357142857142856,0.3285714285714286,898.0,1000.0,999.0
+0.012357142857142856,0.3571428571428572,892.0,1000.0,999.0
+0.012357142857142856,0.3857142857142858,883.0,1000.0,999.0
+0.012357142857142856,0.41428571428571437,879.0,1000.0,999.0
+0.012357142857142856,0.44285714285714284,859.0,1000.0,999.0
+0.012357142857142856,0.4714285714285714,856.0,1000.0,999.0
+0.012357142857142856,0.5,856.0,1000.0,999.0
+0.013,0.1,968.0,874.0,999.0
+0.013,0.1285714285714286,960.0,936.0,999.0
+0.013,0.15714285714285714,946.0,965.0,999.0
+0.013,0.18571428571428572,946.0,981.0,999.0
+0.013,0.2142857142857143,934.0,990.0,999.0
+0.013,0.24285714285714288,927.0,997.0,999.0
+0.013,0.27142857142857146,918.0,1000.0,999.0
+0.013,0.30000000000000004,908.0,1000.0,999.0
+0.013,0.3285714285714286,902.0,1000.0,999.0
+0.013,0.3571428571428572,887.0,1000.0,999.0
+0.013,0.3857142857142858,882.0,1000.0,999.0
+0.013,0.41428571428571437,873.0,1000.0,999.0
+0.013,0.44285714285714284,865.0,1000.0,999.0
+0.013,0.4714285714285714,858.0,1000.0,999.0
+0.013,0.5,854.0,1000.0,999.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-min.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-min.csv
new file mode 100644
index 0000000000..cc5281c13b
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-min.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,1.0,1.0,999.0
+0.004,0.1285714285714286,840.0,881.0,999.0
+0.004,0.15714285714285714,813.0,926.0,999.0
+0.004,0.18571428571428572,1.0,1.0,999.0
+0.004,0.2142857142857143,766.0,969.0,999.0
+0.004,0.24285714285714288,1.0,1.0,999.0
+0.004,0.27142857142857146,1.0,1.0,999.0
+0.004,0.30000000000000004,1.0,1.0,999.0
+0.004,0.3285714285714286,1.0,1.0,999.0
+0.004,0.3571428571428572,1.0,1.0,999.0
+0.004,0.3857142857142858,1.0,1.0,999.0
+0.004,0.41428571428571437,1.0,1.0,999.0
+0.004,0.44285714285714284,1.0,1.0,999.0
+0.004,0.4714285714285714,1.0,1.0,999.0
+0.004,0.5,1.0,1.0,999.0
+0.004642857142857143,0.1,885.0,829.0,999.0
+0.004642857142857143,0.1285714285714286,849.0,887.0,999.0
+0.004642857142857143,0.15714285714285714,1.0,1.0,999.0
+0.004642857142857143,0.18571428571428572,806.0,955.0,999.0
+0.004642857142857143,0.2142857142857143,780.0,972.0,999.0
+0.004642857142857143,0.24285714285714288,1.0,1.0,999.0
+0.004642857142857143,0.27142857142857146,747.0,987.0,999.0
+0.004642857142857143,0.30000000000000004,1.0,1.0,999.0
+0.004642857142857143,0.3285714285714286,1.0,1.0,999.0
+0.004642857142857143,0.3571428571428572,1.0,1.0,999.0
+0.004642857142857143,0.3857142857142858,1.0,1.0,999.0
+0.004642857142857143,0.41428571428571437,1.0,1.0,999.0
+0.004642857142857143,0.44285714285714284,1.0,1.0,999.0
+0.004642857142857143,0.4714285714285714,1.0,1.0,999.0
+0.004642857142857143,0.5,628.0,999.0,999.0
+0.005285714285714286,0.1,881.0,825.0,999.0
+0.005285714285714286,0.1285714285714286,854.0,900.0,999.0
+0.005285714285714286,0.15714285714285714,1.0,1.0,999.0
+0.005285714285714286,0.18571428571428572,814.0,956.0,999.0
+0.005285714285714286,0.2142857142857143,793.0,974.0,999.0
+0.005285714285714286,0.24285714285714288,1.0,1.0,999.0
+0.005285714285714286,0.27142857142857146,1.0,1.0,999.0
+0.005285714285714286,0.30000000000000004,749.0,991.0,999.0
+0.005285714285714286,0.3285714285714286,1.0,1.0,999.0
+0.005285714285714286,0.3571428571428572,1.0,1.0,999.0
+0.005285714285714286,0.3857142857142858,1.0,1.0,999.0
+0.005285714285714286,0.41428571428571437,683.0,998.0,999.0
+0.005285714285714286,0.44285714285714284,1.0,1.0,999.0
+0.005285714285714286,0.4714285714285714,1.0,1.0,999.0
+0.005285714285714286,0.5,1.0,1.0,999.0
+0.005928571428571429,0.1,902.0,822.0,999.0
+0.005928571428571429,0.1285714285714286,885.0,899.0,999.0
+0.005928571428571429,0.15714285714285714,856.0,938.0,999.0
+0.005928571428571429,0.18571428571428572,1.0,1.0,999.0
+0.005928571428571429,0.2142857142857143,1.0,1.0,999.0
+0.005928571428571429,0.24285714285714288,1.0,1.0,999.0
+0.005928571428571429,0.27142857142857146,1.0,1.0,999.0
+0.005928571428571429,0.30000000000000004,1.0,1.0,999.0
+0.005928571428571429,0.3285714285714286,751.0,995.0,999.0
+0.005928571428571429,0.3571428571428572,1.0,1.0,999.0
+0.005928571428571429,0.3857142857142858,1.0,1.0,999.0
+0.005928571428571429,0.41428571428571437,1.0,1.0,999.0
+0.005928571428571429,0.44285714285714284,1.0,1.0,999.0
+0.005928571428571429,0.4714285714285714,1.0,1.0,999.0
+0.005928571428571429,0.5,1.0,1.0,999.0
+0.006571428571428572,0.1,902.0,834.0,999.0
+0.006571428571428572,0.1285714285714286,1.0,1.0,999.0
+0.006571428571428572,0.15714285714285714,878.0,936.0,999.0
+0.006571428571428572,0.18571428571428572,851.0,961.0,999.0
+0.006571428571428572,0.2142857142857143,834.0,972.0,999.0
+0.006571428571428572,0.24285714285714288,821.0,986.0,999.0
+0.006571428571428572,0.27142857142857146,803.0,990.0,999.0
+0.006571428571428572,0.30000000000000004,785.0,994.0,999.0
+0.006571428571428572,0.3285714285714286,1.0,1.0,999.0
+0.006571428571428572,0.3571428571428572,1.0,1.0,999.0
+0.006571428571428572,0.3857142857142858,1.0,1.0,999.0
+0.006571428571428572,0.41428571428571437,1.0,1.0,999.0
+0.006571428571428572,0.44285714285714284,1.0,1.0,999.0
+0.006571428571428572,0.4714285714285714,1.0,1.0,999.0
+0.006571428571428572,0.5,1.0,1.0,999.0
+0.007214285714285715,0.1,920.0,819.0,999.0
+0.007214285714285715,0.1285714285714286,897.0,892.0,999.0
+0.007214285714285715,0.15714285714285714,1.0,1.0,999.0
+0.007214285714285715,0.18571428571428572,1.0,1.0,999.0
+0.007214285714285715,0.2142857142857143,1.0,1.0,999.0
+0.007214285714285715,0.24285714285714288,1.0,1.0,999.0
+0.007214285714285715,0.27142857142857146,1.0,1.0,999.0
+0.007214285714285715,0.30000000000000004,805.0,992.0,999.0
+0.007214285714285715,0.3285714285714286,1.0,1.0,999.0
+0.007214285714285715,0.3571428571428572,789.0,997.0,999.0
+0.007214285714285715,0.3857142857142858,1.0,1.0,999.0
+0.007214285714285715,0.41428571428571437,1.0,1.0,999.0
+0.007214285714285715,0.44285714285714284,1.0,1.0,999.0
+0.007214285714285715,0.4714285714285714,1.0,1.0,999.0
+0.007214285714285715,0.5,1.0,1.0,999.0
+0.007857142857142858,0.1,1.0,1.0,999.0
+0.007857142857142858,0.1285714285714286,901.0,893.0,999.0
+0.007857142857142858,0.15714285714285714,876.0,939.0,999.0
+0.007857142857142858,0.18571428571428572,869.0,962.0,999.0
+0.007857142857142858,0.2142857142857143,1.0,1.0,999.0
+0.007857142857142858,0.24285714285714288,1.0,1.0,999.0
+0.007857142857142858,0.27142857142857146,1.0,1.0,999.0
+0.007857142857142858,0.30000000000000004,807.0,993.0,999.0
+0.007857142857142858,0.3285714285714286,792.0,995.0,999.0
+0.007857142857142858,0.3571428571428572,782.0,996.0,999.0
+0.007857142857142858,0.3857142857142858,773.0,995.0,999.0
+0.007857142857142858,0.41428571428571437,1.0,1.0,999.0
+0.007857142857142858,0.44285714285714284,755.0,998.0,999.0
+0.007857142857142858,0.4714285714285714,745.0,998.0,999.0
+0.007857142857142858,0.5,732.0,999.0,999.0
+0.0085,0.1,918.0,840.0,999.0
+0.0085,0.1285714285714286,904.0,896.0,999.0
+0.0085,0.15714285714285714,883.0,938.0,999.0
+0.0085,0.18571428571428572,874.0,965.0,999.0
+0.0085,0.2142857142857143,1.0,1.0,999.0
+0.0085,0.24285714285714288,1.0,1.0,999.0
+0.0085,0.27142857142857146,806.0,991.0,999.0
+0.0085,0.30000000000000004,798.0,993.0,999.0
+0.0085,0.3285714285714286,1.0,1.0,999.0
+0.0085,0.3571428571428572,783.0,997.0,999.0
+0.0085,0.3857142857142858,779.0,998.0,999.0
+0.0085,0.41428571428571437,1.0,1.0,999.0
+0.0085,0.44285714285714284,1.0,1.0,999.0
+0.0085,0.4714285714285714,1.0,1.0,999.0
+0.0085,0.5,1.0,1.0,999.0
+0.009142857142857144,0.1,923.0,839.0,999.0
+0.009142857142857144,0.1285714285714286,900.0,895.0,999.0
+0.009142857142857144,0.15714285714285714,885.0,937.0,999.0
+0.009142857142857144,0.18571428571428572,874.0,965.0,999.0
+0.009142857142857144,0.2142857142857143,850.0,977.0,999.0
+0.009142857142857144,0.24285714285714288,831.0,980.0,999.0
+0.009142857142857144,0.27142857142857146,823.0,991.0,999.0
+0.009142857142857144,0.30000000000000004,808.0,992.0,999.0
+0.009142857142857144,0.3285714285714286,800.0,996.0,999.0
+0.009142857142857144,0.3571428571428572,791.0,997.0,999.0
+0.009142857142857144,0.3857142857142858,801.0,998.0,999.0
+0.009142857142857144,0.41428571428571437,793.0,998.0,999.0
+0.009142857142857144,0.44285714285714284,781.0,998.0,999.0
+0.009142857142857144,0.4714285714285714,1.0,1.0,999.0
+0.009142857142857144,0.5,1.0,1.0,999.0
+0.009785714285714286,0.1,1.0,1.0,999.0
+0.009785714285714286,0.1285714285714286,907.0,896.0,999.0
+0.009785714285714286,0.15714285714285714,1.0,1.0,999.0
+0.009785714285714286,0.18571428571428572,892.0,961.0,999.0
+0.009785714285714286,0.2142857142857143,881.0,977.0,999.0
+0.009785714285714286,0.24285714285714288,864.0,988.0,999.0
+0.009785714285714286,0.27142857142857146,1.0,1.0,999.0
+0.009785714285714286,0.30000000000000004,1.0,1.0,999.0
+0.009785714285714286,0.3285714285714286,1.0,1.0,999.0
+0.009785714285714286,0.3571428571428572,1.0,1.0,999.0
+0.009785714285714286,0.3857142857142858,809.0,998.0,999.0
+0.009785714285714286,0.41428571428571437,801.0,998.0,999.0
+0.009785714285714286,0.44285714285714284,794.0,998.0,999.0
+0.009785714285714286,0.4714285714285714,783.0,999.0,999.0
+0.009785714285714286,0.5,767.0,999.0,999.0
+0.01042857142857143,0.1,937.0,840.0,999.0
+0.01042857142857143,0.1285714285714286,919.0,903.0,999.0
+0.01042857142857143,0.15714285714285714,908.0,935.0,999.0
+0.01042857142857143,0.18571428571428572,1.0,1.0,999.0
+0.01042857142857143,0.2142857142857143,888.0,975.0,999.0
+0.01042857142857143,0.24285714285714288,874.0,987.0,999.0
+0.01042857142857143,0.27142857142857146,867.0,992.0,999.0
+0.01042857142857143,0.30000000000000004,848.0,994.0,999.0
+0.01042857142857143,0.3285714285714286,1.0,1.0,999.0
+0.01042857142857143,0.3571428571428572,1.0,1.0,999.0
+0.01042857142857143,0.3857142857142858,1.0,1.0,999.0
+0.01042857142857143,0.41428571428571437,802.0,998.0,999.0
+0.01042857142857143,0.44285714285714284,796.0,999.0,999.0
+0.01042857142857143,0.4714285714285714,786.0,999.0,999.0
+0.01042857142857143,0.5,777.0,999.0,999.0
+0.011071428571428572,0.1,939.0,841.0,999.0
+0.011071428571428572,0.1285714285714286,1.0,1.0,999.0
+0.011071428571428572,0.15714285714285714,912.0,935.0,999.0
+0.011071428571428572,0.18571428571428572,903.0,959.0,999.0
+0.011071428571428572,0.2142857142857143,883.0,975.0,999.0
+0.011071428571428572,0.24285714285714288,1.0,1.0,999.0
+0.011071428571428572,0.27142857142857146,1.0,1.0,999.0
+0.011071428571428572,0.30000000000000004,858.0,995.0,999.0
+0.011071428571428572,0.3285714285714286,848.0,996.0,999.0
+0.011071428571428572,0.3571428571428572,844.0,997.0,999.0
+0.011071428571428572,0.3857142857142858,835.0,998.0,999.0
+0.011071428571428572,0.41428571428571437,825.0,998.0,999.0
+0.011071428571428572,0.44285714285714284,814.0,998.0,999.0
+0.011071428571428572,0.4714285714285714,804.0,999.0,999.0
+0.011071428571428572,0.5,794.0,999.0,999.0
+0.011714285714285714,0.1,938.0,844.0,999.0
+0.011714285714285714,0.1285714285714286,915.0,904.0,999.0
+0.011714285714285714,0.15714285714285714,910.0,938.0,999.0
+0.011714285714285714,0.18571428571428572,903.0,959.0,999.0
+0.011714285714285714,0.2142857142857143,886.0,976.0,999.0
+0.011714285714285714,0.24285714285714288,878.0,987.0,999.0
+0.011714285714285714,0.27142857142857146,1.0,1.0,999.0
+0.011714285714285714,0.30000000000000004,1.0,1.0,999.0
+0.011714285714285714,0.3285714285714286,845.0,994.0,999.0
+0.011714285714285714,0.3571428571428572,1.0,1.0,999.0
+0.011714285714285714,0.3857142857142858,1.0,1.0,999.0
+0.011714285714285714,0.41428571428571437,1.0,1.0,999.0
+0.011714285714285714,0.44285714285714284,1.0,1.0,999.0
+0.011714285714285714,0.4714285714285714,1.0,1.0,999.0
+0.011714285714285714,0.5,1.0,1.0,999.0
+0.012357142857142856,0.1,944.0,835.0,999.0
+0.012357142857142856,0.1285714285714286,926.0,898.0,999.0
+0.012357142857142856,0.15714285714285714,916.0,927.0,999.0
+0.012357142857142856,0.18571428571428572,1.0,1.0,999.0
+0.012357142857142856,0.2142857142857143,885.0,976.0,999.0
+0.012357142857142856,0.24285714285714288,874.0,985.0,999.0
+0.012357142857142856,0.27142857142857146,1.0,1.0,999.0
+0.012357142857142856,0.30000000000000004,1.0,1.0,999.0
+0.012357142857142856,0.3285714285714286,852.0,994.0,999.0
+0.012357142857142856,0.3571428571428572,1.0,1.0,999.0
+0.012357142857142856,0.3857142857142858,1.0,1.0,999.0
+0.012357142857142856,0.41428571428571437,1.0,1.0,999.0
+0.012357142857142856,0.44285714285714284,1.0,1.0,999.0
+0.012357142857142856,0.4714285714285714,1.0,1.0,999.0
+0.012357142857142856,0.5,1.0,1.0,999.0
+0.013,0.1,949.0,841.0,999.0
+0.013,0.1285714285714286,933.0,906.0,999.0
+0.013,0.15714285714285714,919.0,941.0,999.0
+0.013,0.18571428571428572,1.0,1.0,999.0
+0.013,0.2142857142857143,1.0,1.0,999.0
+0.013,0.24285714285714288,894.0,985.0,999.0
+0.013,0.27142857142857146,890.0,991.0,999.0
+0.013,0.30000000000000004,875.0,993.0,999.0
+0.013,0.3285714285714286,868.0,996.0,999.0
+0.013,0.3571428571428572,857.0,997.0,999.0
+0.013,0.3857142857142858,1.0,1.0,999.0
+0.013,0.41428571428571437,1.0,1.0,999.0
+0.013,0.44285714285714284,1.0,1.0,999.0
+0.013,0.4714285714285714,1.0,1.0,999.0
+0.013,0.5,1.0,1.0,999.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-var.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-var.csv
new file mode 100644
index 0000000000..a7b0b80edf
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/max-var.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,37480.45999999999,33530.22749999999,0.0
+0.004,0.1285714285714286,125.8475,123.04749999999999,0.0
+0.004,0.15714285714285714,186.6275,28.747500000000002,0.0
+0.004,0.18571428571428572,31697.660000000003,44096.84749999999,0.0
+0.004,0.2142857142857143,185.09000000000003,22.7875,0.0
+0.004,0.24285714285714288,53719.32749999999,87337.2475,0.0
+0.004,0.27142857142857146,90726.62749999997,157635.6475,0.0
+0.004,0.30000000000000004,69001.26000000001,126246.16,0.0
+0.004,0.3285714285714286,24889.6475,47177.1875,0.0
+0.004,0.3571428571428572,23759.5475,47290.89,0.0
+0.004,0.3857142857142858,22688.25,47331.61,0.0
+0.004,0.41428571428571437,40512.8475,89720.84000000001,0.0
+0.004,0.44285714285714284,20760.609999999997,47345.5475,0.0
+0.004,0.4714285714285714,51738.09,127095.72750000001,0.0
+0.004,0.5,61739.12749999999,159401.15,0.0
+0.004642857142857143,0.1,80.44,146.54,0.0
+0.004642857142857143,0.1285714285714286,167.61000000000004,67.62750000000003,0.0
+0.004642857142857143,0.15714285714285714,65633.69,80139.3475,0.0
+0.004642857142857143,0.18571428571428572,172.0875,30.55,0.0
+0.004642857142857143,0.2142857142857143,274.9474999999999,13.959999999999999,0.0
+0.004642857142857143,0.24285714285714288,30065.42750000001,46384.447499999995,0.0
+0.004642857142857143,0.27142857142857146,184.9,5.36,0.0
+0.004642857142857143,0.30000000000000004,27487.739999999998,47009.64750000001,0.0
+0.004642857142857143,0.3285714285714286,26263.9275,47138.22749999999,0.0
+0.004642857142857143,0.3571428571428572,47471.96000000001,89541.70999999999,0.0
+0.004642857142857143,0.3857142857142858,81051.6275,159401.25,0.0
+0.004642857142857143,0.41428571428571437,43797.0475,89690.8475,0.0
+0.004642857142857143,0.44285714285714284,22349.56,47375.4875,0.0
+0.004642857142857143,0.4714285714285714,21537.29,47385.42749999999,0.0
+0.004642857142857143,0.5,329.90999999999997,0.16000000000000003,0.0
+0.005285714285714286,0.1,90.64,119.74750000000002,0.0
+0.005285714285714286,0.1285714285714286,162.5475,64.84,0.0
+0.005285714285714286,0.15714285714285714,68000.9875,80484.9275,0.0
+0.005285714285714286,0.18571428571428572,194.1,28.127500000000005,0.0
+0.005285714285714286,0.2142857142857143,237.64000000000001,11.71,0.0
+0.005285714285714286,0.24285714285714288,59347.027500000004,87843.19,0.0
+0.005285714285714286,0.27142857142857146,29987.3875,46835.0875,0.0
+0.005285714285714286,0.30000000000000004,152.8875,5.147500000000001,0.0
+0.005285714285714286,0.3285714285714286,27652.7275,47208.247500000005,0.0
+0.005285714285714286,0.3571428571428572,50622.490000000005,89621.49000000002,0.0
+0.005285714285714286,0.3857142857142858,25723.927499999998,47330.71000000001,0.0
+0.005285714285714286,0.41428571428571437,153.9475,0.4400000000000002,0.0
+0.005285714285714286,0.44285714285714284,23677.739999999998,47385.22749999999,0.0
+0.005285714285714286,0.4714285714285714,22759.45,47390.19,0.0
+0.005285714285714286,0.5,21814.1875,47405.0475,0.0
+0.005928571428571429,0.1,61.147500000000015,173.44749999999996,0.0
+0.005928571428571429,0.1285714285714286,77.30999999999999,59.6,0.0
+0.005928571428571429,0.15714285714285714,77.8275,43.25999999999999,0.0
+0.005928571428571429,0.18571428571428572,35207.64750000001,44626.12750000001,0.0
+0.005928571428571429,0.2142857142857143,64387.33999999998,86745.6475,0.0
+0.005928571428571429,0.24285714285714288,61643.94,87859.21000000002,0.0
+0.005928571428571429,0.27142857142857146,59372.159999999996,88838.82749999998,0.0
+0.005928571428571429,0.30000000000000004,30167.639999999996,47139.32750000001,0.0
+0.005928571428571429,0.3285714285714286,143.0275,2.3475000000000006,0.0
+0.005928571428571429,0.3571428571428572,54221.12749999999,89491.3475,0.0
+0.005928571428571429,0.3857142857142858,52471.209999999985,89630.82749999998,0.0
+0.005928571428571429,0.41428571428571437,50582.847499999996,89690.94749999998,0.0
+0.005928571428571429,0.44285714285714284,49073.34,89610.9475,0.0
+0.005928571428571429,0.4714285714285714,47343.1275,89660.76,0.0
+0.005928571428571429,0.5,81242.95,159460.72749999998,0.0
+0.006571428571428572,0.1,91.46,97.2875,0.0
+0.006571428571428572,0.1285714285714286,39105.54,39521.527500000004,0.0
+0.006571428571428572,0.15714285714285714,45.3875,54.8275,0.0
+0.006571428571428572,0.18571428571428572,151.72749999999996,25.047500000000003,0.0
+0.006571428571428572,0.2142857142857143,138.5875,16.76,0.0
+0.006571428571428572,0.24285714285714288,129.4275,5.6875,0.0
+0.006571428571428572,0.27142857142857146,175.11,5.4,0.0
+0.006571428571428572,0.30000000000000004,207.4875,3.55,0.0
+0.006571428571428572,0.3285714285714286,58366.7475,89441.95999999999,0.0
+0.006571428571428572,0.3571428571428572,29967.290000000008,47265.9275,0.0
+0.006571428571428572,0.3857142857142858,55056.3275,89630.82749999998,0.0
+0.006571428571428572,0.41428571428571437,53262.409999999996,89690.94749999998,0.0
+0.006571428571428572,0.44285714285714284,51507.7475,89620.94,0.0
+0.006571428571428572,0.4714285714285714,49928.5275,89800.2,0.0
+0.006571428571428572,0.5,48133.8875,89820.09000000001,0.0
+0.007214285714285715,0.1,34.04,149.31000000000003,0.0
+0.007214285714285715,0.1285714285714286,66.64750000000001,105.1875,0.0
+0.007214285714285715,0.15714285714285714,38050.447499999995,42754.3475,0.0
+0.007214285714285715,0.18571428571428572,36763.7475,44852.08999999999,0.0
+0.007214285714285715,0.2142857142857143,67784.5475,86650.0,0.0
+0.007214285714285715,0.24285714285714288,65193.42749999999,87771.6875,0.0
+0.007214285714285715,0.27142857142857146,33682.427500000005,46852.04749999999,0.0
+0.007214285714285715,0.30000000000000004,172.5275,2.4875,0.0
+0.007214285714285715,0.3285714285714286,31714.690000000002,47202.0,0.0
+0.007214285714285715,0.3571428571428572,103.28999999999999,0.9400000000000001,0.0
+0.007214285714285715,0.3857142857142858,29918.95,47321.16,0.0
+0.007214285714285715,0.41428571428571437,54962.947499999995,89740.41,0.0
+0.007214285714285715,0.44285714285714284,53594.94,89780.29000000001,0.0
+0.007214285714285715,0.4714285714285714,52216.439999999995,89800.2,0.0
+0.007214285714285715,0.5,50592.6275,89820.09000000001,0.0
+0.007857142857142858,0.1,41314.55,34357.310000000005,0.0
+0.007857142857142858,0.1285714285714286,67.84,84.74750000000002,0.0
+0.007857142857142858,0.15714285714285714,215.15,46.9875,0.0
+0.007857142857142858,0.18571428571428572,111.71000000000004,25.6475,0.0
+0.007857142857142858,0.2142857142857143,68063.79000000001,86817.59,0.0
+0.007857142857142858,0.24285714285714288,34950.34,46465.55,0.0
+0.007857142857142858,0.27142857142857146,63887.2275,88821.04750000002,0.0
+0.007857142857142858,0.30000000000000004,150.61,3.8875,0.0
+0.007857142857142858,0.3285714285714286,158.8,1.31,0.0
+0.007857142857142858,0.3571428571428572,193.64749999999998,1.1275000000000002,0.0
+0.007857142857142858,0.3857142857142858,194.34750000000003,1.2900000000000003,0.0
+0.007857142857142858,0.41428571428571437,29631.327500000003,47360.54,0.0
+0.007857142857142858,0.44285714285714284,221.4475,0.2875,0.0
+0.007857142857142858,0.4714285714285714,194.73999999999998,0.25999999999999995,0.0
+0.007857142857142858,0.5,176.8875,0.09,0.0
+0.0085,0.1,57.18999999999998,54.34750000000001,0.0
+0.0085,0.1285714285714286,62.3875,54.7,0.0
+0.0085,0.15714285714285714,209.72750000000002,57.74000000000001,0.0
+0.0085,0.18571428571428572,96.22749999999999,19.627499999999998,0.0
+0.0085,0.2142857142857143,36748.4475,45827.6,0.0
+0.0085,0.24285714285714288,35716.9875,46492.1875,0.0
+0.0085,0.27142857142857146,253.62750000000005,4.25,0.0
+0.0085,0.30000000000000004,221.7875,3.9275000000000007,0.0
+0.0085,0.3285714285714286,33334.4475,47226.5875,0.0
+0.0085,0.3571428571428572,200.42749999999998,1.01,0.0
+0.0085,0.3857142857142858,158.14749999999998,0.35,0.0
+0.0085,0.41428571428571437,30949.7875,47385.22749999999,0.0
+0.0085,0.44285714285714284,30186.247499999998,47400.1,0.0
+0.0085,0.4714285714285714,29411.460000000003,47400.1,0.0
+0.0085,0.5,28694.79,47405.0475,0.0
+0.009142857142857144,0.1,58.94750000000001,191.4275,0.0
+0.009142857142857144,0.1285714285714286,107.54,103.34,0.0
+0.009142857142857144,0.15714285714285714,106.41000000000004,50.00999999999999,0.0
+0.009142857142857144,0.18571428571428572,120.6,10.7875,0.0
+0.009142857142857144,0.2142857142857143,202.23999999999998,15.927499999999998,0.0
+0.009142857142857144,0.24285714285714288,196.45,11.939999999999998,0.0
+0.009142857142857144,0.27142857142857146,192.33999999999997,4.65,0.0
+0.009142857142857144,0.30000000000000004,201.1275,4.027500000000001,0.0
+0.009142857142857144,0.3285714285714286,206.02749999999997,1.3875,0.0
+0.009142857142857144,0.3571428571428572,211.14000000000001,1.01,0.0
+0.009142857142857144,0.3857142857142858,158.1475,0.5100000000000001,0.0
+0.009142857142857144,0.41428571428571437,188.0275,0.32749999999999996,0.0
+0.009142857142857144,0.44285714285714284,205.45999999999998,0.25999999999999995,0.0
+0.009142857142857144,0.4714285714285714,30237.440000000002,47390.19,0.0
+0.009142857142857144,0.5,29499.847500000003,47395.147499999985,0.0
+0.009785714285714286,0.1,79827.3275,65545.84000000001,0.0
+0.009785714285714286,0.1285714285714286,59.75,60.65,0.0
+0.009785714285714286,0.15714285714285714,40011.55,42911.1475,0.0
+0.009785714285714286,0.18571428571428572,56.459999999999994,21.127499999999998,0.0
+0.009785714285714286,0.2142857142857143,70.5,12.060000000000002,0.0
+0.009785714285714286,0.24285714285714288,112.71000000000001,5.55,0.0
+0.009785714285714286,0.27142857142857146,36144.81,46805.6,0.0
+0.009785714285714286,0.30000000000000004,35347.7875,47118.1275,0.0
+0.009785714285714286,0.3285714285714286,34569.96000000001,47236.927500000005,0.0
+0.009785714285714286,0.3571428571428572,33628.31,47296.0475,0.0
+0.009785714285714286,0.3857142857142858,137.85999999999999,0.5100000000000001,0.0
+0.009785714285714286,0.41428571428571437,164.6475,0.32749999999999996,0.0
+0.009785714285714286,0.44285714285714284,187.32750000000001,0.25999999999999995,0.0
+0.009785714285714286,0.4714285714285714,203.64749999999998,0.12750000000000003,0.0
+0.009785714285714286,0.5,170.56,0.047500000000000014,0.0
+0.01042857142857143,0.1,35.25,106.98999999999998,0.0
+0.01042857142857143,0.1285714285714286,54.90999999999999,76.54750000000001,0.0
+0.01042857142857143,0.15714285714285714,73.2875,61.8275,0.0
+0.01042857142857143,0.18571428571428572,39489.8875,44914.747500000005,0.0
+0.01042857142857143,0.2142857142857143,69.44750000000002,14.5,0.0
+0.01042857142857143,0.24285714285714288,69.4875,7.19,0.0
+0.01042857142857143,0.27142857142857146,78.50999999999999,2.6,0.0
+0.01042857142857143,0.30000000000000004,75.25999999999999,2.34,0.0
+0.01042857142857143,0.3285714285714286,34953.747500000005,47247.0475,0.0
+0.01042857142857143,0.3571428571428572,34320.55,47325.9875,0.0
+0.01042857142857143,0.3857142857142858,33586.64,47345.747500000005,0.0
+0.01042857142857143,0.41428571428571437,127.32750000000001,0.41000000000000003,0.0
+0.01042857142857143,0.44285714285714284,168.11,0.12750000000000003,0.0
+0.01042857142857143,0.4714285714285714,144.59,0.047500000000000014,0.0
+0.01042857142857143,0.5,144.04749999999996,0.047500000000000014,0.0
+0.011071428571428572,0.1,41.989999999999995,119.22749999999999,0.0
+0.011071428571428572,0.1285714285714286,41795.61,39955.03999999999,0.0
+0.011071428571428572,0.15714285714285714,64.3275,54.927499999999995,0.0
+0.011071428571428572,0.18571428571428572,75.00999999999999,34.7,0.0
+0.011071428571428572,0.2142857142857143,90.04,18.810000000000002,0.0
+0.011071428571428572,0.24285714285714288,38001.4875,46630.759999999995,0.0
+0.011071428571428572,0.27142857142857146,37176.25,46983.76,0.0
+0.011071428571428572,0.30000000000000004,98.21,0.8475000000000001,0.0
+0.011071428571428572,0.3285714285714286,100.85,0.9875,0.0
+0.011071428571428572,0.3571428571428572,102.75999999999999,0.79,0.0
+0.011071428571428572,0.3857142857142858,97.44000000000001,0.44000000000000006,0.0
+0.011071428571428572,0.41428571428571437,122.62749999999997,0.4475000000000001,0.0
+0.011071428571428572,0.44285714285714284,117.14750000000001,0.32749999999999996,0.0
+0.011071428571428572,0.4714285714285714,130.7275,0.12750000000000003,0.0
+0.011071428571428572,0.5,118.39000000000001,0.12750000000000003,0.0
+0.011714285714285714,0.1,47.32750000000001,114.75,0.0
+0.011714285714285714,0.1285714285714286,104.12749999999998,50.459999999999994,0.0
+0.011714285714285714,0.15714285714285714,101.54,49.64,0.0
+0.011714285714285714,0.18571428571428572,82.22749999999999,36.2475,0.0
+0.011714285714285714,0.2142857142857143,100.1275,18.110000000000003,0.0
+0.011714285714285714,0.24285714285714288,78.4875,7.727499999999997,0.0
+0.011714285714285714,0.27142857142857146,37596.4875,46983.86,0.0
+0.011714285714285714,0.30000000000000004,36970.39000000001,47103.9,0.0
+0.011714285714285714,0.3285714285714286,181.59,2.1875,0.0
+0.011714285714285714,0.3571428571428572,67260.92749999999,89601.6,0.0
+0.011714285714285714,0.3857142857142858,35035.447499999995,47335.527500000004,0.0
+0.011714285714285714,0.41428571428571437,91392.6275,127185.34749999999,0.0
+0.011714285714285714,0.44285714285714284,89856.0275,127230.18999999999,0.0
+0.011714285714285714,0.4714285714285714,87866.85999999999,127230.18999999999,0.0
+0.011714285714285714,0.5,86269.8475,127245.12749999999,0.0
+0.012357142857142856,0.1,34.82750000000001,114.62749999999998,0.0
+0.012357142857142856,0.1285714285714286,49.02750000000001,73.92750000000001,0.0
+0.012357142857142856,0.15714285714285714,40.69,77.0875,0.0
+0.012357142857142856,0.18571428571428572,40161.847499999996,44901.1275,0.0
+0.012357142857142856,0.2142857142857143,117.1,15.147500000000003,0.0
+0.012357142857142856,0.24285714285714288,148.14000000000001,8.56,0.0
+0.012357142857142856,0.27142857142857146,38097.22749999999,46907.2,0.0
+0.012357142857142856,0.30000000000000004,37331.847499999996,47103.9,0.0
+0.012357142857142856,0.3285714285714286,155.3875,2.31,0.0
+0.012357142857142856,0.3571428571428572,67995.61,89601.6,0.0
+0.012357142857142856,0.3857142857142858,35302.5875,47335.527500000004,0.0
+0.012357142857142856,0.41428571428571437,92809.84750000002,127200.3,0.0
+0.012357142857142856,0.44285714285714284,64202.2875,89770.32749999998,0.0
+0.012357142857142856,0.4714285714285714,63003.1475,89790.24749999998,0.0
+0.012357142857142856,0.5,62004.92749999999,89810.14749999999,0.0
+0.013,0.1,20.74,68.8875,0.0
+0.013,0.1285714285714286,38.4875,65.18999999999998,0.0
+0.013,0.15714285714285714,56.85,28.9875,0.0
+0.013,0.18571428571428572,40640.0475,44969.8275,0.0
+0.013,0.2142857142857143,39889.189999999995,46037.76,0.0
+0.013,0.24285714285714288,68.12750000000001,14.239999999999998,0.0
+0.013,0.27142857142857146,65.34,4.3100000000000005,0.0
+0.013,0.30000000000000004,79.4,3.210000000000001,0.0
+0.013,0.3285714285714286,65.3275,1.3474999999999997,0.0
+0.013,0.3571428571428572,53.94,0.6275000000000002,0.0
+0.013,0.3857142857142858,67484.1,89740.71,0.0
+0.013,0.41428571428571437,66391.24,89750.6875,0.0
+0.013,0.44285714285714284,65246.7475,89770.32749999998,0.0
+0.013,0.4714285714285714,63947.06,89790.24749999998,0.0
+0.013,0.5,62945.727500000015,89810.14749999999,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-avg.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-avg.csv
new file mode 100644
index 0000000000..a6c9e4c7db
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-avg.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,0.95,0.0,49.95
+0.004,0.1285714285714286,1.0,0.0,0.0
+0.004,0.15714285714285714,1.0,0.0,0.0
+0.004,0.18571428571428572,0.95,0.0,49.95
+0.004,0.2142857142857143,1.0,0.0,0.0
+0.004,0.24285714285714288,0.9,0.0,99.9
+0.004,0.27142857142857146,0.8,0.0,199.8
+0.004,0.30000000000000004,0.85,0.0,149.85
+0.004,0.3285714285714286,0.9,0.0,50.0
+0.004,0.3571428571428572,0.65,0.0,50.05
+0.004,0.3857142857142858,0.3,0.0,50.1
+0.004,0.41428571428571437,0.25,0.0,100.1
+0.004,0.44285714285714284,0.25,0.0,50.3
+0.004,0.4714285714285714,0.05,0.0,150.3
+0.004,0.5,0.05,0.0,200.45
+0.004642857142857143,0.1,1.0,0.0,0.0
+0.004642857142857143,0.1285714285714286,1.0,0.0,0.0
+0.004642857142857143,0.15714285714285714,0.9,0.0,99.9
+0.004642857142857143,0.18571428571428572,1.0,0.0,0.0
+0.004642857142857143,0.2142857142857143,1.0,0.0,0.0
+0.004642857142857143,0.24285714285714288,0.95,0.0,49.95
+0.004642857142857143,0.27142857142857146,1.0,0.0,0.0
+0.004642857142857143,0.30000000000000004,0.95,0.0,49.95
+0.004642857142857143,0.3285714285714286,0.9,0.0,49.95
+0.004642857142857143,0.3571428571428572,0.75,0.0,99.9
+0.004642857142857143,0.3857142857142858,0.4,0.0,199.8
+0.004642857142857143,0.41428571428571437,0.45,0.0,99.9
+0.004642857142857143,0.44285714285714284,0.2,0.0,49.95
+0.004642857142857143,0.4714285714285714,0.1,0.0,49.95
+0.004642857142857143,0.5,0.15,0.0,0.05
+0.005285714285714286,0.1,1.0,0.0,0.0
+0.005285714285714286,0.1285714285714286,1.0,0.0,0.0
+0.005285714285714286,0.15714285714285714,0.9,0.0,99.9
+0.005285714285714286,0.18571428571428572,1.0,0.0,0.0
+0.005285714285714286,0.2142857142857143,1.0,0.0,0.0
+0.005285714285714286,0.24285714285714288,0.9,0.0,99.9
+0.005285714285714286,0.27142857142857146,0.95,0.0,49.95
+0.005285714285714286,0.30000000000000004,0.95,0.0,0.0
+0.005285714285714286,0.3285714285714286,0.75,0.0,49.95
+0.005285714285714286,0.3571428571428572,0.6,0.0,99.9
+0.005285714285714286,0.3857142857142858,0.55,0.0,49.95
+0.005285714285714286,0.41428571428571437,0.3,0.0,0.0
+0.005285714285714286,0.44285714285714284,0.2,0.0,49.95
+0.005285714285714286,0.4714285714285714,0.15,0.0,49.95
+0.005285714285714286,0.5,0.0,0.0,49.95
+0.005928571428571429,0.1,1.0,0.0,0.0
+0.005928571428571429,0.1285714285714286,1.0,0.0,0.0
+0.005928571428571429,0.15714285714285714,1.0,0.0,0.0
+0.005928571428571429,0.18571428571428572,0.95,0.0,49.95
+0.005928571428571429,0.2142857142857143,0.9,0.0,99.9
+0.005928571428571429,0.24285714285714288,0.9,0.0,99.85
+0.005928571428571429,0.27142857142857146,0.9,0.0,99.9
+0.005928571428571429,0.30000000000000004,0.9,0.0,49.95
+0.005928571428571429,0.3285714285714286,0.75,0.0,0.0
+0.005928571428571429,0.3571428571428572,0.7,0.0,99.85
+0.005928571428571429,0.3857142857142858,0.75,0.0,99.9
+0.005928571428571429,0.41428571428571437,0.45,0.0,99.9
+0.005928571428571429,0.44285714285714284,0.45,0.0,99.85
+0.005928571428571429,0.4714285714285714,0.25,0.0,99.85
+0.005928571428571429,0.5,0.1,0.0,199.7
+0.006571428571428572,0.1,1.0,0.0,0.0
+0.006571428571428572,0.1285714285714286,0.95,0.0,49.95
+0.006571428571428572,0.15714285714285714,1.0,0.0,0.0
+0.006571428571428572,0.18571428571428572,1.0,0.0,0.0
+0.006571428571428572,0.2142857142857143,1.0,0.0,0.0
+0.006571428571428572,0.24285714285714288,1.0,0.0,0.0
+0.006571428571428572,0.27142857142857146,1.0,0.0,0.0
+0.006571428571428572,0.30000000000000004,0.95,0.0,0.0
+0.006571428571428572,0.3285714285714286,0.85,0.0,99.9
+0.006571428571428572,0.3571428571428572,0.8,0.0,49.95
+0.006571428571428572,0.3857142857142858,0.75,0.0,99.9
+0.006571428571428572,0.41428571428571437,0.45,0.0,99.9
+0.006571428571428572,0.44285714285714284,0.4,0.0,99.85
+0.006571428571428572,0.4714285714285714,0.1,0.0,99.9
+0.006571428571428572,0.5,0.0,0.0,99.9
+0.007214285714285715,0.1,1.0,0.0,0.0
+0.007214285714285715,0.1285714285714286,1.0,0.0,0.0
+0.007214285714285715,0.15714285714285714,0.95,0.0,49.95
+0.007214285714285715,0.18571428571428572,0.95,0.0,49.95
+0.007214285714285715,0.2142857142857143,0.9,0.0,99.9
+0.007214285714285715,0.24285714285714288,0.9,0.0,99.9
+0.007214285714285715,0.27142857142857146,0.95,0.0,49.95
+0.007214285714285715,0.30000000000000004,1.0,0.0,0.0
+0.007214285714285715,0.3285714285714286,0.85,0.0,49.95
+0.007214285714285715,0.3571428571428572,0.8,0.0,0.0
+0.007214285714285715,0.3857142857142858,0.55,0.0,49.95
+0.007214285714285715,0.41428571428571437,0.4,0.0,99.9
+0.007214285714285715,0.44285714285714284,0.2,0.0,99.9
+0.007214285714285715,0.4714285714285714,0.1,0.0,99.9
+0.007214285714285715,0.5,0.0,0.0,99.9
+0.007857142857142858,0.1,0.95,0.0,49.95
+0.007857142857142858,0.1285714285714286,1.0,0.0,0.0
+0.007857142857142858,0.15714285714285714,1.0,0.0,0.0
+0.007857142857142858,0.18571428571428572,1.0,0.0,0.0
+0.007857142857142858,0.2142857142857143,0.9,0.0,99.9
+0.007857142857142858,0.24285714285714288,0.95,0.0,49.95
+0.007857142857142858,0.27142857142857146,0.9,0.0,99.9
+0.007857142857142858,0.30000000000000004,0.9,0.0,0.0
+0.007857142857142858,0.3285714285714286,0.9,0.0,0.0
+0.007857142857142858,0.3571428571428572,0.65,0.0,0.0
+0.007857142857142858,0.3857142857142858,0.6,0.0,0.0
+0.007857142857142858,0.41428571428571437,0.35,0.0,49.95
+0.007857142857142858,0.44285714285714284,0.2,0.0,0.0
+0.007857142857142858,0.4714285714285714,0.15,0.0,0.0
+0.007857142857142858,0.5,0.1,0.0,0.0
+0.0085,0.1,1.0,0.0,0.0
+0.0085,0.1285714285714286,1.0,0.0,0.0
+0.0085,0.15714285714285714,1.0,0.0,0.0
+0.0085,0.18571428571428572,1.0,0.0,0.0
+0.0085,0.2142857142857143,0.95,0.0,49.95
+0.0085,0.24285714285714288,0.95,0.0,49.95
+0.0085,0.27142857142857146,1.0,0.0,0.0
+0.0085,0.30000000000000004,0.9,0.0,0.0
+0.0085,0.3285714285714286,0.9,0.0,49.95
+0.0085,0.3571428571428572,0.7,0.0,0.0
+0.0085,0.3857142857142858,0.45,0.0,0.0
+0.0085,0.41428571428571437,0.2,0.0,49.95
+0.0085,0.44285714285714284,0.05,0.0,49.95
+0.0085,0.4714285714285714,0.05,0.0,49.95
+0.0085,0.5,0.0,0.0,49.95
+0.009142857142857144,0.1,1.0,0.0,0.0
+0.009142857142857144,0.1285714285714286,1.0,0.0,0.0
+0.009142857142857144,0.15714285714285714,1.0,0.0,0.0
+0.009142857142857144,0.18571428571428572,1.0,0.0,0.0
+0.009142857142857144,0.2142857142857143,1.0,0.0,0.0
+0.009142857142857144,0.24285714285714288,1.0,0.0,0.0
+0.009142857142857144,0.27142857142857146,1.0,0.0,0.0
+0.009142857142857144,0.30000000000000004,0.9,0.0,0.0
+0.009142857142857144,0.3285714285714286,0.9,0.0,0.0
+0.009142857142857144,0.3571428571428572,0.7,0.0,0.0
+0.009142857142857144,0.3857142857142858,0.55,0.0,0.0
+0.009142857142857144,0.41428571428571437,0.3,0.0,0.0
+0.009142857142857144,0.44285714285714284,0.15,0.0,0.0
+0.009142857142857144,0.4714285714285714,0.15,0.0,49.95
+0.009142857142857144,0.5,0.1,0.0,49.95
+0.009785714285714286,0.1,0.9,0.0,99.9
+0.009785714285714286,0.1285714285714286,1.0,0.0,0.0
+0.009785714285714286,0.15714285714285714,0.95,0.0,49.95
+0.009785714285714286,0.18571428571428572,1.0,0.0,0.0
+0.009785714285714286,0.2142857142857143,1.0,0.0,0.0
+0.009785714285714286,0.24285714285714288,1.0,0.0,0.0
+0.009785714285714286,0.27142857142857146,0.95,0.0,49.95
+0.009785714285714286,0.30000000000000004,0.95,0.0,49.95
+0.009785714285714286,0.3285714285714286,0.75,0.0,49.95
+0.009785714285714286,0.3571428571428572,0.75,0.0,49.95
+0.009785714285714286,0.3857142857142858,0.55,0.0,0.0
+0.009785714285714286,0.41428571428571437,0.3,0.0,0.0
+0.009785714285714286,0.44285714285714284,0.15,0.0,0.0
+0.009785714285714286,0.4714285714285714,0.15,0.0,0.0
+0.009785714285714286,0.5,0.05,0.0,0.0
+0.01042857142857143,0.1,1.0,0.0,0.0
+0.01042857142857143,0.1285714285714286,1.0,0.0,0.0
+0.01042857142857143,0.15714285714285714,1.0,0.0,0.0
+0.01042857142857143,0.18571428571428572,0.95,0.0,49.95
+0.01042857142857143,0.2142857142857143,1.0,0.0,0.0
+0.01042857142857143,0.24285714285714288,1.0,0.0,0.0
+0.01042857142857143,0.27142857142857146,1.0,0.0,0.0
+0.01042857142857143,0.30000000000000004,1.0,0.0,0.0
+0.01042857142857143,0.3285714285714286,0.75,0.0,49.95
+0.01042857142857143,0.3571428571428572,0.55,0.0,49.95
+0.01042857142857143,0.3857142857142858,0.45,0.0,49.95
+0.01042857142857143,0.41428571428571437,0.2,0.0,0.0
+0.01042857142857143,0.44285714285714284,0.15,0.0,0.0
+0.01042857142857143,0.4714285714285714,0.05,0.0,0.0
+0.01042857142857143,0.5,0.05,0.0,0.0
+0.011071428571428572,0.1,1.0,0.0,0.0
+0.011071428571428572,0.1285714285714286,0.95,0.0,49.95
+0.011071428571428572,0.15714285714285714,1.0,0.0,0.0
+0.011071428571428572,0.18571428571428572,1.0,0.0,0.0
+0.011071428571428572,0.2142857142857143,1.0,0.0,0.0
+0.011071428571428572,0.24285714285714288,0.95,0.0,49.95
+0.011071428571428572,0.27142857142857146,0.95,0.0,49.95
+0.011071428571428572,0.30000000000000004,1.0,0.0,0.0
+0.011071428571428572,0.3285714285714286,0.9,0.0,0.0
+0.011071428571428572,0.3571428571428572,0.75,0.0,0.0
+0.011071428571428572,0.3857142857142858,0.5,0.0,0.0
+0.011071428571428572,0.41428571428571437,0.35,0.0,0.0
+0.011071428571428572,0.44285714285714284,0.3,0.0,0.0
+0.011071428571428572,0.4714285714285714,0.15,0.0,0.0
+0.011071428571428572,0.5,0.15,0.0,0.0
+0.011714285714285714,0.1,1.0,0.0,0.0
+0.011714285714285714,0.1285714285714286,1.0,0.0,0.0
+0.011714285714285714,0.15714285714285714,1.0,0.0,0.0
+0.011714285714285714,0.18571428571428572,1.0,0.0,0.0
+0.011714285714285714,0.2142857142857143,1.0,0.0,0.0
+0.011714285714285714,0.24285714285714288,1.0,0.0,0.0
+0.011714285714285714,0.27142857142857146,0.95,0.0,49.95
+0.011714285714285714,0.30000000000000004,0.95,0.0,49.95
+0.011714285714285714,0.3285714285714286,0.85,0.0,0.0
+0.011714285714285714,0.3571428571428572,0.65,0.0,99.9
+0.011714285714285714,0.3857142857142858,0.6,0.0,49.95
+0.011714285714285714,0.41428571428571437,0.2,0.0,149.85
+0.011714285714285714,0.44285714285714284,0.05,0.0,149.85
+0.011714285714285714,0.4714285714285714,0.05,0.0,149.85
+0.011714285714285714,0.5,0.0,0.0,149.85
+0.012357142857142856,0.1,1.0,0.0,0.0
+0.012357142857142856,0.1285714285714286,1.0,0.0,0.0
+0.012357142857142856,0.15714285714285714,1.0,0.0,0.0
+0.012357142857142856,0.18571428571428572,0.95,0.0,49.95
+0.012357142857142856,0.2142857142857143,1.0,0.0,0.0
+0.012357142857142856,0.24285714285714288,1.0,0.0,0.0
+0.012357142857142856,0.27142857142857146,0.95,0.0,49.95
+0.012357142857142856,0.30000000000000004,0.95,0.0,49.95
+0.012357142857142856,0.3285714285714286,0.8,0.0,0.0
+0.012357142857142856,0.3571428571428572,0.65,0.0,99.9
+0.012357142857142856,0.3857142857142858,0.6,0.0,49.95
+0.012357142857142856,0.41428571428571437,0.15,0.0,149.85
+0.012357142857142856,0.44285714285714284,0.25,0.0,99.9
+0.012357142857142856,0.4714285714285714,0.15,0.0,99.9
+0.012357142857142856,0.5,0.05,0.0,99.9
+0.013,0.1,1.0,0.0,0.0
+0.013,0.1285714285714286,1.0,0.0,0.0
+0.013,0.15714285714285714,1.0,0.0,0.0
+0.013,0.18571428571428572,0.95,0.0,49.95
+0.013,0.2142857142857143,0.95,0.0,49.95
+0.013,0.24285714285714288,1.0,0.0,0.0
+0.013,0.27142857142857146,0.95,0.0,0.0
+0.013,0.30000000000000004,0.9,0.0,0.0
+0.013,0.3285714285714286,0.9,0.0,0.0
+0.013,0.3571428571428572,0.8,0.0,0.0
+0.013,0.3857142857142858,0.25,0.0,99.9
+0.013,0.41428571428571437,0.2,0.0,99.9
+0.013,0.44285714285714284,0.25,0.0,99.9
+0.013,0.4714285714285714,0.15,0.0,99.9
+0.013,0.5,0.05,0.0,99.9
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-max.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-max.csv
new file mode 100644
index 0000000000..25ba035b4c
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-max.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,1.0,0.0,999.0
+0.004,0.1285714285714286,1.0,0.0,0.0
+0.004,0.15714285714285714,1.0,0.0,0.0
+0.004,0.18571428571428572,1.0,0.0,999.0
+0.004,0.2142857142857143,1.0,0.0,0.0
+0.004,0.24285714285714288,1.0,0.0,999.0
+0.004,0.27142857142857146,1.0,0.0,999.0
+0.004,0.30000000000000004,1.0,0.0,999.0
+0.004,0.3285714285714286,1.0,0.0,999.0
+0.004,0.3571428571428572,1.0,0.0,999.0
+0.004,0.3857142857142858,1.0,0.0,999.0
+0.004,0.41428571428571437,1.0,0.0,999.0
+0.004,0.44285714285714284,1.0,0.0,999.0
+0.004,0.4714285714285714,1.0,0.0,999.0
+0.004,0.5,1.0,0.0,999.0
+0.004642857142857143,0.1,1.0,0.0,0.0
+0.004642857142857143,0.1285714285714286,1.0,0.0,0.0
+0.004642857142857143,0.15714285714285714,1.0,0.0,999.0
+0.004642857142857143,0.18571428571428572,1.0,0.0,0.0
+0.004642857142857143,0.2142857142857143,1.0,0.0,0.0
+0.004642857142857143,0.24285714285714288,1.0,0.0,999.0
+0.004642857142857143,0.27142857142857146,1.0,0.0,0.0
+0.004642857142857143,0.30000000000000004,1.0,0.0,999.0
+0.004642857142857143,0.3285714285714286,1.0,0.0,999.0
+0.004642857142857143,0.3571428571428572,1.0,0.0,999.0
+0.004642857142857143,0.3857142857142858,1.0,0.0,999.0
+0.004642857142857143,0.41428571428571437,1.0,0.0,999.0
+0.004642857142857143,0.44285714285714284,1.0,0.0,999.0
+0.004642857142857143,0.4714285714285714,1.0,0.0,999.0
+0.004642857142857143,0.5,1.0,0.0,1.0
+0.005285714285714286,0.1,1.0,0.0,0.0
+0.005285714285714286,0.1285714285714286,1.0,0.0,0.0
+0.005285714285714286,0.15714285714285714,1.0,0.0,999.0
+0.005285714285714286,0.18571428571428572,1.0,0.0,0.0
+0.005285714285714286,0.2142857142857143,1.0,0.0,0.0
+0.005285714285714286,0.24285714285714288,1.0,0.0,999.0
+0.005285714285714286,0.27142857142857146,1.0,0.0,999.0
+0.005285714285714286,0.30000000000000004,1.0,0.0,0.0
+0.005285714285714286,0.3285714285714286,1.0,0.0,999.0
+0.005285714285714286,0.3571428571428572,1.0,0.0,999.0
+0.005285714285714286,0.3857142857142858,1.0,0.0,999.0
+0.005285714285714286,0.41428571428571437,1.0,0.0,0.0
+0.005285714285714286,0.44285714285714284,1.0,0.0,999.0
+0.005285714285714286,0.4714285714285714,1.0,0.0,999.0
+0.005285714285714286,0.5,0.0,0.0,999.0
+0.005928571428571429,0.1,1.0,0.0,0.0
+0.005928571428571429,0.1285714285714286,1.0,0.0,0.0
+0.005928571428571429,0.15714285714285714,1.0,0.0,0.0
+0.005928571428571429,0.18571428571428572,1.0,0.0,999.0
+0.005928571428571429,0.2142857142857143,1.0,0.0,999.0
+0.005928571428571429,0.24285714285714288,1.0,0.0,999.0
+0.005928571428571429,0.27142857142857146,1.0,0.0,999.0
+0.005928571428571429,0.30000000000000004,1.0,0.0,999.0
+0.005928571428571429,0.3285714285714286,1.0,0.0,0.0
+0.005928571428571429,0.3571428571428572,1.0,0.0,999.0
+0.005928571428571429,0.3857142857142858,1.0,0.0,999.0
+0.005928571428571429,0.41428571428571437,1.0,0.0,999.0
+0.005928571428571429,0.44285714285714284,1.0,0.0,999.0
+0.005928571428571429,0.4714285714285714,1.0,0.0,999.0
+0.005928571428571429,0.5,1.0,0.0,999.0
+0.006571428571428572,0.1,1.0,0.0,0.0
+0.006571428571428572,0.1285714285714286,1.0,0.0,999.0
+0.006571428571428572,0.15714285714285714,1.0,0.0,0.0
+0.006571428571428572,0.18571428571428572,1.0,0.0,0.0
+0.006571428571428572,0.2142857142857143,1.0,0.0,0.0
+0.006571428571428572,0.24285714285714288,1.0,0.0,0.0
+0.006571428571428572,0.27142857142857146,1.0,0.0,0.0
+0.006571428571428572,0.30000000000000004,1.0,0.0,0.0
+0.006571428571428572,0.3285714285714286,1.0,0.0,999.0
+0.006571428571428572,0.3571428571428572,1.0,0.0,999.0
+0.006571428571428572,0.3857142857142858,1.0,0.0,999.0
+0.006571428571428572,0.41428571428571437,1.0,0.0,999.0
+0.006571428571428572,0.44285714285714284,1.0,0.0,999.0
+0.006571428571428572,0.4714285714285714,1.0,0.0,999.0
+0.006571428571428572,0.5,0.0,0.0,999.0
+0.007214285714285715,0.1,1.0,0.0,0.0
+0.007214285714285715,0.1285714285714286,1.0,0.0,0.0
+0.007214285714285715,0.15714285714285714,1.0,0.0,999.0
+0.007214285714285715,0.18571428571428572,1.0,0.0,999.0
+0.007214285714285715,0.2142857142857143,1.0,0.0,999.0
+0.007214285714285715,0.24285714285714288,1.0,0.0,999.0
+0.007214285714285715,0.27142857142857146,1.0,0.0,999.0
+0.007214285714285715,0.30000000000000004,1.0,0.0,0.0
+0.007214285714285715,0.3285714285714286,1.0,0.0,999.0
+0.007214285714285715,0.3571428571428572,1.0,0.0,0.0
+0.007214285714285715,0.3857142857142858,1.0,0.0,999.0
+0.007214285714285715,0.41428571428571437,1.0,0.0,999.0
+0.007214285714285715,0.44285714285714284,1.0,0.0,999.0
+0.007214285714285715,0.4714285714285714,1.0,0.0,999.0
+0.007214285714285715,0.5,0.0,0.0,999.0
+0.007857142857142858,0.1,1.0,0.0,999.0
+0.007857142857142858,0.1285714285714286,1.0,0.0,0.0
+0.007857142857142858,0.15714285714285714,1.0,0.0,0.0
+0.007857142857142858,0.18571428571428572,1.0,0.0,0.0
+0.007857142857142858,0.2142857142857143,1.0,0.0,999.0
+0.007857142857142858,0.24285714285714288,1.0,0.0,999.0
+0.007857142857142858,0.27142857142857146,1.0,0.0,999.0
+0.007857142857142858,0.30000000000000004,1.0,0.0,0.0
+0.007857142857142858,0.3285714285714286,1.0,0.0,0.0
+0.007857142857142858,0.3571428571428572,1.0,0.0,0.0
+0.007857142857142858,0.3857142857142858,1.0,0.0,0.0
+0.007857142857142858,0.41428571428571437,1.0,0.0,999.0
+0.007857142857142858,0.44285714285714284,1.0,0.0,0.0
+0.007857142857142858,0.4714285714285714,1.0,0.0,0.0
+0.007857142857142858,0.5,1.0,0.0,0.0
+0.0085,0.1,1.0,0.0,0.0
+0.0085,0.1285714285714286,1.0,0.0,0.0
+0.0085,0.15714285714285714,1.0,0.0,0.0
+0.0085,0.18571428571428572,1.0,0.0,0.0
+0.0085,0.2142857142857143,1.0,0.0,999.0
+0.0085,0.24285714285714288,1.0,0.0,999.0
+0.0085,0.27142857142857146,1.0,0.0,0.0
+0.0085,0.30000000000000004,1.0,0.0,0.0
+0.0085,0.3285714285714286,1.0,0.0,999.0
+0.0085,0.3571428571428572,1.0,0.0,0.0
+0.0085,0.3857142857142858,1.0,0.0,0.0
+0.0085,0.41428571428571437,1.0,0.0,999.0
+0.0085,0.44285714285714284,1.0,0.0,999.0
+0.0085,0.4714285714285714,1.0,0.0,999.0
+0.0085,0.5,0.0,0.0,999.0
+0.009142857142857144,0.1,1.0,0.0,0.0
+0.009142857142857144,0.1285714285714286,1.0,0.0,0.0
+0.009142857142857144,0.15714285714285714,1.0,0.0,0.0
+0.009142857142857144,0.18571428571428572,1.0,0.0,0.0
+0.009142857142857144,0.2142857142857143,1.0,0.0,0.0
+0.009142857142857144,0.24285714285714288,1.0,0.0,0.0
+0.009142857142857144,0.27142857142857146,1.0,0.0,0.0
+0.009142857142857144,0.30000000000000004,1.0,0.0,0.0
+0.009142857142857144,0.3285714285714286,1.0,0.0,0.0
+0.009142857142857144,0.3571428571428572,1.0,0.0,0.0
+0.009142857142857144,0.3857142857142858,1.0,0.0,0.0
+0.009142857142857144,0.41428571428571437,1.0,0.0,0.0
+0.009142857142857144,0.44285714285714284,1.0,0.0,0.0
+0.009142857142857144,0.4714285714285714,1.0,0.0,999.0
+0.009142857142857144,0.5,1.0,0.0,999.0
+0.009785714285714286,0.1,1.0,0.0,999.0
+0.009785714285714286,0.1285714285714286,1.0,0.0,0.0
+0.009785714285714286,0.15714285714285714,1.0,0.0,999.0
+0.009785714285714286,0.18571428571428572,1.0,0.0,0.0
+0.009785714285714286,0.2142857142857143,1.0,0.0,0.0
+0.009785714285714286,0.24285714285714288,1.0,0.0,0.0
+0.009785714285714286,0.27142857142857146,1.0,0.0,999.0
+0.009785714285714286,0.30000000000000004,1.0,0.0,999.0
+0.009785714285714286,0.3285714285714286,1.0,0.0,999.0
+0.009785714285714286,0.3571428571428572,1.0,0.0,999.0
+0.009785714285714286,0.3857142857142858,1.0,0.0,0.0
+0.009785714285714286,0.41428571428571437,1.0,0.0,0.0
+0.009785714285714286,0.44285714285714284,1.0,0.0,0.0
+0.009785714285714286,0.4714285714285714,1.0,0.0,0.0
+0.009785714285714286,0.5,1.0,0.0,0.0
+0.01042857142857143,0.1,1.0,0.0,0.0
+0.01042857142857143,0.1285714285714286,1.0,0.0,0.0
+0.01042857142857143,0.15714285714285714,1.0,0.0,0.0
+0.01042857142857143,0.18571428571428572,1.0,0.0,999.0
+0.01042857142857143,0.2142857142857143,1.0,0.0,0.0
+0.01042857142857143,0.24285714285714288,1.0,0.0,0.0
+0.01042857142857143,0.27142857142857146,1.0,0.0,0.0
+0.01042857142857143,0.30000000000000004,1.0,0.0,0.0
+0.01042857142857143,0.3285714285714286,1.0,0.0,999.0
+0.01042857142857143,0.3571428571428572,1.0,0.0,999.0
+0.01042857142857143,0.3857142857142858,1.0,0.0,999.0
+0.01042857142857143,0.41428571428571437,1.0,0.0,0.0
+0.01042857142857143,0.44285714285714284,1.0,0.0,0.0
+0.01042857142857143,0.4714285714285714,1.0,0.0,0.0
+0.01042857142857143,0.5,1.0,0.0,0.0
+0.011071428571428572,0.1,1.0,0.0,0.0
+0.011071428571428572,0.1285714285714286,1.0,0.0,999.0
+0.011071428571428572,0.15714285714285714,1.0,0.0,0.0
+0.011071428571428572,0.18571428571428572,1.0,0.0,0.0
+0.011071428571428572,0.2142857142857143,1.0,0.0,0.0
+0.011071428571428572,0.24285714285714288,1.0,0.0,999.0
+0.011071428571428572,0.27142857142857146,1.0,0.0,999.0
+0.011071428571428572,0.30000000000000004,1.0,0.0,0.0
+0.011071428571428572,0.3285714285714286,1.0,0.0,0.0
+0.011071428571428572,0.3571428571428572,1.0,0.0,0.0
+0.011071428571428572,0.3857142857142858,1.0,0.0,0.0
+0.011071428571428572,0.41428571428571437,1.0,0.0,0.0
+0.011071428571428572,0.44285714285714284,1.0,0.0,0.0
+0.011071428571428572,0.4714285714285714,1.0,0.0,0.0
+0.011071428571428572,0.5,1.0,0.0,0.0
+0.011714285714285714,0.1,1.0,0.0,0.0
+0.011714285714285714,0.1285714285714286,1.0,0.0,0.0
+0.011714285714285714,0.15714285714285714,1.0,0.0,0.0
+0.011714285714285714,0.18571428571428572,1.0,0.0,0.0
+0.011714285714285714,0.2142857142857143,1.0,0.0,0.0
+0.011714285714285714,0.24285714285714288,1.0,0.0,0.0
+0.011714285714285714,0.27142857142857146,1.0,0.0,999.0
+0.011714285714285714,0.30000000000000004,1.0,0.0,999.0
+0.011714285714285714,0.3285714285714286,1.0,0.0,0.0
+0.011714285714285714,0.3571428571428572,1.0,0.0,999.0
+0.011714285714285714,0.3857142857142858,1.0,0.0,999.0
+0.011714285714285714,0.41428571428571437,1.0,0.0,999.0
+0.011714285714285714,0.44285714285714284,1.0,0.0,999.0
+0.011714285714285714,0.4714285714285714,1.0,0.0,999.0
+0.011714285714285714,0.5,0.0,0.0,999.0
+0.012357142857142856,0.1,1.0,0.0,0.0
+0.012357142857142856,0.1285714285714286,1.0,0.0,0.0
+0.012357142857142856,0.15714285714285714,1.0,0.0,0.0
+0.012357142857142856,0.18571428571428572,1.0,0.0,999.0
+0.012357142857142856,0.2142857142857143,1.0,0.0,0.0
+0.012357142857142856,0.24285714285714288,1.0,0.0,0.0
+0.012357142857142856,0.27142857142857146,1.0,0.0,999.0
+0.012357142857142856,0.30000000000000004,1.0,0.0,999.0
+0.012357142857142856,0.3285714285714286,1.0,0.0,0.0
+0.012357142857142856,0.3571428571428572,1.0,0.0,999.0
+0.012357142857142856,0.3857142857142858,1.0,0.0,999.0
+0.012357142857142856,0.41428571428571437,1.0,0.0,999.0
+0.012357142857142856,0.44285714285714284,1.0,0.0,999.0
+0.012357142857142856,0.4714285714285714,1.0,0.0,999.0
+0.012357142857142856,0.5,1.0,0.0,999.0
+0.013,0.1,1.0,0.0,0.0
+0.013,0.1285714285714286,1.0,0.0,0.0
+0.013,0.15714285714285714,1.0,0.0,0.0
+0.013,0.18571428571428572,1.0,0.0,999.0
+0.013,0.2142857142857143,1.0,0.0,999.0
+0.013,0.24285714285714288,1.0,0.0,0.0
+0.013,0.27142857142857146,1.0,0.0,0.0
+0.013,0.30000000000000004,1.0,0.0,0.0
+0.013,0.3285714285714286,1.0,0.0,0.0
+0.013,0.3571428571428572,1.0,0.0,0.0
+0.013,0.3857142857142858,1.0,0.0,999.0
+0.013,0.41428571428571437,1.0,0.0,999.0
+0.013,0.44285714285714284,1.0,0.0,999.0
+0.013,0.4714285714285714,1.0,0.0,999.0
+0.013,0.5,1.0,0.0,999.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-min.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-min.csv
new file mode 100644
index 0000000000..5ca6b427d1
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-min.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,0.0,0.0,0.0
+0.004,0.1285714285714286,1.0,0.0,0.0
+0.004,0.15714285714285714,1.0,0.0,0.0
+0.004,0.18571428571428572,0.0,0.0,0.0
+0.004,0.2142857142857143,1.0,0.0,0.0
+0.004,0.24285714285714288,0.0,0.0,0.0
+0.004,0.27142857142857146,0.0,0.0,0.0
+0.004,0.30000000000000004,0.0,0.0,0.0
+0.004,0.3285714285714286,0.0,0.0,0.0
+0.004,0.3571428571428572,0.0,0.0,0.0
+0.004,0.3857142857142858,0.0,0.0,0.0
+0.004,0.41428571428571437,0.0,0.0,0.0
+0.004,0.44285714285714284,0.0,0.0,0.0
+0.004,0.4714285714285714,0.0,0.0,0.0
+0.004,0.5,0.0,0.0,0.0
+0.004642857142857143,0.1,1.0,0.0,0.0
+0.004642857142857143,0.1285714285714286,1.0,0.0,0.0
+0.004642857142857143,0.15714285714285714,0.0,0.0,0.0
+0.004642857142857143,0.18571428571428572,1.0,0.0,0.0
+0.004642857142857143,0.2142857142857143,1.0,0.0,0.0
+0.004642857142857143,0.24285714285714288,0.0,0.0,0.0
+0.004642857142857143,0.27142857142857146,1.0,0.0,0.0
+0.004642857142857143,0.30000000000000004,0.0,0.0,0.0
+0.004642857142857143,0.3285714285714286,0.0,0.0,0.0
+0.004642857142857143,0.3571428571428572,0.0,0.0,0.0
+0.004642857142857143,0.3857142857142858,0.0,0.0,0.0
+0.004642857142857143,0.41428571428571437,0.0,0.0,0.0
+0.004642857142857143,0.44285714285714284,0.0,0.0,0.0
+0.004642857142857143,0.4714285714285714,0.0,0.0,0.0
+0.004642857142857143,0.5,0.0,0.0,0.0
+0.005285714285714286,0.1,1.0,0.0,0.0
+0.005285714285714286,0.1285714285714286,1.0,0.0,0.0
+0.005285714285714286,0.15714285714285714,0.0,0.0,0.0
+0.005285714285714286,0.18571428571428572,1.0,0.0,0.0
+0.005285714285714286,0.2142857142857143,1.0,0.0,0.0
+0.005285714285714286,0.24285714285714288,0.0,0.0,0.0
+0.005285714285714286,0.27142857142857146,0.0,0.0,0.0
+0.005285714285714286,0.30000000000000004,0.0,0.0,0.0
+0.005285714285714286,0.3285714285714286,0.0,0.0,0.0
+0.005285714285714286,0.3571428571428572,0.0,0.0,0.0
+0.005285714285714286,0.3857142857142858,0.0,0.0,0.0
+0.005285714285714286,0.41428571428571437,0.0,0.0,0.0
+0.005285714285714286,0.44285714285714284,0.0,0.0,0.0
+0.005285714285714286,0.4714285714285714,0.0,0.0,0.0
+0.005285714285714286,0.5,0.0,0.0,0.0
+0.005928571428571429,0.1,1.0,0.0,0.0
+0.005928571428571429,0.1285714285714286,1.0,0.0,0.0
+0.005928571428571429,0.15714285714285714,1.0,0.0,0.0
+0.005928571428571429,0.18571428571428572,0.0,0.0,0.0
+0.005928571428571429,0.2142857142857143,0.0,0.0,0.0
+0.005928571428571429,0.24285714285714288,0.0,0.0,0.0
+0.005928571428571429,0.27142857142857146,0.0,0.0,0.0
+0.005928571428571429,0.30000000000000004,0.0,0.0,0.0
+0.005928571428571429,0.3285714285714286,0.0,0.0,0.0
+0.005928571428571429,0.3571428571428572,0.0,0.0,0.0
+0.005928571428571429,0.3857142857142858,0.0,0.0,0.0
+0.005928571428571429,0.41428571428571437,0.0,0.0,0.0
+0.005928571428571429,0.44285714285714284,0.0,0.0,0.0
+0.005928571428571429,0.4714285714285714,0.0,0.0,0.0
+0.005928571428571429,0.5,0.0,0.0,0.0
+0.006571428571428572,0.1,1.0,0.0,0.0
+0.006571428571428572,0.1285714285714286,0.0,0.0,0.0
+0.006571428571428572,0.15714285714285714,1.0,0.0,0.0
+0.006571428571428572,0.18571428571428572,1.0,0.0,0.0
+0.006571428571428572,0.2142857142857143,1.0,0.0,0.0
+0.006571428571428572,0.24285714285714288,1.0,0.0,0.0
+0.006571428571428572,0.27142857142857146,1.0,0.0,0.0
+0.006571428571428572,0.30000000000000004,0.0,0.0,0.0
+0.006571428571428572,0.3285714285714286,0.0,0.0,0.0
+0.006571428571428572,0.3571428571428572,0.0,0.0,0.0
+0.006571428571428572,0.3857142857142858,0.0,0.0,0.0
+0.006571428571428572,0.41428571428571437,0.0,0.0,0.0
+0.006571428571428572,0.44285714285714284,0.0,0.0,0.0
+0.006571428571428572,0.4714285714285714,0.0,0.0,0.0
+0.006571428571428572,0.5,0.0,0.0,0.0
+0.007214285714285715,0.1,1.0,0.0,0.0
+0.007214285714285715,0.1285714285714286,1.0,0.0,0.0
+0.007214285714285715,0.15714285714285714,0.0,0.0,0.0
+0.007214285714285715,0.18571428571428572,0.0,0.0,0.0
+0.007214285714285715,0.2142857142857143,0.0,0.0,0.0
+0.007214285714285715,0.24285714285714288,0.0,0.0,0.0
+0.007214285714285715,0.27142857142857146,0.0,0.0,0.0
+0.007214285714285715,0.30000000000000004,1.0,0.0,0.0
+0.007214285714285715,0.3285714285714286,0.0,0.0,0.0
+0.007214285714285715,0.3571428571428572,0.0,0.0,0.0
+0.007214285714285715,0.3857142857142858,0.0,0.0,0.0
+0.007214285714285715,0.41428571428571437,0.0,0.0,0.0
+0.007214285714285715,0.44285714285714284,0.0,0.0,0.0
+0.007214285714285715,0.4714285714285714,0.0,0.0,0.0
+0.007214285714285715,0.5,0.0,0.0,0.0
+0.007857142857142858,0.1,0.0,0.0,0.0
+0.007857142857142858,0.1285714285714286,1.0,0.0,0.0
+0.007857142857142858,0.15714285714285714,1.0,0.0,0.0
+0.007857142857142858,0.18571428571428572,1.0,0.0,0.0
+0.007857142857142858,0.2142857142857143,0.0,0.0,0.0
+0.007857142857142858,0.24285714285714288,0.0,0.0,0.0
+0.007857142857142858,0.27142857142857146,0.0,0.0,0.0
+0.007857142857142858,0.30000000000000004,0.0,0.0,0.0
+0.007857142857142858,0.3285714285714286,0.0,0.0,0.0
+0.007857142857142858,0.3571428571428572,0.0,0.0,0.0
+0.007857142857142858,0.3857142857142858,0.0,0.0,0.0
+0.007857142857142858,0.41428571428571437,0.0,0.0,0.0
+0.007857142857142858,0.44285714285714284,0.0,0.0,0.0
+0.007857142857142858,0.4714285714285714,0.0,0.0,0.0
+0.007857142857142858,0.5,0.0,0.0,0.0
+0.0085,0.1,1.0,0.0,0.0
+0.0085,0.1285714285714286,1.0,0.0,0.0
+0.0085,0.15714285714285714,1.0,0.0,0.0
+0.0085,0.18571428571428572,1.0,0.0,0.0
+0.0085,0.2142857142857143,0.0,0.0,0.0
+0.0085,0.24285714285714288,0.0,0.0,0.0
+0.0085,0.27142857142857146,1.0,0.0,0.0
+0.0085,0.30000000000000004,0.0,0.0,0.0
+0.0085,0.3285714285714286,0.0,0.0,0.0
+0.0085,0.3571428571428572,0.0,0.0,0.0
+0.0085,0.3857142857142858,0.0,0.0,0.0
+0.0085,0.41428571428571437,0.0,0.0,0.0
+0.0085,0.44285714285714284,0.0,0.0,0.0
+0.0085,0.4714285714285714,0.0,0.0,0.0
+0.0085,0.5,0.0,0.0,0.0
+0.009142857142857144,0.1,1.0,0.0,0.0
+0.009142857142857144,0.1285714285714286,1.0,0.0,0.0
+0.009142857142857144,0.15714285714285714,1.0,0.0,0.0
+0.009142857142857144,0.18571428571428572,1.0,0.0,0.0
+0.009142857142857144,0.2142857142857143,1.0,0.0,0.0
+0.009142857142857144,0.24285714285714288,1.0,0.0,0.0
+0.009142857142857144,0.27142857142857146,1.0,0.0,0.0
+0.009142857142857144,0.30000000000000004,0.0,0.0,0.0
+0.009142857142857144,0.3285714285714286,0.0,0.0,0.0
+0.009142857142857144,0.3571428571428572,0.0,0.0,0.0
+0.009142857142857144,0.3857142857142858,0.0,0.0,0.0
+0.009142857142857144,0.41428571428571437,0.0,0.0,0.0
+0.009142857142857144,0.44285714285714284,0.0,0.0,0.0
+0.009142857142857144,0.4714285714285714,0.0,0.0,0.0
+0.009142857142857144,0.5,0.0,0.0,0.0
+0.009785714285714286,0.1,0.0,0.0,0.0
+0.009785714285714286,0.1285714285714286,1.0,0.0,0.0
+0.009785714285714286,0.15714285714285714,0.0,0.0,0.0
+0.009785714285714286,0.18571428571428572,1.0,0.0,0.0
+0.009785714285714286,0.2142857142857143,1.0,0.0,0.0
+0.009785714285714286,0.24285714285714288,1.0,0.0,0.0
+0.009785714285714286,0.27142857142857146,0.0,0.0,0.0
+0.009785714285714286,0.30000000000000004,0.0,0.0,0.0
+0.009785714285714286,0.3285714285714286,0.0,0.0,0.0
+0.009785714285714286,0.3571428571428572,0.0,0.0,0.0
+0.009785714285714286,0.3857142857142858,0.0,0.0,0.0
+0.009785714285714286,0.41428571428571437,0.0,0.0,0.0
+0.009785714285714286,0.44285714285714284,0.0,0.0,0.0
+0.009785714285714286,0.4714285714285714,0.0,0.0,0.0
+0.009785714285714286,0.5,0.0,0.0,0.0
+0.01042857142857143,0.1,1.0,0.0,0.0
+0.01042857142857143,0.1285714285714286,1.0,0.0,0.0
+0.01042857142857143,0.15714285714285714,1.0,0.0,0.0
+0.01042857142857143,0.18571428571428572,0.0,0.0,0.0
+0.01042857142857143,0.2142857142857143,1.0,0.0,0.0
+0.01042857142857143,0.24285714285714288,1.0,0.0,0.0
+0.01042857142857143,0.27142857142857146,1.0,0.0,0.0
+0.01042857142857143,0.30000000000000004,1.0,0.0,0.0
+0.01042857142857143,0.3285714285714286,0.0,0.0,0.0
+0.01042857142857143,0.3571428571428572,0.0,0.0,0.0
+0.01042857142857143,0.3857142857142858,0.0,0.0,0.0
+0.01042857142857143,0.41428571428571437,0.0,0.0,0.0
+0.01042857142857143,0.44285714285714284,0.0,0.0,0.0
+0.01042857142857143,0.4714285714285714,0.0,0.0,0.0
+0.01042857142857143,0.5,0.0,0.0,0.0
+0.011071428571428572,0.1,1.0,0.0,0.0
+0.011071428571428572,0.1285714285714286,0.0,0.0,0.0
+0.011071428571428572,0.15714285714285714,1.0,0.0,0.0
+0.011071428571428572,0.18571428571428572,1.0,0.0,0.0
+0.011071428571428572,0.2142857142857143,1.0,0.0,0.0
+0.011071428571428572,0.24285714285714288,0.0,0.0,0.0
+0.011071428571428572,0.27142857142857146,0.0,0.0,0.0
+0.011071428571428572,0.30000000000000004,1.0,0.0,0.0
+0.011071428571428572,0.3285714285714286,0.0,0.0,0.0
+0.011071428571428572,0.3571428571428572,0.0,0.0,0.0
+0.011071428571428572,0.3857142857142858,0.0,0.0,0.0
+0.011071428571428572,0.41428571428571437,0.0,0.0,0.0
+0.011071428571428572,0.44285714285714284,0.0,0.0,0.0
+0.011071428571428572,0.4714285714285714,0.0,0.0,0.0
+0.011071428571428572,0.5,0.0,0.0,0.0
+0.011714285714285714,0.1,1.0,0.0,0.0
+0.011714285714285714,0.1285714285714286,1.0,0.0,0.0
+0.011714285714285714,0.15714285714285714,1.0,0.0,0.0
+0.011714285714285714,0.18571428571428572,1.0,0.0,0.0
+0.011714285714285714,0.2142857142857143,1.0,0.0,0.0
+0.011714285714285714,0.24285714285714288,1.0,0.0,0.0
+0.011714285714285714,0.27142857142857146,0.0,0.0,0.0
+0.011714285714285714,0.30000000000000004,0.0,0.0,0.0
+0.011714285714285714,0.3285714285714286,0.0,0.0,0.0
+0.011714285714285714,0.3571428571428572,0.0,0.0,0.0
+0.011714285714285714,0.3857142857142858,0.0,0.0,0.0
+0.011714285714285714,0.41428571428571437,0.0,0.0,0.0
+0.011714285714285714,0.44285714285714284,0.0,0.0,0.0
+0.011714285714285714,0.4714285714285714,0.0,0.0,0.0
+0.011714285714285714,0.5,0.0,0.0,0.0
+0.012357142857142856,0.1,1.0,0.0,0.0
+0.012357142857142856,0.1285714285714286,1.0,0.0,0.0
+0.012357142857142856,0.15714285714285714,1.0,0.0,0.0
+0.012357142857142856,0.18571428571428572,0.0,0.0,0.0
+0.012357142857142856,0.2142857142857143,1.0,0.0,0.0
+0.012357142857142856,0.24285714285714288,1.0,0.0,0.0
+0.012357142857142856,0.27142857142857146,0.0,0.0,0.0
+0.012357142857142856,0.30000000000000004,0.0,0.0,0.0
+0.012357142857142856,0.3285714285714286,0.0,0.0,0.0
+0.012357142857142856,0.3571428571428572,0.0,0.0,0.0
+0.012357142857142856,0.3857142857142858,0.0,0.0,0.0
+0.012357142857142856,0.41428571428571437,0.0,0.0,0.0
+0.012357142857142856,0.44285714285714284,0.0,0.0,0.0
+0.012357142857142856,0.4714285714285714,0.0,0.0,0.0
+0.012357142857142856,0.5,0.0,0.0,0.0
+0.013,0.1,1.0,0.0,0.0
+0.013,0.1285714285714286,1.0,0.0,0.0
+0.013,0.15714285714285714,1.0,0.0,0.0
+0.013,0.18571428571428572,0.0,0.0,0.0
+0.013,0.2142857142857143,0.0,0.0,0.0
+0.013,0.24285714285714288,1.0,0.0,0.0
+0.013,0.27142857142857146,0.0,0.0,0.0
+0.013,0.30000000000000004,0.0,0.0,0.0
+0.013,0.3285714285714286,0.0,0.0,0.0
+0.013,0.3571428571428572,0.0,0.0,0.0
+0.013,0.3857142857142858,0.0,0.0,0.0
+0.013,0.41428571428571437,0.0,0.0,0.0
+0.013,0.44285714285714284,0.0,0.0,0.0
+0.013,0.4714285714285714,0.0,0.0,0.0
+0.013,0.5,0.0,0.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-var.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-var.csv
new file mode 100644
index 0000000000..02174206c5
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/min-var.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,0.047500000000000014,0.0,47405.047499999986
+0.004,0.1285714285714286,0.0,0.0,0.0
+0.004,0.15714285714285714,0.0,0.0,0.0
+0.004,0.18571428571428572,0.047500000000000014,0.0,47405.047499999986
+0.004,0.2142857142857143,0.0,0.0,0.0
+0.004,0.24285714285714288,0.09000000000000001,0.0,89820.09000000001
+0.004,0.27142857142857146,0.16000000000000003,0.0,159680.16000000006
+0.004,0.30000000000000004,0.1275,0.0,127245.12749999999
+0.004,0.3285714285714286,0.09,0.0,47400.1
+0.004,0.3571428571428572,0.22749999999999998,0.0,47395.147499999985
+0.004,0.3857142857142858,0.20999999999999996,0.0,47390.19
+0.004,0.41428571428571437,0.1875,0.0,89780.29
+0.004,0.44285714285714284,0.1875,0.0,47370.409999999996
+0.004,0.4714285714285714,0.0475,0.0,127110.70999999999
+0.004,0.5,0.04749999999999999,0.0,159420.94749999998
+0.004642857142857143,0.1,0.0,0.0,0.0
+0.004642857142857143,0.1285714285714286,0.0,0.0,0.0
+0.004642857142857143,0.15714285714285714,0.09000000000000001,0.0,89820.09000000001
+0.004642857142857143,0.18571428571428572,0.0,0.0,0.0
+0.004642857142857143,0.2142857142857143,0.0,0.0,0.0
+0.004642857142857143,0.24285714285714288,0.047500000000000014,0.0,47405.047499999986
+0.004642857142857143,0.27142857142857146,0.0,0.0,0.0
+0.004642857142857143,0.30000000000000004,0.047500000000000014,0.0,47405.047499999986
+0.004642857142857143,0.3285714285714286,0.09000000000000001,0.0,47405.0475
+0.004642857142857143,0.3571428571428572,0.1875,0.0,89820.09000000001
+0.004642857142857143,0.3857142857142858,0.24000000000000005,0.0,159680.16000000006
+0.004642857142857143,0.41428571428571437,0.24749999999999997,0.0,89820.09000000001
+0.004642857142857143,0.44285714285714284,0.16000000000000006,0.0,47405.047499999986
+0.004642857142857143,0.4714285714285714,0.09000000000000001,0.0,47405.047499999986
+0.004642857142857143,0.5,0.1275,0.0,0.04749999999999999
+0.005285714285714286,0.1,0.0,0.0,0.0
+0.005285714285714286,0.1285714285714286,0.0,0.0,0.0
+0.005285714285714286,0.15714285714285714,0.09000000000000001,0.0,89820.09000000001
+0.005285714285714286,0.18571428571428572,0.0,0.0,0.0
+0.005285714285714286,0.2142857142857143,0.0,0.0,0.0
+0.005285714285714286,0.24285714285714288,0.09000000000000001,0.0,89820.09000000001
+0.005285714285714286,0.27142857142857146,0.047500000000000014,0.0,47405.047499999986
+0.005285714285714286,0.30000000000000004,0.047500000000000014,0.0,0.0
+0.005285714285714286,0.3285714285714286,0.1875,0.0,47405.0475
+0.005285714285714286,0.3571428571428572,0.24000000000000005,0.0,89820.09000000001
+0.005285714285714286,0.3857142857142858,0.2475,0.0,47405.047499999986
+0.005285714285714286,0.41428571428571437,0.20999999999999996,0.0,0.0
+0.005285714285714286,0.44285714285714284,0.16000000000000006,0.0,47405.0475
+0.005285714285714286,0.4714285714285714,0.1275,0.0,47405.0475
+0.005285714285714286,0.5,0.0,0.0,47405.0475
+0.005928571428571429,0.1,0.0,0.0,0.0
+0.005928571428571429,0.1285714285714286,0.0,0.0,0.0
+0.005928571428571429,0.15714285714285714,0.0,0.0,0.0
+0.005928571428571429,0.18571428571428572,0.047500000000000014,0.0,47405.047499999986
+0.005928571428571429,0.2142857142857143,0.09000000000000001,0.0,89820.09000000001
+0.005928571428571429,0.24285714285714288,0.09000000000000001,0.0,89730.22749999998
+0.005928571428571429,0.27142857142857146,0.09,0.0,89820.09000000001
+0.005928571428571429,0.30000000000000004,0.09000000000000001,0.0,47405.047499999986
+0.005928571428571429,0.3285714285714286,0.1875,0.0,0.0
+0.005928571428571429,0.3571428571428572,0.20999999999999996,0.0,89730.2275
+0.005928571428571429,0.3857142857142858,0.1875,0.0,89820.09000000001
+0.005928571428571429,0.41428571428571437,0.24750000000000005,0.0,89820.09000000001
+0.005928571428571429,0.44285714285714284,0.24750000000000005,0.0,89730.22749999998
+0.005928571428571429,0.4714285714285714,0.1875,0.0,89730.22749999998
+0.005928571428571429,0.5,0.09000000000000001,0.0,159520.40999999997
+0.006571428571428572,0.1,0.0,0.0,0.0
+0.006571428571428572,0.1285714285714286,0.04750000000000001,0.0,47405.04749999999
+0.006571428571428572,0.15714285714285714,0.0,0.0,0.0
+0.006571428571428572,0.18571428571428572,0.0,0.0,0.0
+0.006571428571428572,0.2142857142857143,0.0,0.0,0.0
+0.006571428571428572,0.24285714285714288,0.0,0.0,0.0
+0.006571428571428572,0.27142857142857146,0.0,0.0,0.0
+0.006571428571428572,0.30000000000000004,0.047500000000000014,0.0,0.0
+0.006571428571428572,0.3285714285714286,0.1275,0.0,89820.09000000001
+0.006571428571428572,0.3571428571428572,0.16000000000000003,0.0,47405.047499999986
+0.006571428571428572,0.3857142857142858,0.1875,0.0,89820.09000000001
+0.006571428571428572,0.41428571428571437,0.24750000000000005,0.0,89820.09000000001
+0.006571428571428572,0.44285714285714284,0.24000000000000005,0.0,89730.22749999998
+0.006571428571428572,0.4714285714285714,0.09000000000000001,0.0,89820.09000000001
+0.006571428571428572,0.5,0.0,0.0,89820.09000000001
+0.007214285714285715,0.1,0.0,0.0,0.0
+0.007214285714285715,0.1285714285714286,0.0,0.0,0.0
+0.007214285714285715,0.15714285714285714,0.04750000000000001,0.0,47405.04749999999
+0.007214285714285715,0.18571428571428572,0.047500000000000014,0.0,47405.047499999986
+0.007214285714285715,0.2142857142857143,0.09,0.0,89820.09000000001
+0.007214285714285715,0.24285714285714288,0.09000000000000001,0.0,89820.09000000001
+0.007214285714285715,0.27142857142857146,0.047500000000000014,0.0,47405.047499999986
+0.007214285714285715,0.30000000000000004,0.0,0.0,0.0
+0.007214285714285715,0.3285714285714286,0.1275,0.0,47405.047499999986
+0.007214285714285715,0.3571428571428572,0.16000000000000003,0.0,0.0
+0.007214285714285715,0.3857142857142858,0.24749999999999997,0.0,47405.047499999986
+0.007214285714285715,0.41428571428571437,0.24000000000000005,0.0,89820.09000000001
+0.007214285714285715,0.44285714285714284,0.16000000000000006,0.0,89820.09000000001
+0.007214285714285715,0.4714285714285714,0.09000000000000001,0.0,89820.09000000001
+0.007214285714285715,0.5,0.0,0.0,89820.09000000001
+0.007857142857142858,0.1,0.047500000000000014,0.0,47405.047499999986
+0.007857142857142858,0.1285714285714286,0.0,0.0,0.0
+0.007857142857142858,0.15714285714285714,0.0,0.0,0.0
+0.007857142857142858,0.18571428571428572,0.0,0.0,0.0
+0.007857142857142858,0.2142857142857143,0.09,0.0,89820.09000000001
+0.007857142857142858,0.24285714285714288,0.04750000000000001,0.0,47405.04749999999
+0.007857142857142858,0.27142857142857146,0.09,0.0,89820.09000000001
+0.007857142857142858,0.30000000000000004,0.09000000000000001,0.0,0.0
+0.007857142857142858,0.3285714285714286,0.09000000000000001,0.0,0.0
+0.007857142857142858,0.3571428571428572,0.22749999999999995,0.0,0.0
+0.007857142857142858,0.3857142857142858,0.24000000000000005,0.0,0.0
+0.007857142857142858,0.41428571428571437,0.22749999999999998,0.0,47405.04749999999
+0.007857142857142858,0.44285714285714284,0.16000000000000003,0.0,0.0
+0.007857142857142858,0.4714285714285714,0.1275,0.0,0.0
+0.007857142857142858,0.5,0.09000000000000001,0.0,0.0
+0.0085,0.1,0.0,0.0,0.0
+0.0085,0.1285714285714286,0.0,0.0,0.0
+0.0085,0.15714285714285714,0.0,0.0,0.0
+0.0085,0.18571428571428572,0.0,0.0,0.0
+0.0085,0.2142857142857143,0.047500000000000014,0.0,47405.047499999986
+0.0085,0.24285714285714288,0.047500000000000014,0.0,47405.047499999986
+0.0085,0.27142857142857146,0.0,0.0,0.0
+0.0085,0.30000000000000004,0.09000000000000001,0.0,0.0
+0.0085,0.3285714285714286,0.09000000000000001,0.0,47405.047499999986
+0.0085,0.3571428571428572,0.20999999999999996,0.0,0.0
+0.0085,0.3857142857142858,0.2475,0.0,0.0
+0.0085,0.41428571428571437,0.16000000000000003,0.0,47405.0475
+0.0085,0.44285714285714284,0.04749999999999999,0.0,47405.0475
+0.0085,0.4714285714285714,0.04749999999999999,0.0,47405.0475
+0.0085,0.5,0.0,0.0,47405.0475
+0.009142857142857144,0.1,0.0,0.0,0.0
+0.009142857142857144,0.1285714285714286,0.0,0.0,0.0
+0.009142857142857144,0.15714285714285714,0.0,0.0,0.0
+0.009142857142857144,0.18571428571428572,0.0,0.0,0.0
+0.009142857142857144,0.2142857142857143,0.0,0.0,0.0
+0.009142857142857144,0.24285714285714288,0.0,0.0,0.0
+0.009142857142857144,0.27142857142857146,0.0,0.0,0.0
+0.009142857142857144,0.30000000000000004,0.09000000000000001,0.0,0.0
+0.009142857142857144,0.3285714285714286,0.09000000000000001,0.0,0.0
+0.009142857142857144,0.3571428571428572,0.20999999999999996,0.0,0.0
+0.009142857142857144,0.3857142857142858,0.24749999999999997,0.0,0.0
+0.009142857142857144,0.41428571428571437,0.20999999999999996,0.0,0.0
+0.009142857142857144,0.44285714285714284,0.1275,0.0,0.0
+0.009142857142857144,0.4714285714285714,0.1275,0.0,47405.047499999986
+0.009142857142857144,0.5,0.09000000000000001,0.0,47405.047499999986
+0.009785714285714286,0.1,0.09000000000000001,0.0,89820.09000000001
+0.009785714285714286,0.1285714285714286,0.0,0.0,0.0
+0.009785714285714286,0.15714285714285714,0.047500000000000014,0.0,47405.047499999986
+0.009785714285714286,0.18571428571428572,0.0,0.0,0.0
+0.009785714285714286,0.2142857142857143,0.0,0.0,0.0
+0.009785714285714286,0.24285714285714288,0.0,0.0,0.0
+0.009785714285714286,0.27142857142857146,0.047500000000000014,0.0,47405.047499999986
+0.009785714285714286,0.30000000000000004,0.047500000000000014,0.0,47405.047499999986
+0.009785714285714286,0.3285714285714286,0.1875,0.0,47405.047499999986
+0.009785714285714286,0.3571428571428572,0.1875,0.0,47405.047499999986
+0.009785714285714286,0.3857142857142858,0.24749999999999997,0.0,0.0
+0.009785714285714286,0.41428571428571437,0.20999999999999996,0.0,0.0
+0.009785714285714286,0.44285714285714284,0.1275,0.0,0.0
+0.009785714285714286,0.4714285714285714,0.1275,0.0,0.0
+0.009785714285714286,0.5,0.04749999999999999,0.0,0.0
+0.01042857142857143,0.1,0.0,0.0,0.0
+0.01042857142857143,0.1285714285714286,0.0,0.0,0.0
+0.01042857142857143,0.15714285714285714,0.0,0.0,0.0
+0.01042857142857143,0.18571428571428572,0.047500000000000014,0.0,47405.047499999986
+0.01042857142857143,0.2142857142857143,0.0,0.0,0.0
+0.01042857142857143,0.24285714285714288,0.0,0.0,0.0
+0.01042857142857143,0.27142857142857146,0.0,0.0,0.0
+0.01042857142857143,0.30000000000000004,0.0,0.0,0.0
+0.01042857142857143,0.3285714285714286,0.1875,0.0,47405.047499999986
+0.01042857142857143,0.3571428571428572,0.24749999999999997,0.0,47405.047499999986
+0.01042857142857143,0.3857142857142858,0.2475,0.0,47405.047499999986
+0.01042857142857143,0.41428571428571437,0.16000000000000003,0.0,0.0
+0.01042857142857143,0.44285714285714284,0.1275,0.0,0.0
+0.01042857142857143,0.4714285714285714,0.04749999999999999,0.0,0.0
+0.01042857142857143,0.5,0.04749999999999999,0.0,0.0
+0.011071428571428572,0.1,0.0,0.0,0.0
+0.011071428571428572,0.1285714285714286,0.04750000000000001,0.0,47405.04749999999
+0.011071428571428572,0.15714285714285714,0.0,0.0,0.0
+0.011071428571428572,0.18571428571428572,0.0,0.0,0.0
+0.011071428571428572,0.2142857142857143,0.0,0.0,0.0
+0.011071428571428572,0.24285714285714288,0.04750000000000001,0.0,47405.04749999999
+0.011071428571428572,0.27142857142857146,0.047500000000000014,0.0,47405.047499999986
+0.011071428571428572,0.30000000000000004,0.0,0.0,0.0
+0.011071428571428572,0.3285714285714286,0.09000000000000001,0.0,0.0
+0.011071428571428572,0.3571428571428572,0.1875,0.0,0.0
+0.011071428571428572,0.3857142857142858,0.25,0.0,0.0
+0.011071428571428572,0.41428571428571437,0.22749999999999995,0.0,0.0
+0.011071428571428572,0.44285714285714284,0.20999999999999996,0.0,0.0
+0.011071428571428572,0.4714285714285714,0.1275,0.0,0.0
+0.011071428571428572,0.5,0.1275,0.0,0.0
+0.011714285714285714,0.1,0.0,0.0,0.0
+0.011714285714285714,0.1285714285714286,0.0,0.0,0.0
+0.011714285714285714,0.15714285714285714,0.0,0.0,0.0
+0.011714285714285714,0.18571428571428572,0.0,0.0,0.0
+0.011714285714285714,0.2142857142857143,0.0,0.0,0.0
+0.011714285714285714,0.24285714285714288,0.0,0.0,0.0
+0.011714285714285714,0.27142857142857146,0.047500000000000014,0.0,47405.047499999986
+0.011714285714285714,0.30000000000000004,0.047500000000000014,0.0,47405.047499999986
+0.011714285714285714,0.3285714285714286,0.1275,0.0,0.0
+0.011714285714285714,0.3571428571428572,0.22750000000000004,0.0,89820.09000000001
+0.011714285714285714,0.3857142857142858,0.24000000000000005,0.0,47405.04749999999
+0.011714285714285714,0.41428571428571437,0.16000000000000006,0.0,127245.12749999999
+0.011714285714285714,0.44285714285714284,0.04749999999999999,0.0,127245.12749999999
+0.011714285714285714,0.4714285714285714,0.04749999999999999,0.0,127245.12749999999
+0.011714285714285714,0.5,0.0,0.0,127245.12749999999
+0.012357142857142856,0.1,0.0,0.0,0.0
+0.012357142857142856,0.1285714285714286,0.0,0.0,0.0
+0.012357142857142856,0.15714285714285714,0.0,0.0,0.0
+0.012357142857142856,0.18571428571428572,0.047500000000000014,0.0,47405.047499999986
+0.012357142857142856,0.2142857142857143,0.0,0.0,0.0
+0.012357142857142856,0.24285714285714288,0.0,0.0,0.0
+0.012357142857142856,0.27142857142857146,0.047500000000000014,0.0,47405.047499999986
+0.012357142857142856,0.30000000000000004,0.047500000000000014,0.0,47405.047499999986
+0.012357142857142856,0.3285714285714286,0.16000000000000003,0.0,0.0
+0.012357142857142856,0.3571428571428572,0.22750000000000004,0.0,89820.09000000001
+0.012357142857142856,0.3857142857142858,0.24000000000000005,0.0,47405.04749999999
+0.012357142857142856,0.41428571428571437,0.1275,0.0,127245.12749999999
+0.012357142857142856,0.44285714285714284,0.1875,0.0,89820.09000000001
+0.012357142857142856,0.4714285714285714,0.1275,0.0,89820.09000000001
+0.012357142857142856,0.5,0.0475,0.0,89820.09000000001
+0.013,0.1,0.0,0.0,0.0
+0.013,0.1285714285714286,0.0,0.0,0.0
+0.013,0.15714285714285714,0.0,0.0,0.0
+0.013,0.18571428571428572,0.0475,0.0,47405.0475
+0.013,0.2142857142857143,0.047500000000000014,0.0,47405.047499999986
+0.013,0.24285714285714288,0.0,0.0,0.0
+0.013,0.27142857142857146,0.047500000000000014,0.0,0.0
+0.013,0.30000000000000004,0.09000000000000001,0.0,0.0
+0.013,0.3285714285714286,0.09000000000000001,0.0,0.0
+0.013,0.3571428571428572,0.16000000000000003,0.0,0.0
+0.013,0.3857142857142858,0.1875,0.0,89820.09000000001
+0.013,0.41428571428571437,0.16000000000000006,0.0,89820.09000000001
+0.013,0.44285714285714284,0.1875,0.0,89820.09000000001
+0.013,0.4714285714285714,0.1275,0.0,89820.09000000001
+0.013,0.5,0.0475,0.0,89820.09000000001
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-avg.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-avg.csv
new file mode 100644
index 0000000000..98124d6b2c
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-avg.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,53031.13767762638,70306.3175969055,66124.96838887817
+0.004,0.1285714285714286,57582.95417379246,88817.57279059211,70822.86087462143
+0.004,0.15714285714285714,56458.619752986604,98112.14361540039,75812.3726133544
+0.004,0.18571428571428572,51791.29248449948,98493.05019247392,73057.42244015895
+0.004,0.2142857142857143,51758.08007164135,107173.304779821,76195.46813390465
+0.004,0.24285714285714288,43893.181767526316,95383.80303107566,63269.47922338792
+0.004,0.27142857142857146,36998.698458342915,86040.51590475182,56807.51969577304
+0.004,0.30000000000000004,37128.23275850275,93938.10464735914,64098.0721139794
+0.004,0.3285714285714286,39182.11554157002,101361.91229345588,65290.66351079906
+0.004,0.3571428571428572,36564.43680200994,105107.05631183887,71855.97110652298
+0.004,0.3857142857142858,34286.59890174812,105649.75773284992,73295.19250315605
+0.004,0.41428571428571437,30331.5780990168,99544.13912164724,69436.27467490874
+0.004,0.44285714285714284,30175.554022052103,101904.72211802164,69490.42513417205
+0.004,0.4714285714285714,25170.77167243985,89228.26274090336,60570.44777706607
+0.004,0.5,22219.880882581576,84031.03737290189,57904.22598988812
+0.004642857142857143,0.1,56357.218586949086,72748.74257498397,60694.123659678735
+0.004642857142857143,0.1285714285714286,57973.35012282262,85865.81460749623,61891.414085111406
+0.004642857142857143,0.15714285714285714,52111.272230272196,85993.12574051155,61594.36213332006
+0.004642857142857143,0.18571428571428572,55934.565621482456,99807.78786015013,67261.692651787
+0.004642857142857143,0.2142857142857143,53472.492263729706,102391.36303008065,67255.33253027032
+0.004642857142857143,0.24285714285714288,47891.144265271985,97134.12197996283,60660.184246988516
+0.004642857142857143,0.27142857142857146,47265.93372802409,104547.36499462067,67332.33592763726
+0.004642857142857143,0.30000000000000004,42361.197391185386,99293.26713826405,63913.776697906105
+0.004642857142857143,0.3285714285714286,39767.5250477298,99782.40465295615,65282.753161982844
+0.004642857142857143,0.3571428571428572,35486.12714721924,94239.32324985541,61970.18819472516
+0.004642857142857143,0.3857142857142858,29659.161903843884,81517.07645972351,52558.15058364065
+0.004642857142857143,0.41428571428571437,31386.731961244026,91421.80864049352,59590.029542726734
+0.004642857142857143,0.44285714285714284,31036.380693528034,96699.00884074104,64408.68800069652
+0.004642857142857143,0.4714285714285714,29223.010646078073,96101.8902382448,64553.27273151286
+0.004642857142857143,0.5,29015.427251696197,101309.52286117624,68975.82185682925
+0.005285714285714286,0.1,56346.9960684324,72110.7640692533,56086.690283642514
+0.005285714285714286,0.1285714285714286,58662.27129308898,84500.44360731587,57797.90543342392
+0.005285714285714286,0.15714285714285714,53050.4033426409,82346.0827588137,51545.603010553416
+0.005285714285714286,0.18571428571428572,56986.08874633864,95291.9402304712,57321.00965603448
+0.005285714285714286,0.2142857142857143,54683.05324966884,97677.71421073252,57842.270092847684
+0.005285714285714286,0.24285714285714288,46429.56917805238,87820.87105552827,50147.850553790086
+0.005285714285714286,0.27142857142857146,46184.041131585,90729.31097194669,49512.9078245782
+0.005285714285714286,0.30000000000000004,45811.84154762719,99012.70386813514,58594.202796002515
+0.005285714285714286,0.3285714285714286,40836.49295153637,93743.99444717383,56321.80466601576
+0.005285714285714286,0.3571428571428572,36557.4161634567,89150.81807824576,54791.95437963695
+0.005285714285714286,0.3857142857142858,36283.08730791475,92783.79933582502,57113.47285589019
+0.005285714285714286,0.41428571428571437,35888.285217753626,96887.41552415717,60375.24342199364
+0.005285714285714286,0.44285714285714284,32023.30136441937,91433.29076311713,57811.12617707602
+0.005285714285714286,0.4714285714285714,30186.50255595426,90947.9878707222,58329.52233630388
+0.005285714285714286,0.5,28491.87170166853,90257.99671084135,58513.12524238033
+0.005928571428571429,0.1,57638.743688161136,71766.95132928279,54480.62133631009
+0.005928571428571429,0.1285714285714286,59795.95639517166,82859.78232722434,52977.31500550369
+0.005928571428571429,0.15714285714285714,59231.30347199334,88427.30499748135,50353.80102113793
+0.005928571428571429,0.18571428571428572,55562.12763540028,88235.4053824292,47855.77319979353
+0.005928571428571429,0.2142857142857143,50271.82059750872,86719.7343797613,49212.226126703186
+0.005928571428571429,0.24285714285714288,47434.58323020379,86560.04432932632,48531.43415277269
+0.005928571428571429,0.27142857142857146,44832.70333890959,83900.7442789535,44024.110362497755
+0.005928571428571429,0.30000000000000004,44463.88074825405,91133.91533448176,51886.12309500563
+0.005928571428571429,0.3285714285714286,44168.82344885914,94554.07307603807,53667.32336179501
+0.005928571428571429,0.3571428571428572,37745.59351558758,85070.2980199128,49620.23327280303
+0.005928571428571429,0.3857142857142858,35492.996503753086,82666.46044241017,47551.71760374625
+0.005928571428571429,0.41428571428571437,33435.64052897681,81780.67958594784,47739.88901499369
+0.005928571428571429,0.44285714285714284,31601.426611152914,82550.16811524805,50085.98818042177
+0.005928571428571429,0.4714285714285714,29833.74840703727,81876.52137113575,50420.84013407877
+0.005928571428571429,0.5,25114.579300501864,71484.34831624181,44094.03571992712
+0.006571428571428572,0.1,56511.91103662291,69481.35057431235,45190.75592813478
+0.006571428571428572,0.1285714285714286,57123.54259488436,77512.48616302137,46271.425762277606
+0.006571428571428572,0.15714285714285714,61019.73122057699,87649.02566464138,46094.208705791636
+0.006571428571428572,0.18571428571428572,59843.13817637951,91829.77301322753,47969.029253549415
+0.006571428571428572,0.2142857142857143,57022.07025391634,92430.44970491478,46971.98001380589
+0.006571428571428572,0.24285714285714288,53865.218650381525,93194.04052213606,48483.54496116318
+0.006571428571428572,0.27142857142857146,50895.14122984311,91722.07869602801,46902.0957885834
+0.006571428571428572,0.30000000000000004,47957.195791070946,91130.8767408163,47586.129711258014
+0.006571428571428572,0.3285714285714286,40803.88570282523,81381.96942867272,43227.143003463905
+0.006571428571428572,0.3571428571428572,40592.80991225179,85452.06860156343,46763.802483815394
+0.006571428571428572,0.3857142857142858,36344.92553715462,78997.09610014863,42910.175693559126
+0.006571428571428572,0.41428571428571437,34217.96189327181,77889.09498945902,42977.36217249892
+0.006571428571428572,0.44285714285714284,32258.19346770231,78298.5648913875,45067.445316260484
+0.006571428571428572,0.4714285714285714,30772.555393934115,76867.67910274191,44098.43688409898
+0.006571428571428572,0.5,29053.703523609925,75868.04401776109,44141.61548870965
+0.007214285714285715,0.1,57535.65819366794,69300.05350215486,44950.46833788347
+0.007214285714285715,0.1285714285714286,60298.47373399419,79709.28400258704,44587.85048413878
+0.007214285714285715,0.15714285714285714,57773.38630605531,82373.67856791937,43415.77871903783
+0.007214285714285715,0.18571428571428572,56384.687782414294,84529.64013905384,41360.6017885461
+0.007214285714285715,0.2142857142857143,51837.2125359917,82763.98177063576,41680.58306540383
+0.007214285714285715,0.24285714285714288,48747.58008034776,80340.44664398853,38273.75717874888
+0.007214285714285715,0.27142857142857146,49096.68085894988,84803.5209575811,40996.28961697999
+0.007214285714285715,0.30000000000000004,48751.3287174831,88995.37269295589,44437.06146292623
+0.007214285714285715,0.3285714285714286,43719.96637396533,83184.3197019919,41998.03479207218
+0.007214285714285715,0.3571428571428572,43431.07393548549,87215.21688671091,45578.06890815356
+0.007214285714285715,0.3857142857142858,38941.6850971076,80902.77209594467,42330.710757395784
+0.007214285714285715,0.41428571428571437,34804.05862898863,74631.84630816971,38973.00314861226
+0.007214285714285715,0.44285714285714284,32995.89946268991,73666.46511588858,39131.04913277903
+0.007214285714285715,0.4714285714285714,31328.161550612254,73233.41454344192,39930.311906642375
+0.007214285714285715,0.5,29760.928125446975,72433.1792246317,40181.34246739759
+0.007857142857142858,0.1,54283.62971747688,64712.45976517559,38164.166859658835
+0.007857142857142858,0.1285714285714286,60241.78180794895,77746.58222523492,38352.91205340763
+0.007857142857142858,0.15714285714285714,61499.491677912454,84815.36442994759,39933.96848091741
+0.007857142857142858,0.18571428571428572,59420.38388691613,86314.34622483692,38892.72219762315
+0.007857142857142858,0.2142857142857143,50930.10866350334,79140.15579753857,37398.09693098923
+0.007857142857142858,0.24285714285714288,51071.45857177505,81874.65845237281,37139.082923613656
+0.007857142857142858,0.27142857142857146,45897.58553926904,77648.35217318301,36447.49520711936
+0.007857142857142858,0.30000000000000004,48239.049305663524,85092.73496557857,40439.29759018911
+0.007857142857142858,0.3285714285714286,45500.964650717346,84094.10616787209,40927.09414929012
+0.007857142857142858,0.3571428571428572,43058.34610108146,81568.07514194565,39163.553253400176
+0.007857142857142858,0.3857142857142858,40690.39813744939,80166.87385650587,39227.92073618945
+0.007857142857142858,0.41428571428571437,36702.791713359984,75733.87232479897,38256.40380034949
+0.007857142857142858,0.44285714285714284,36504.92231080653,78038.01087057918,39850.23620499873
+0.007857142857142858,0.4714285714285714,34699.32215222542,76867.26820417785,39855.46861897625
+0.007857142857142858,0.5,32930.309826431425,76421.14627894104,40794.512612483755
+0.0085,0.1,57189.43489779292,68078.85760411937,39369.34632060745
+0.0085,0.1285714285714286,61647.89128177064,79107.5708851313,40885.163151970446
+0.0085,0.15714285714285714,61799.048271465974,83718.7141510314,37542.77247280801
+0.0085,0.18571428571428572,59881.814442696246,85630.19177741432,37756.64941698123
+0.0085,0.2142857142857143,54307.84558056231,81720.30962929335,36135.80119340053
+0.0085,0.24285714285714288,51624.45770610879,80225.22854459862,34472.07778993912
+0.0085,0.27142857142857146,52246.76390818464,84603.50777918048,37096.020458827996
+0.0085,0.30000000000000004,49644.66811649182,84394.86048407659,38666.52559996517
+0.0085,0.3285714285714286,44441.66304749349,78548.87907351322,36407.44932867332
+0.0085,0.3571428571428572,44198.97628435146,79542.58712818951,35903.17060901363
+0.0085,0.3857142857142858,41829.42396751264,80101.60826176454,38747.60605842004
+0.0085,0.41428571428571437,37666.303890523064,74294.11168525071,36126.47482043023
+0.0085,0.44285714285714284,35623.57225017258,73267.77137766556,36552.50913613722
+0.0085,0.4714285714285714,33812.11174246429,72119.6186236404,36629.87503560302
+0.0085,0.5,32203.576796164205,71013.2887071598,36607.77953059993
+0.009142857142857144,0.1,58182.9640512186,68208.98262013294,35095.17827812016
+0.009142857142857144,0.1285714285714286,60662.911142965524,76281.93273735858,33167.77658969782
+0.009142857142857144,0.15714285714285714,61124.91860498381,81477.05435476147,34351.409142356075
+0.009142857142857144,0.18571428571428572,60389.051155776404,83858.50298567794,34342.06386962768
+0.009142857142857144,0.2142857142857143,58461.20744025224,85697.47679492043,36527.72580954099
+0.009142857142857144,0.24285714285714288,55587.72921685809,84158.00977108351,34853.13377590936
+0.009142857142857144,0.27142857142857146,52814.48586700331,83292.42221938919,35123.0307672216
+0.009142857142857144,0.30000000000000004,49957.80256590444,82671.46303319008,36438.4319624878
+0.009142857142857144,0.3285714285714286,47300.86048967358,81096.9327037767,36232.253090465856
+0.009142857142857144,0.3571428571428572,44644.63374979011,77699.88951623435,33610.38027499829
+0.009142857142857144,0.3857142857142858,42330.22946996598,76398.02657819292,33912.34368442982
+0.009142857142857144,0.41428571428571437,40128.94117573895,75735.64077835337,35011.34241826854
+0.009142857142857144,0.44285714285714284,38132.52649112879,74542.68365806183,35223.06609660388
+0.009142857142857144,0.4714285714285714,34413.94325532801,69314.1252585494,33165.34344127213
+0.009142857142857144,0.5,32690.025930187003,68164.32445258423,33269.42232386615
+0.009785714285714286,0.1,51269.40808763627,59725.33119010454,29543.46957108475
+0.009785714285714286,0.1285714285714286,60590.826665878936,75333.68002686552,32176.929586258786
+0.009785714285714286,0.15714285714285714,58505.28069601556,76642.55711966965,31310.35093562851
+0.009785714285714286,0.18571428571428572,60488.903745623466,82743.73257318052,32714.769332902157
+0.009785714285714286,0.2142857142857143,58285.569395712715,81810.00664859048,30480.126767246467
+0.009785714285714286,0.24285714285714288,55912.34991760001,83500.05192691588,34345.664855318064
+0.009785714285714286,0.27142857142857146,50461.85131249184,79581.22194638093,34775.30995329631
+0.009785714285714286,0.30000000000000004,47800.20104103829,77216.5302535432,32953.235600524866
+0.009785714285714286,0.3285714285714286,45276.74754385855,74649.2527434531,31221.252973551156
+0.009785714285714286,0.3571428571428572,42767.41551980398,73893.34733987974,32417.818739311326
+0.009785714285714286,0.3857142857142858,42710.03015839453,74687.25977947898,31835.60758763938
+0.009785714285714286,0.41428571428571437,40474.492216466315,73900.08827805796,32859.83558000262
+0.009785714285714286,0.44285714285714284,38417.79710387373,72646.29901617527,33108.665505189645
+0.009785714285714286,0.4714285714285714,36552.02314413468,70883.95707862513,32563.695091448433
+0.009785714285714286,0.5,34414.47629057033,69615.29414307125,32824.00889360141
+0.01042857142857143,0.1,57634.41854403891,66464.56009042231,31462.635547664504
+0.01042857142857143,0.1285714285714286,60962.95011100677,75063.01443709928,30550.587997587078
+0.01042857142857143,0.15714285714285714,63384.394687222106,81765.96960031342,32033.10053606632
+0.01042857142857143,0.18571428571428572,58598.37470289365,77464.40891847687,26477.961310563995
+0.01042857142857143,0.2142857142857143,58894.34223605576,81395.33081635066,28812.22011679032
+0.01042857142857143,0.24285714285714288,56225.32163543758,81989.32232013482,31368.10535817563
+0.01042857142857143,0.27142857142857146,53519.94172548679,80550.61913483126,30901.988823452593
+0.01042857142857143,0.30000000000000004,50552.78300445892,78745.37492055396,30776.25405687776
+0.01042857142857143,0.3285714285714286,45355.4903682191,73675.12299115055,30054.93383125727
+0.01042857142857143,0.3571428571428572,42959.68320159701,72464.14568628305,30553.2708434649
+0.01042857142857143,0.3857142857142858,40680.04326154688,70559.43844938774,30036.837634716205
+0.01042857142857143,0.41428571428571437,40532.80379537441,72621.57356795044,31528.8518417174
+0.01042857142857143,0.44285714285714284,38577.92382385682,70625.70382149365,30754.7761941779
+0.01042857142857143,0.4714285714285714,36518.84728328804,69149.22808129303,30829.806929061386
+0.01042857142857143,0.5,34704.991890597696,67831.12925976826,30882.16805119371
+0.011071428571428572,0.1,57744.01091597689,66131.92529648448,30260.63249046959
+0.011071428571428572,0.1285714285714286,58249.780409947714,70461.95089520587,25652.029997947775
+0.011071428571428572,0.15714285714285714,63551.20484885045,81040.46064514524,30513.61239233586
+0.011071428571428572,0.18571428571428572,62080.78897021784,81891.93131261622,29508.24617322032
+0.011071428571428572,0.2142857142857143,59943.77394730132,80905.5269718472,27186.245065640145
+0.011071428571428572,0.24285714285714288,54707.47292367584,76485.62671811742,26186.359119035325
+0.011071428571428572,0.27142857142857146,52064.03306509288,76677.37654430009,28625.800169775066
+0.011071428571428572,0.30000000000000004,52123.904998725135,78725.7795318437,29347.46877071661
+0.011071428571428572,0.3285714285714286,49309.7919789056,76264.6006349463,28424.798069663742
+0.011071428571428572,0.3571428571428572,46696.1091367591,73639.69926617373,27251.982449114126
+0.011071428571428572,0.3857142857142858,44225.49192355769,72660.63461545637,28395.957946157054
+0.011071428571428572,0.41428571428571437,41919.3637514692,70318.21480898751,27556.732213108124
+0.011071428571428572,0.44285714285714284,39764.84504138656,68730.89997574642,27622.202944633427
+0.011071428571428572,0.4714285714285714,37810.871404406695,67471.95059296893,27944.396952755265
+0.011071428571428572,0.5,36075.1210191479,66121.98733776531,27957.109036635346
+0.011714285714285714,0.1,58772.04061790659,66798.27447341745,27860.68784211541
+0.011714285714285714,0.1285714285714286,61306.68419537191,73696.5076896288,26057.727484281815
+0.011714285714285714,0.15714285714285714,63120.81403660425,78893.61360812435,27415.546654560603
+0.011714285714285714,0.18571428571428572,62281.776607110645,80801.43702402349,27326.611405401705
+0.011714285714285714,0.2142857142857143,60148.28449760885,79952.13783247618,25599.83750785132
+0.011714285714285714,0.24285714285714288,57778.60419213811,79480.31649243477,26071.334759112193
+0.011714285714285714,0.27142857142857146,52251.059170030036,75625.9573460364,27173.251477291808
+0.011714285714285714,0.30000000000000004,49242.46156118432,74155.53678148768,27811.485610164127
+0.011714285714285714,0.3285714285714286,49017.05695362591,75760.13987350823,28554.54281503224
+0.011714285714285714,0.3571428571428572,41693.1423691395,66628.61491159882,25849.32277784342
+0.011714285714285714,0.3857142857142858,41582.908341987924,67297.38481414916,25531.491340849872
+0.011714285714285714,0.41428571428571437,35323.004294749415,58951.25018314563,23042.875166821108
+0.011714285714285714,0.44285714285714284,33558.6447783285,57628.98140558826,23062.52118767918
+0.011714285714285714,0.4714285714285714,31849.967175577272,56319.77178997644,23075.28987008787
+0.011714285714285714,0.5,30323.144023358058,55104.52466589139,23044.013906008047
+0.012357142857142856,0.1,57895.09011697689,65199.43669317977,26470.500608205173
+0.012357142857142856,0.1285714285714286,62235.83061983444,74449.22814845678,26948.099595151776
+0.012357142857142856,0.15714285714285714,62571.459554356,77706.03777277505,25976.68609834516
+0.012357142857142856,0.18571428571428572,59384.9678229613,76410.99455911343,25172.56955678136
+0.012357142857142856,0.2142857142857143,60623.117065192375,80854.65569430539,26988.713083251972
+0.012357142857142856,0.24285714285714288,57736.64377833471,79776.15550214241,27061.972886362648
+0.012357142857142856,0.27142857142857146,52229.41928781538,74617.03169694218,25998.122675232116
+0.012357142857142856,0.30000000000000004,49399.14481439792,73109.99451558136,26462.336439450002
+0.012357142857142856,0.3285714285714286,49303.877977748896,74652.58878178618,27039.499609455164
+0.012357142857142856,0.3571428571428572,41888.39192107015,65576.87455737214,24541.448449325566
+0.012357142857142856,0.3857142857142858,41731.50058208593,66148.03785735162,24215.332934496677
+0.012357142857142856,0.41428571428571437,35579.540186939135,58013.268303679695,21880.775471545578
+0.012357142857142856,0.44285714285714284,35637.18767296223,59877.07922774113,23379.336721164676
+0.012357142857142856,0.4714285714285714,33882.342257199896,58505.04655816816,23381.277042431328
+0.012357142857142856,0.5,32287.613019197637,57243.936351763994,23370.795352640842
+0.013,0.1,58824.34755629629,66145.97304121245,25405.324663403833
+0.013,0.1285714285714286,62440.23364842258,74845.78715244308,27928.46237336832
+0.013,0.15714285714285714,62180.93967388263,77263.02730206902,26081.376086591503
+0.013,0.18571428571428572,58236.532902780455,74541.26112524176,24082.814824534675
+0.013,0.2142857142857143,56664.32007636768,74555.82526352447,23500.913369941725
+0.013,0.24285714285714288,57388.81912052786,77728.29024695119,24906.586289264364
+0.013,0.27142857142857146,54914.98341925733,78206.80254600407,27775.850084265647
+0.013,0.30000000000000004,51940.03204271117,74801.26671849056,25308.044026467494
+0.013,0.3285714285714286,49186.91893333996,73076.17547154558,25569.154954260237
+0.013,0.3571428571428572,46625.67300887432,71009.47699516793,25213.5077455986
+0.013,0.3857142857142858,39715.337478000765,61971.97451073065,22322.561299991918
+0.013,0.41428571428571437,37691.19106721973,60397.796333356135,22296.126151578657
+0.013,0.44285714285714284,35845.86892991959,58894.33874416202,22215.255811220075
+0.013,0.4714285714285714,34081.23466582918,57575.167147592365,22318.903411670322
+0.013,0.5,32449.349528298953,56274.15920672135,22324.793153027655
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-max.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-max.csv
new file mode 100644
index 0000000000..e1b519dc3b
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-max.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,63134.66922469387,81568.81157455489,91792.46851698685
+0.004,0.1285714285714286,62628.59349133401,97472.19548385893,114179.55669429917
+0.004,0.15714285714285714,60157.33434493567,107904.29356782607,111593.34338716802
+0.004,0.18571428571428572,58554.047686270605,121669.71590972692,131421.23983059806
+0.004,0.2142857142857143,54477.10897320291,113151.48527683286,93427.8743415775
+0.004,0.24285714285714288,52059.11570201679,120746.21532204402,100318.38544536414
+0.004,0.27142857142857146,49958.63085428573,116959.97787327193,85742.8828800816
+0.004,0.30000000000000004,46837.805361906954,125261.55638335584,101689.53166957918
+0.004,0.3285714285714286,43664.985354568686,121904.07256173779,92791.85981430464
+0.004,0.3571428571428572,40865.75000155471,129140.81243275851,104182.69610263615
+0.004,0.3857142857142858,38496.69754541327,133378.5947599828,108945.85211534752
+0.004,0.41428571428571437,36153.49615984975,125473.5383486421,98310.52391465228
+0.004,0.44285714285714284,34613.42388417982,130025.98512447061,105312.04012412859
+0.004,0.4714285714285714,32500.456750890855,115367.0064614026,86750.87653683746
+0.004,0.5,30266.434163966645,129795.58525133549,104508.15971293711
+0.004642857142857143,0.1,60173.98253742203,78490.29780909323,76031.05011784751
+0.004642857142857143,0.1285714285714286,62475.712290346455,92707.11611246197,86633.79755101026
+0.004642857142857143,0.15714285714285714,60368.66846599212,103910.7320974372,97514.15971293712
+0.004642857142857143,0.18571428571428572,58645.28979297393,107789.04011790971,91135.79317292804
+0.004642857142857143,0.2142857142857143,57685.07234407745,120872.31784628205,106823.50732893455
+0.004642857142857143,0.24285714285714288,54284.026355557486,115284.54092947184,93559.74737719294
+0.004642857142857143,0.27142857142857146,50998.79998258717,118202.89689740735,88203.46354811228
+0.004642857142857143,0.30000000000000004,48381.861903843885,118085.40642160186,93530.49194967691
+0.004642857142857143,0.3285714285714286,45201.0516601265,124140.81826605556,98057.93052282014
+0.004642857142857143,0.3571428571428572,43303.94533616084,122692.07503684679,98147.30466850329
+0.004642857142857143,0.3857142857142858,41102.00560941786,117252.66102822743,87162.30285881307
+0.004642857142857143,0.41428571428571437,38769.669865237156,120675.30672072934,92588.30062002104
+0.004642857142857143,0.44285714285714284,36096.29066983415,137537.22444512162,117269.3810361876
+0.004642857142857143,0.4714285714285714,34131.525177082236,137495.11437117928,117003.25063898857
+0.004642857142857143,0.5,31986.31366720356,117016.97564069874,88557.76303629953
+0.005285714285714286,0.1,59931.0175682987,77619.39642166405,72271.360426863
+0.005285714285714286,0.1285714285714286,62674.418890429784,90423.79797389319,71666.28887880048
+0.005285714285714286,0.15714285714285714,61768.36871661246,100939.59955472914,87654.81375115826
+0.005285714285714286,0.18571428571428572,59838.3341521508,103346.69138873514,79296.19870523195
+0.005285714285714286,0.2142857142857143,58259.36456862831,109883.08505544119,83968.69643845498
+0.005285714285714286,0.24285714285714288,54212.142362298735,106777.22874857743,81596.10693963346
+0.005285714285714286,0.27142857142857146,51533.477304245615,104886.12070820456,67693.88828427685
+0.005285714285714286,0.30000000000000004,48649.338760331084,117424.36769671831,93164.2282697247
+0.005285714285714286,0.3285714285714286,45745.785884416146,114892.27751071201,81877.89580910567
+0.005285714285714286,0.3571428571428572,43570.84177337206,116296.41421384196,85661.41987922961
+0.005285714285714286,0.3857142857142858,41194.62718515433,109155.31496694672,77335.12063979702
+0.005285714285714286,0.41428571428571437,38754.57114072673,108226.37903993134,77152.37877873894
+0.005285714285714286,0.44285714285714284,36253.22693266833,111123.68170595953,79391.06124961909
+0.005285714285714286,0.4714285714285714,33802.48097959589,113022.19468784399,83649.02882444763
+0.005285714285714286,0.5,31989.527142244147,112357.32291465849,83594.08657906356
+0.005928571428571429,0.1,64216.16478753241,78470.67043115405,109484.6771972811
+0.005928571428571429,0.1285714285714286,63143.473821680214,92760.21545885908,81047.36852382758
+0.005928571428571429,0.15714285714285714,63799.48383405576,95081.97507478188,71832.6049340489
+0.005928571428571429,0.18571428571428572,63554.72422435185,102746.18205110666,66373.16017935214
+0.005928571428571429,0.2142857142857143,58821.064383927944,104713.1719827613,75165.71049931282
+0.005928571428571429,0.24285714285714288,55779.58249015864,113227.54216702632,82288.85713397306
+0.005928571428571429,0.27142857142857146,53065.231136622286,101373.06106305309,61025.95812215099
+0.005928571428571429,0.30000000000000004,49888.75380128233,111504.9743596122,78089.47858533218
+0.005928571428571429,0.3285714285714286,47297.73543696867,109726.5903445874,74158.46044489773
+0.005928571428571429,0.3571428571428572,44764.212237486085,113063.97712700789,83113.46362273867
+0.005928571428571429,0.3857142857142858,41783.5026896599,102376.96261839167,70726.85964639523
+0.005928571428571429,0.41428571428571437,39416.34854260857,101888.88418604362,70440.52290719585
+0.005928571428571429,0.44285714285714284,37299.24154700531,109098.81407453933,79560.15496172286
+0.005928571428571429,0.4714285714285714,35113.66076081616,108474.13256136463,79278.57784466515
+0.005928571428571429,0.5,33105.92699050379,107627.44884671117,79079.842849236
+0.006571428571428572,0.1,62017.98975130752,74552.97120042786,66802.17058351629
+0.006571428571428572,0.1285714285714286,62753.011971318585,87228.68600319649,77893.57262703593
+0.006571428571428572,0.15714285714285714,64317.83286173594,91056.08379301122,59774.418467546835
+0.006571428571428572,0.18571428571428572,63397.84460295645,100427.45356061218,69680.09965112159
+0.006571428571428572,0.2142857142857143,60379.44686911151,102761.8452124054,69351.91293586484
+0.006571428571428572,0.24285714285714288,58203.297865063025,102249.07419729976,68622.89011884255
+0.006571428571428572,0.27142857142857146,54151.93472677409,99156.2305333922,59632.39800747507
+0.006571428571428572,0.30000000000000004,51980.54262100359,99595.17708223207,64067.26328816365
+0.006571428571428572,0.3285714285714286,49152.04707682166,99928.34436353008,62823.57207977561
+0.006571428571428572,0.3571428571428572,45624.727557664446,108176.36722408443,76313.31862364043
+0.006571428571428572,0.3857142857142858,43025.05721979341,97875.98899260578,64646.680493280524
+0.006571428571428572,0.41428571428571437,40564.506912270444,96876.29753546308,64680.06144240395
+0.006571428571428572,0.44285714285714284,38018.45854192449,97423.62443019633,65228.697346409564
+0.006571428571428572,0.4714285714285714,36028.048880293034,106054.04680319152,74949.45232927657
+0.006571428571428572,0.5,33894.89496955864,105382.77228375446,74702.34408989994
+0.007214285714285715,0.1,61317.94369438001,74035.1559878359,57910.18952618454
+0.007214285714285715,0.1285714285714286,63618.5629815735,86317.31424555818,61549.551370949164
+0.007214285714285715,0.15714285714285714,65127.076821661554,91753.52740343654,54027.00728229303
+0.007214285714285715,0.18571428571428572,62795.84573479021,95812.40898999384,57323.77446657668
+0.007214285714285715,0.2142857142857143,61274.81316658478,104631.83791145576,69105.31274059242
+0.007214285714285715,0.24285714285714288,57038.5086784286,99386.67758285085,60691.23243014656
+0.007214285714285715,0.27142857142857146,57204.82041778347,98199.15160975368,54788.915665947316
+0.007214285714285715,0.30000000000000004,54752.56717308971,98912.54775778757,59854.16175272543
+0.007214285714285715,0.3285714285714286,50030.97310340109,99328.20400370643,58962.292324052694
+0.007214285714285715,0.3571428571428572,47125.91621942649,107430.64474723415,73767.67752688103
+0.007214285714285715,0.3857142857142858,44620.12327037766,100272.09032282137,62736.4713901033
+0.007214285714285715,0.41428571428571437,41045.78640680096,103345.3961480339,69759.3084744498
+0.007214285714285715,0.44285714285714284,38985.92487608908,102447.23580077237,69574.9063252094
+0.007214285714285715,0.4714285714285714,37116.86776823527,101308.14082001978,69448.2521874864
+0.007214285714285715,0.5,34765.02731948185,100514.45488523082,69189.34725530316
+0.007857142857142858,0.1,60315.06389885635,73121.3405762402,57297.57257728499
+0.007857142857142858,0.1285714285714286,63572.90835255999,82193.47333660859,52091.42057574265
+0.007857142857142858,0.15714285714285714,65799.64739025256,90573.03878707223,48560.971474057995
+0.007857142857142858,0.18571428571428572,62469.40923252964,97262.9088376316,62819.499182219
+0.007857142857142858,0.2142857142857143,59540.69354046307,93294.82306702073,51440.86672346566
+0.007857142857142858,0.24285714285714288,57202.62978464064,92188.0263555575,51895.56557484096
+0.007857142857142858,0.27142857142857146,54449.95169184272,96452.07655425028,55943.749118475636
+0.007857142857142858,0.30000000000000004,52308.54819310825,91361.05188400569,52824.53631507267
+0.007857142857142858,0.3285714285714286,49193.45073724666,98094.67385153078,61556.25314519186
+0.007857142857142858,0.3571428571428572,46950.259898881224,92574.28963750225,55160.743764031315
+0.007857142857142858,0.3857142857142858,44435.7997151759,95332.90484511912,62687.852874049284
+0.007857142857142858,0.41428571428571437,41945.098115061475,87738.24545867254,51410.91783011302
+0.007857142857142858,0.44285714285714284,39903.294506874954,86491.96473902525,46900.19341919514
+0.007857142857142858,0.4714285714285714,37948.810430283396,85858.08121840039,47287.95766195483
+0.007857142857142858,0.5,35948.371925547726,89937.696718304,54304.37547030183
+0.0085,0.1,60096.128780293664,72602.51513361235,48544.972394450255
+0.0085,0.1285714285714286,67171.32068830419,87151.14894807868,57919.59380849625
+0.0085,0.15714285714285714,66299.6303381198,90793.50848564376,49168.44528330046
+0.0085,0.18571428571428572,63002.02742520259,95728.827581918,58584.62324239277
+0.0085,0.2142857142857143,59754.69223450104,93209.63812414101,51150.993551035106
+0.0085,0.24285714285714288,57479.11837612949,89852.9444468629,44786.24080696017
+0.0085,0.27142857142857146,55707.95874403766,96157.35231746071,52374.262125235546
+0.0085,0.30000000000000004,52597.43496620045,101352.14146678192,62033.49907027941
+0.0085,0.3285714285714286,50386.763950472945,98904.29814491204,63971.59823632938
+0.0085,0.3571428571428572,47462.520058954855,89613.24678329115,47282.32530892221
+0.0085,0.3857142857142858,45319.420762308684,104693.3594194066,74731.34713092582
+0.0085,0.41428571428571437,42587.297777998894,104237.28709398572,74599.11425923965
+0.0085,0.44285714285714284,40060.37515935847,103431.39509082657,74610.88368853428
+0.0085,0.4714285714285714,37611.31455650151,102705.51980398131,74454.24461290664
+0.0085,0.5,35573.49475438585,101935.12012984992,74493.2102287921
+0.009142857142857144,0.1,61691.360625866764,74866.06570854658,51084.3478460955
+0.009142857142857144,0.1285714285714286,66938.9893222057,83269.32292709622,44606.37703745623
+0.009142857142857144,0.15714285714285714,64136.291528037764,84419.22177100889,42811.46089887502
+0.009142857142857144,0.18571428571428572,64453.758857221044,91568.43645250963,55326.96414823291
+0.009142857142857144,0.2142857142857143,60549.42157076138,95459.6828377933,54945.2783751345
+0.009142857142857144,0.24285714285714288,58469.77952873426,89801.31888483278,49537.28909646082
+0.009142857142857144,0.27142857142857146,56528.10590730158,94310.70604038534,48696.38685082803
+0.009142857142857144,0.30000000000000004,52998.35294556626,99090.10338244165,58155.3737228002
+0.009142857142857144,0.3285714285714286,50816.96964571116,96250.8313505513,60044.72309251807
+0.009142857142857144,0.3571428571428572,48145.24506688391,87524.57835461221,44275.29986753814
+0.009142857142857144,0.3857142857142858,45460.8549698074,86145.44188158035,45575.87460276987
+0.009142857142857144,0.41428571428571437,43285.69525065143,84732.11186497597,45886.95070304289
+0.009142857142857144,0.44285714285714284,41173.19481844019,83543.7680238307,45951.49827426447
+0.009142857142857144,0.4714285714285714,39436.54150160758,84023.32655891443,48382.970043718626
+0.009142857142857144,0.5,37526.52009626806,83108.90559138315,48870.44262162548
+0.009785714285714286,0.1,61842.052624050855,72242.2694386229,40241.38099887438
+0.009785714285714286,0.1285714285714286,63347.663385177955,80613.90513740586,49784.74835355499
+0.009785714285714286,0.15714285714285714,65450.09157903247,88527.18680853974,44158.25937649642
+0.009785714285714286,0.18571428571428572,63922.34887842737,86690.28227436397,40631.10840106715
+0.009785714285714286,0.2142857142857143,61698.98376253879,87957.29737999142,40935.20071392589
+0.009785714285714286,0.24285714285714288,61955.46152076168,91627.91815971294,43648.67110279163
+0.009785714285714286,0.27142857142857146,57063.977276260724,90868.51328039003,51175.87524953205
+0.009785714285714286,0.30000000000000004,53480.85885038028,92457.7556234103,52464.98821524739
+0.009785714285714286,0.3285714285714286,50979.51433137854,94465.8244787035,54245.296981983956
+0.009785714285714286,0.3571428571428572,47665.98329612378,87929.85746357299,48079.355538833726
+0.009785714285714286,0.3857142857142858,45434.27681419892,83837.03379954104,42627.75118313941
+0.009785714285714286,0.41428571428571437,43526.8580792408,82537.60495270551,42830.76388828427
+0.009785714285714286,0.44285714285714284,41538.14292199675,81086.03849478549,43208.12876785593
+0.009785714285714286,0.4714285714285714,39466.32126665879,78929.05770486502,42734.43392764969
+0.009785714285714286,0.5,37305.459157592304,85033.35277765685,53184.77611457643
+0.01042857142857143,0.1,60534.84539275253,69506.41111684628,51050.28519723138
+0.01042857142857143,0.1285714285714286,66213.91301049122,81287.94944061294,47574.10909136134
+0.01042857142857143,0.15714285714285714,68496.73443573114,87559.97027381671,44487.170838489816
+0.01042857142857143,0.18571428571428572,67714.39300750618,85405.72705393622,35223.80707831418
+0.01042857142857143,0.2142857142857143,62258.379226497345,87991.69903172244,40651.66653192455
+0.01042857142857143,0.24285714285714288,58830.276801761196,89751.3087729554,42410.18341925734
+0.01042857142857143,0.27142857142857146,56868.33540836189,86394.72933626034,39871.45596109476
+0.01042857142857143,0.30000000000000004,52948.959198014934,85434.02956449275,40994.325433299535
+0.01042857142857143,0.3285714285714286,50700.215471296826,89199.31490475805,46196.95402391778
+0.01042857142857143,0.3571428571428572,48115.16182113295,89214.33884117636,50754.36897780487
+0.01042857142857143,0.3857142857142858,45463.50573690461,88027.14223170254,50723.024931436965
+0.01042857142857143,0.41428571428571437,43325.61542527721,86533.99756220421,50641.77580985191
+0.01042857142857143,0.44285714285714284,41216.372149426934,85460.10087001947,50540.413517328896
+0.01042857142857143,0.4714285714285714,39108.47784528704,83931.96452758378,50400.971710374935
+0.01042857142857143,0.5,37360.084228331914,82598.16517310216,50359.99024881687
+0.011071428571428572,0.1,60230.64566762645,68808.12406639263,48392.55003389284
+0.011071428571428572,0.1285714285714286,66374.45176335968,80688.05023600599,38636.429375439206
+0.011071428571428572,0.15714285714285714,68751.81274992072,87688.26523466893,42086.188294848915
+0.011071428571428572,0.18571428571428572,66492.64153829889,87717.25189519968,40304.273766954175
+0.011071428571428572,0.2142857142857143,64774.99889926058,88409.21259196149,35182.19938930728
+0.011071428571428572,0.24285714285714288,61205.136149650825,86398.94376278754,34143.555910721945
+0.011071428571428572,0.27142857142857146,58287.38584959049,87275.50241602976,40409.78020037188
+0.011071428571428572,0.30000000000000004,55527.84920491788,85444.81387553559,36549.430525929565
+0.011071428571428572,0.3285714285714286,52551.73521308947,84004.51728534026,38334.38172648179
+0.011071428571428572,0.3571428571428572,49521.27905920983,79761.75184233929,33672.08481290538
+0.011071428571428572,0.3857142857142858,47026.513404767386,88855.40507832661,48795.36501638671
+0.011071428571428572,0.41428571428571437,44301.287579057345,83308.43449978545,43937.29390986376
+0.011071428571428572,0.44285714285714284,42431.645686283046,82056.54656376515,44035.33080018158
+0.011071428571428572,0.4714285714285714,40117.26619859329,80776.03451471073,43999.51165726582
+0.011071428571428572,0.5,38434.9261260813,79633.0144588653,43916.73220937682
+0.011714285714285714,0.1,63378.95994427896,72240.4526961897,37359.273698546654
+0.011714285714285714,0.1285714285714286,66850.91980771265,82553.3264345371,39105.79016299649
+0.011714285714285714,0.15714285714285714,66615.88598329613,86173.2440718652,49637.99431595575
+0.011714285714285714,0.18571428571428572,66543.76674274413,86770.9940858577,38555.08496837708
+0.011714285714285714,0.2142857142857143,64726.908850069354,87168.95550400806,33422.64147611022
+0.011714285714285714,0.24285714285714288,61751.38336204377,86471.66048718602,35004.12832009751
+0.011714285714285714,0.27142857142857146,58455.65379568535,85836.3353337355,38250.797283599
+0.011714285714285714,0.30000000000000004,56561.89424195124,86696.32775915573,39579.69505164769
+0.011714285714285714,0.3285714285714286,53953.96533603647,80794.62089166112,37750.67898831476
+0.011714285714285714,0.3571428571428572,51064.452969819846,80748.3893881257,40126.468852805636
+0.011714285714285714,0.3857142857142858,49169.26910902295,77306.47852936239,33910.02727594977
+0.011714285714285714,0.41428571428571437,46128.13967574828,74722.69145092381,32132.6000087064
+0.011714285714285714,0.44285714285714284,44220.46321851231,73248.25313275415,32079.41985435415
+0.011714285714285714,0.4714285714285714,42022.739261571754,71682.26422721252,31977.87506296603
+0.011714285714285714,0.5,39982.244936287716,69863.48843601717,31934.49314369936
+0.012357142857142856,0.1,65673.91968955417,73644.83008190247,39365.47979179235
+0.012357142857142856,0.1285714285714286,67076.90067847837,82661.95894304139,40609.22571377045
+0.012357142857142856,0.15714285714285714,66739.93946555057,83276.8001442777,32446.97825262279
+0.012357142857142856,0.18571428571428572,65739.99902985677,88717.92409251186,38859.20896014327
+0.012357142857142856,0.2142857142857143,64521.638061952355,96548.0022139166,52834.33024670242
+0.012357142857142856,0.24285714285714288,62766.0585692875,91337.15988084649,45832.28626687646
+0.012357142857142856,0.27142857142857146,59656.94202150482,84616.00135571296,36341.001623124226
+0.012357142857142856,0.30000000000000004,56746.41779590922,85490.30673938595,37726.2366030062
+0.012357142857142856,0.3285714285714286,53855.58163195502,79683.9701991903,35911.2668329177
+0.012357142857142856,0.3571428571428572,50816.35950025187,79430.30063245875,37956.31819453858
+0.012357142857142856,0.3857142857142858,48955.83904328953,75998.41279594031,32299.563348486634
+0.012357142857142856,0.41428571428571437,46673.26077574144,73722.45115391073,30572.732134750415
+0.012357142857142856,0.44285714285714284,40931.521905958296,69366.32023432691,29692.97986952818
+0.012357142857142856,0.4714285714285714,38998.26253568075,67770.91810374313,29763.37122281579
+0.012357142857142856,0.5,37361.35776518803,66370.16239948757,29688.82288045473
+0.013,0.1,64243.325451956145,71826.25576955367,35748.965839764685
+0.013,0.1285714285714286,66133.3897799143,80362.77941057581,41846.39820647883
+0.013,0.15714285714285714,65359.78256354126,82266.61571756394,39938.91368834769
+0.013,0.18571428571428572,65778.1344643379,82682.19052120323,33602.76708478184
+0.013,0.2142857142857143,63572.00297261833,87439.63469132654,39762.41405215142
+0.013,0.24285714285714288,60833.065764516396,84822.33517204494,33491.05157306237
+0.013,0.27142857142857146,57010.895765573594,84422.56141441906,38877.00015547167
+0.013,0.30000000000000004,53931.90959011449,83892.64973476533,36849.97024894124
+0.013,0.3285714285714286,51350.98164812408,82191.71889478299,37599.12062735929
+0.013,0.3571428571428572,48755.93000043533,77544.79790548567,33346.56638951249
+0.013,0.3857142857142858,45766.271565475334,74799.05327703185,32090.290172324803
+0.013,0.41428571428571437,43517.71852165098,72850.44877830362,32053.630810753657
+0.013,0.44285714285714284,41247.17828869223,68248.85570363369,28300.83326596227
+0.013,0.4714285714285714,39190.3797613199,66732.92041716159,28538.455842936295
+0.013,0.5,37435.831518460705,65283.38552620941,28501.397217678983
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-min.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-min.csv
new file mode 100644
index 0000000000..9c7a8d7f17
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-min.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,0.007425326956921909,0.007425326956921909,0.0
+0.004,0.1285714285714286,53658.37405240018,81039.18328866115,55237.003526097484
+0.004,0.15714285714285714,52097.88488877557,89824.91831518461,51886.30139116051
+0.004,0.18571428571428572,0.0266789385638149,0.026678938563814897,0.0
+0.004,0.2142857142857143,48876.372323555195,98665.93578398145,53355.73456632733
+0.004,0.24285714285714288,0.0024875467192368205,0.00248754671923682,0.0
+0.004,0.27142857142857146,0.004962655704877454,0.004962655704877454,0.0
+0.004,0.30000000000000004,0.004962655704877454,0.004962655704877454,0.0
+0.004,0.3285714285714286,0.0024875467192368205,0.00248754671923682,0.0
+0.004,0.3571428571428572,0.0024875467192368205,0.00248754671923682,0.0
+0.004,0.3857142857142858,0.012313356260222267,0.012313356260222267,0.0
+0.004,0.41428571428571437,0.012313356260222267,0.012313356260222267,0.0
+0.004,0.44285714285714284,0.004962655704877454,0.004962655704877454,0.0
+0.004,0.4714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.004,0.5,0.004962655704877454,0.004962655704877454,0.0
+0.004642857142857143,0.1,51386.15208860642,64806.185658049384,49265.396160471624
+0.004642857142857143,0.1285714285714286,54015.83884428579,81317.44773975285,46473.75597166684
+0.004642857142857143,0.15714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.004642857142857143,0.18571428571428572,54016.43427590624,93814.32436365446,49877.80052362858
+0.004642857142857143,0.2142857142857143,50128.3865771979,92308.37984838402,49143.94026156555
+0.004642857142857143,0.24285714285714288,0.012313356260222267,0.012313356260222267,0.0
+0.004642857142857143,0.27142857142857146,44680.31196323407,94555.63909428424,52670.79417416558
+0.004642857142857143,0.30000000000000004,0.014738714311478166,0.014738714311478164,0.0
+0.004642857142857143,0.3285714285714286,0.004962655704877454,0.004962655704877454,0.0
+0.004642857142857143,0.3571428571428572,0.0024875467192368205,0.00248754671923682,0.0
+0.004642857142857143,0.3857142857142858,0.0024875467192368205,0.00248754671923682,0.0
+0.004642857142857143,0.41428571428571437,0.0024875467192368205,0.00248754671923682,0.0
+0.004642857142857143,0.44285714285714284,0.0024875467192368205,0.00248754671923682,0.0
+0.004642857142857143,0.4714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.004642857142857143,0.5,26930.487422341903,91468.42614162847,56469.90052300668
+0.005285714285714286,0.1,52055.00850119092,65362.497758098514,40840.16335719305
+0.005285714285714286,0.1285714285714286,55270.7052194949,79695.01546632174,42726.98986946599
+0.005285714285714286,0.15714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.005285714285714286,0.18571428571428572,54616.293194694066,89860.82591526171,46380.641289544204
+0.005285714285714286,0.2142857142857143,51664.96938451875,85438.5271111498,39387.523945746616
+0.005285714285714286,0.24285714285714288,0.0024875467192368205,0.00248754671923682,0.0
+0.005285714285714286,0.27142857142857146,0.004962655704877454,0.004962655704877454,0.0
+0.005285714285714286,0.30000000000000004,42425.96577135714,90281.83505077705,47707.57053749666
+0.005285714285714286,0.3285714285714286,0.007425326956921909,0.007425326956921909,0.0
+0.005285714285714286,0.3571428571428572,0.004962655704877454,0.004962655704877454,0.0
+0.005285714285714286,0.3857142857142858,0.019552117213201412,0.019552117213201412,0.0
+0.005285714285714286,0.41428571428571437,32929.14744311292,86039.54137101138,44359.126497969526
+0.005285714285714286,0.44285714285714284,0.009875560475370181,0.009875560475370181,0.0
+0.005285714285714286,0.4714285714285714,0.009875560475370181,0.009875560475370181,0.0
+0.005285714285714286,0.5,0.009875560475370181,0.009875560475370181,0.0
+0.005928571428571429,0.1,51618.51183761296,65694.52589225191,43125.97024894126
+0.005928571428571429,0.1285714285714286,56785.74292448431,77830.97615064583,40472.840691289224
+0.005928571428571429,0.15714285714285714,55506.242075608985,82154.85336533976,39330.846139016554
+0.005928571428571429,0.18571428571428572,0.01715163462913787,0.01715163462913787,0.0
+0.005928571428571429,0.2142857142857143,0.004962655704877454,0.004962655704877454,0.0
+0.005928571428571429,0.24285714285714288,0.0024875467192368205,0.00248754671923682,0.0
+0.005928571428571429,0.27142857142857146,0.0024875467192368205,0.00248754671923682,0.0
+0.005928571428571429,0.30000000000000004,0.009875560475370181,0.009875560475370181,0.0
+0.005928571428571429,0.3285714285714286,40789.06097598895,85944.4014527273,38073.67032543331
+0.005928571428571429,0.3571428571428572,0.009875560475370181,0.009875560475370181,0.0
+0.005928571428571429,0.3857142857142858,0.004962655704877454,0.004962655704877454,0.0
+0.005928571428571429,0.41428571428571437,0.004962655704877454,0.004962655704877454,0.0
+0.005928571428571429,0.44285714285714284,0.004962655704877454,0.004962655704877454,0.0
+0.005928571428571429,0.4714285714285714,0.004962655704877454,0.004962655704877454,0.0
+0.005928571428571429,0.5,0.0024875467192368205,0.00248754671923682,0.0
+0.006571428571428572,0.1,50802.88531787738,63440.603217641685,32938.68225943868
+0.006571428571428572,0.1285714285714286,0.019552117213201412,0.019552117213201412,0.0
+0.006571428571428572,0.15714285714285714,57482.24518504239,81830.18589436634,33986.10768589748
+0.006571428571428572,0.18571428571428572,55917.309444593004,84871.68324823852,32284.172076044288
+0.006571428571428572,0.2142857142857143,54063.21938296404,86503.17998022403,30402.15676519424
+0.006571428571428572,0.24285714285714288,50686.834074414954,87672.76198531104,38024.061865286894
+0.006571428571428572,0.27142857142857146,48211.466209787264,87884.9575562341,38698.877307976945
+0.006571428571428572,0.30000000000000004,44682.1196883104,81250.12518578864,34661.69440488555
+0.006571428571428572,0.3285714285714286,0.004962655704877454,0.004962655704877454,0.0
+0.006571428571428572,0.3571428571428572,0.009875560475370181,0.009875560475370181,0.0
+0.006571428571428572,0.3857142857142858,0.004962655704877454,0.004962655704877454,0.0
+0.006571428571428572,0.41428571428571437,0.004962655704877454,0.004962655704877454,0.0
+0.006571428571428572,0.44285714285714284,0.004962655704877454,0.004962655704877454,0.0
+0.006571428571428572,0.4714285714285714,0.004962655704877454,0.004962655704877454,0.0
+0.006571428571428572,0.5,0.004962655704877454,0.004962655704877454,0.0
+0.007214285714285715,0.1,53575.265390140616,64188.273692327784,33488.58230981151
+0.007214285714285715,0.1285714285714286,56738.138742918265,75717.77982723988,31376.52650170087
+0.007214285714285715,0.15714285714285714,0.004962655704877454,0.004962655704877454,0.0
+0.007214285714285715,0.18571428571428572,0.007425326956921909,0.007425326956921909,0.0
+0.007214285714285715,0.2142857142857143,0.0024875467192368205,0.00248754671923682,0.0
+0.007214285714285715,0.24285714285714288,0.0024875467192368205,0.00248754671923682,0.0
+0.007214285714285715,0.27142857142857146,0.004962655704877454,0.004962655704877454,0.0
+0.007214285714285715,0.30000000000000004,45574.04805940261,82630.76710965727,36596.88965864641
+0.007214285714285715,0.3285714285714286,0.004962655704877454,0.004962655704877454,0.0
+0.007214285714285715,0.3571428571428572,40398.50376552384,77516.00942780206,31998.188817233724
+0.007214285714285715,0.3857142857142858,0.007425326956921909,0.007425326956921909,0.0
+0.007214285714285715,0.41428571428571437,0.004962655704877454,0.004962655704877454,0.0
+0.007214285714285715,0.44285714285714284,0.004962655704877454,0.004962655704877454,0.0
+0.007214285714285715,0.4714285714285714,0.004962655704877454,0.004962655704877454,0.0
+0.007214285714285715,0.5,0.004962655704877454,0.004962655704877454,0.0
+0.007857142857142858,0.1,0.009875560475370181,0.009875560475370181,0.0
+0.007857142857142858,0.1285714285714286,56966.5078575382,72884.00141790163,29528.29052058133
+0.007857142857142858,0.15714285714285714,58019.02040410196,80106.65012033506,31535.57380862059
+0.007857142857142858,0.18571428571428572,56215.755834851756,79989.95425401584,29732.697023028468
+0.007857142857142858,0.2142857142857143,0.0024875467192368205,0.00248754671923682,0.0
+0.007857142857142858,0.24285714285714288,0.004962655704877454,0.004962655704877454,0.0
+0.007857142857142858,0.27142857142857146,0.0024875467192368205,0.00248754671923682,0.0
+0.007857142857142858,0.30000000000000004,45250.08922830082,77237.35107368736,32120.985342130938
+0.007857142857142858,0.3285714285714286,42534.31358013943,77432.10473815461,27450.151690598952
+0.007857142857142858,0.3571428571428572,40091.43195626892,74399.31531520328,27364.83610176553
+0.007857142857142858,0.3857142857142858,38168.73518199514,73056.56630244837,30603.416583230213
+0.007857142857142858,0.41428571428571437,0.007425326956921909,0.007425326956921909,0.0
+0.007857142857142858,0.44285714285714284,34301.915037841805,70176.83830324438,30688.349400812192
+0.007857142857142858,0.4714285714285714,32458.663242144008,69015.51484132562,30618.692993202774
+0.007857142857142858,0.5,30595.972748925695,67856.35678882593,30569.93480140049
+0.0085,0.1,52906.22035932612,62621.30046454936,25912.843029583142
+0.0085,0.1285714285714286,57018.4147486645,74284.50879036821,28611.990112001793
+0.0085,0.15714285714285714,58196.78847768359,77750.36415196423,27534.995653012113
+0.0085,0.18571428571428572,57049.03067766992,80224.44889024322,28117.26614884234
+0.0085,0.2142857142857143,0.004962655704877454,0.004962655704877454,0.0
+0.0085,0.24285714285714288,0.014738714311478166,0.014738714311478164,0.0
+0.0085,0.27142857142857146,45816.49875311721,78797.78767544978,26160.619809578293
+0.0085,0.30000000000000004,43682.56762084812,74502.7333909615,28329.791033637837
+0.0085,0.3285714285714286,0.0024875467192368205,0.00248754671923682,0.0
+0.0085,0.3571428571428572,39021.69028799572,69821.54601028601,28106.241192529884
+0.0085,0.3857142857142858,37071.34067574207,68423.61609691482,24726.75004508678
+0.0085,0.41428571428571437,0.0024875467192368205,0.00248754671923682,0.0
+0.0085,0.44285714285714284,0.0024875467192368205,0.00248754671923682,0.0
+0.0085,0.4714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.0085,0.5,0.0024875467192368205,0.00248754671923682,0.0
+0.009142857142857144,0.1,54801.97602004963,64238.37303250602,27596.33044570619
+0.009142857142857144,0.1285714285714286,57773.41047630301,72762.42549486631,27297.656954869683
+0.009142857142857144,0.15714285714285714,57968.711065229705,75982.02440283331,27534.20468778178
+0.009142857142857144,0.18571428571428572,55572.00986312275,76244.7012269824,24320.659349133406
+0.009142857142857144,0.2142857142857143,52392.66607794727,80575.89352056268,26197.68297460836
+0.009142857142857144,0.24285714285714288,49235.78322274115,76859.02801599493,28885.181149370957
+0.009142857142857144,0.27142857142857146,46614.7055180005,77717.49627178935,24496.16955118437
+0.009142857142857144,0.30000000000000004,43778.8254301901,72656.7054433741,26597.52972929272
+0.009142857142857144,0.3285714285714286,41627.08352559998,71315.06323965648,27050.983339655842
+0.009142857142857144,0.3571428571428572,39171.72015099408,68032.27613012357,26272.68243356695
+0.009142857142857144,0.3857142857142858,39989.403685300465,70305.42145882177,24763.50001554716
+0.009142857142857144,0.41428571428571437,37414.77932351166,69492.97144918251,26112.953339842425
+0.009142857142857144,0.44285714285714284,35515.23190776176,68054.47166373343,26325.518983090897
+0.009142857142857144,0.4714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.009142857142857144,0.5,0.0024875467192368205,0.00248754671923682,0.0
+0.009785714285714286,0.1,0.0024875467192368205,0.00248754671923682,0.0
+0.009785714285714286,0.1285714285714286,56493.59406968862,72288.09859391421,26001.425563273868
+0.009785714285714286,0.15714285714285714,0.014738714311478166,0.014738714311478164,0.0
+0.009785714285714286,0.18571428571428572,58333.25684541763,77858.69046834287,27688.20885442254
+0.009785714285714286,0.2142857142857143,55132.010472571696,78189.80618279737,24854.36135347417
+0.009785714285714286,0.24285714285714288,52910.83413660362,76886.15736220546,23004.44901462055
+0.009785714285714286,0.27142857142857146,0.0024875467192368205,0.00248754671923682,0.0
+0.009785714285714286,0.30000000000000004,0.014738714311478166,0.014738714311478164,0.0
+0.009785714285714286,0.3285714285714286,0.004962655704877454,0.004962655704877454,0.0
+0.009785714285714286,0.3571428571428572,0.0024875467192368205,0.00248754671923682,0.0
+0.009785714285714286,0.3857142857142858,40464.6265135167,68921.48873452279,23350.067288138755
+0.009785714285714286,0.41428571428571437,38206.11443958682,67959.88533653397,24104.629150316225
+0.009785714285714286,0.44285714285714284,35765.72515096299,66462.87774329763,24571.333026535904
+0.009785714285714286,0.4714285714285714,34024.07748708031,65544.71502042898,26028.36971163115
+0.009785714285714286,0.5,32397.292628777173,61531.07207044732,24318.177374518822
+0.01042857142857143,0.1,54341.957052505895,63407.83612042214,24810.23513535363
+0.01042857142857143,0.1285714285714286,55170.38610456403,70449.54593565961,22444.724933302645
+0.01042857142857143,0.15714285714285714,58922.117362454206,75617.31012866837,23271.274469686134
+0.01042857142857143,0.18571428571428572,0.0024875467192368205,0.00248754671923682,0.0
+0.01042857142857143,0.2142857142857143,56103.7017555861,78154.73569194222,22742.998003743756
+0.01042857142857143,0.24285714285714288,53583.53880883826,76164.30472447311,21476.86052947432
+0.01042857142857143,0.27142857142857146,50833.32849920088,75311.1816841935,22316.792930392225
+0.01042857142857143,0.30000000000000004,47757.817774765084,72375.22020385446,23207.55002767396
+0.01042857142857143,0.3285714285714286,0.004962655704877454,0.004962655704877454,0.0
+0.01042857142857143,0.3571428571428572,0.0024875467192368205,0.00248754671923682,0.0
+0.01042857142857143,0.3857142857142858,0.0024875467192368205,0.00248754671923682,0.0
+0.01042857142857143,0.41428571428571437,38537.886729560145,64460.550904534175,22752.963812414102
+0.01042857142857143,0.44285714285714284,36503.13591333388,62890.19645400215,22731.89440364176
+0.01042857142857143,0.4714285714285714,34262.762383318506,61358.70678664933,22792.195048538248
+0.01042857142857143,0.5,32552.70224687657,59938.99173512603,22743.953694317814
+0.011071428571428572,0.1,53824.79324133557,61799.137505363775,20076.63314282871
+0.011071428571428572,0.1285714285714286,0.01715163462913787,0.01715163462913787,0.0
+0.011071428571428572,0.15714285714285714,59546.33661482205,75272.693963346,22036.94709610014
+0.011071428571428572,0.18571428571428572,56244.24718751749,72185.64715393561,20853.750598565923
+0.011071428571428572,0.2142857142857143,56591.615350650805,77347.65242753466,23525.989888122585
+0.011071428571428572,0.24285714285714288,0.007425326956921909,0.007425326956921909,0.0
+0.011071428571428572,0.27142857142857146,0.004962655704877454,0.004962655704877454,0.0
+0.011071428571428572,0.30000000000000004,48455.711954527644,74113.13769192978,19281.16264202337
+0.011071428571428572,0.3285714285714286,45873.595400526116,71428.86671102792,22248.366030062003
+0.011071428571428572,0.3571428571428572,43203.24346241628,69903.3688969596,23325.62836052016
+0.011071428571428572,0.3857142857142858,40877.75159358462,66252.8764000224,20566.79142542646
+0.011071428571428572,0.41428571428571437,38763.90364487783,64160.843241024624,20821.526234289584
+0.011071428571428572,0.44285714285714284,36456.74172424301,62120.95871294333,20097.455078015686
+0.011071428571428572,0.4714285714285714,34704.49401434071,60987.00302858812,22458.216963824852
+0.011071428571428572,0.5,32973.506371229036,59627.03827712514,22428.72795567193
+0.011714285714285714,0.1,52577.00516787831,60092.651625300845,19860.90424810792
+0.011714285714285714,0.1285714285714286,57854.18564561166,69872.9147579928,21149.68124576339
+0.011714285714285714,0.15714285714285714,59595.67153189346,75415.10754286355,19696.359649504666
+0.011714285714285714,0.18571428571428572,56362.64439897762,71483.81057331734,19461.794802271128
+0.011714285714285714,0.2142857142857143,56483.88855790698,76590.27330675804,19227.296870044338
+0.011714285714285714,0.24285714285714288,53647.903669753294,72819.30223070752,18704.07521097506
+0.011714285714285714,0.27142857142857146,0.004962655704877454,0.004962655704877454,0.0
+0.011714285714285714,0.30000000000000004,0.004962655704877454,0.004962655704877454,0.0
+0.011714285714285714,0.3285714285714286,46119.17195788583,70563.54644560668,21804.563839777114
+0.011714285714285714,0.3571428571428572,0.007425326956921909,0.007425326956921909,0.0
+0.011714285714285714,0.3857142857142858,0.004962655704877454,0.004962655704877454,0.0
+0.011714285714285714,0.41428571428571437,0.0024875467192368205,0.00248754671923682,0.0
+0.011714285714285714,0.44285714285714284,0.0024875467192368205,0.00248754671923682,0.0
+0.011714285714285714,0.4714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.011714285714285714,0.5,0.0024875467192368205,0.00248754671923682,0.0
+0.012357142857142856,0.1,52341.62543765275,58920.45860411316,22212.139999129366
+0.012357142857142856,0.1285714285714286,57647.51296322783,68394.05207679057,20098.863153836104
+0.012357142857142856,0.15714285714285714,57278.62793141834,71668.86569113376,18782.82571625798
+0.012357142857142856,0.18571428571428572,0.004962655704877454,0.004962655704877454,0.0
+0.012357142857142856,0.2142857142857143,54538.06333293948,74641.26624834423,20696.5015267318
+0.012357142857142856,0.24285714285714288,52866.558429363,74752.53882749485,22849.384083432305
+0.012357142857142856,0.27142857142857146,0.004962655704877454,0.004962655704877454,0.0
+0.012357142857142856,0.30000000000000004,0.004962655704877454,0.004962655704877454,0.0
+0.012357142857142856,0.3285714285714286,46318.2584436664,70136.2400109452,20532.53671308014
+0.012357142857142856,0.3571428571428572,0.007425326956921909,0.007425326956921909,0.0
+0.012357142857142856,0.3857142857142858,0.004962655704877454,0.004962655704877454,0.0
+0.012357142857142856,0.41428571428571437,0.0024875467192368205,0.00248754671923682,0.0
+0.012357142857142856,0.44285714285714284,0.0024875467192368205,0.00248754671923682,0.0
+0.012357142857142856,0.4714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.012357142857142856,0.5,0.0024875467192368205,0.00248754671923682,0.0
+0.013,0.1,54461.85949092356,61960.38060708577,18848.695070304293
+0.013,0.1285714285714286,57725.082903713286,69231.17106236902,21027.78544909546
+0.013,0.15714285714285714,59244.66335408362,74090.68082909932,20610.636364201702
+0.013,0.18571428571428572,0.0024875467192368205,0.00248754671923682,0.0
+0.013,0.2142857142857143,0.0024875467192368205,0.00248754671923682,0.0
+0.013,0.24285714285714288,54485.43259059335,73410.35014707621,17355.810647943727
+0.013,0.27142857142857146,52057.70981523747,72356.26073220938,17247.376832233622
+0.013,0.30000000000000004,48153.188251316846,70222.07083289283,19387.459170030033
+0.013,0.3285714285714286,45408.02593267454,67862.94806624336,20389.241845510904
+0.013,0.3571428571428572,42787.27959403238,66771.73865834168,18414.305595114452
+0.013,0.3857142857142858,0.0024875467192368205,0.00248754671923682,0.0
+0.013,0.41428571428571437,0.0024875467192368205,0.00248754671923682,0.0
+0.013,0.44285714285714284,0.0024875467192368205,0.00248754671923682,0.0
+0.013,0.4714285714285714,0.0024875467192368205,0.00248754671923682,0.0
+0.013,0.5,0.0024875467192368205,0.00248754671923682,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-var.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-var.csv
new file mode 100644
index 0000000000..c1b54706a8
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/results/results_csv_08272020_163323/var-var.csv
@@ -0,0 +1,226 @@
+beta,gamma,Infected,Recovered,Susceptible
+0.004,0.1,155705279.55531293,271903526.9856235,307675767.9345023
+0.004,0.1285714285714286,5416272.833894962,14086177.659044575,175034150.20861366
+0.004,0.15714285714285714,3543296.2826922974,23107201.781574775,183500380.84293073
+0.004,0.18571428571428572,145354669.5173394,554936810.4259281,566146514.5171965
+0.004,0.2142857142857143,2463130.3872672794,24061896.46331645,114643989.14518741
+0.004,0.24285714285714288,217061363.64533916,1055619763.6211798,587546750.4083045
+0.004,0.27142857142857146,345144557.4175336,1869131043.9420555,854313103.8886962
+0.004,0.30000000000000004,245948008.9330197,1604568243.3596165,861570173.439181
+0.004,0.3285714285714286,82965826.08174211,569798776.2490357,295204893.1713842
+0.004,0.3571428571428572,72865757.57273318,640563878.5079788,402510074.6470064
+0.004,0.3857142857142858,64133303.12549677,674623135.8780196,469185935.76201546
+0.004,0.41428571428571437,104374227.4598563,1161379291.43465,654498284.5563821
+0.004,0.44285714285714284,50060196.416390374,627428952.132341,411715156.5974724
+0.004,0.4714285714285714,113627250.92850316,1439178435.3198094,715535469.2272123
+0.004,0.5,124866166.2601906,1817306477.9093537,927825315.6913154
+0.004642857142857143,0.1,6459424.181717824,10488922.775130972,59599358.581624135
+0.004642857142857143,0.1285714285714286,5015016.979904527,7423255.4990681885,73429190.48525797
+0.004642857142857143,0.15714285714285714,304357024.84983295,837959932.1760412,571796891.2786232
+0.004642857142857143,0.18571428571428572,1935982.511546082,19408882.038492464,125708433.71076396
+0.004642857142857143,0.2142857142857143,4634643.343982078,40968415.80236991,165191748.24435502
+0.004642857142857143,0.24285714285714288,124081166.7705503,526064035.8614343,303347539.6793393
+0.004642857142857143,0.27142857142857146,3243969.00503082,38049279.45489974,115314659.34697577
+0.004642857142857143,0.30000000000000004,97842778.8699157,566226797.4839246,332613470.4405544
+0.004642857142857143,0.3285714285714286,86234423.32541552,568817558.9810121,345539929.63093376
+0.004642857142857143,0.3571428571428572,142415232.03801888,1051311154.9908968,575959059.1663932
+0.004642857142857143,0.3857142857142858,222283071.94338614,1715679958.7754629,800781867.1030362
+0.004642857142857143,0.41428571428571437,111710273.68784496,1002113688.6811607,533087686.35514736
+0.004642857142857143,0.44285714285714284,52669013.985223934,594461347.4997118,410940174.8442614
+0.004642857142857143,0.4714285714285714,46977536.26644239,591393562.9651756,408923948.33833086
+0.004642857142857143,0.5,1798066.749263746,52748278.19868851,85418849.83891809
+0.005285714285714286,0.1,4419164.9614576725,7107897.8402977465,50503199.57383886
+0.005285714285714286,0.1285714285714286,3994322.0218685083,5992345.137940535,59409024.88238858
+0.005285714285714286,0.15714285714285714,315584801.1218989,767089784.2206709,406866418.73054314
+0.005285714285714286,0.18571428571428572,2291977.4658437064,13639481.539856043,67754780.35077816
+0.005285714285714286,0.2142857142857143,4072019.6909585237,32628164.860114645,122992589.40464354
+0.005285714285714286,0.24285714285714288,242587499.2353266,874634760.577995,347828295.3146988
+0.005285714285714286,0.27142857142857146,115129156.94472125,450666015.36541736,177434203.99152482
+0.005285714285714286,0.30000000000000004,2423631.4789199885,33306989.815842055,93052454.28822632
+0.005285714285714286,0.3285714285714286,89998696.43199843,506492585.3869724,262761135.8928903
+0.005285714285714286,0.3571428571428572,150658590.87155768,935308168.3343067,442972015.6241239
+0.005285714285714286,0.3857142857142858,71359344.12337872,500352140.3938879,268827113.14833647
+0.005285714285714286,0.41428571428571437,1925679.629323878,52112574.905094385,101038750.8602089
+0.005285714285714286,0.44285714285714284,55647778.58862951,503031968.3558652,291359379.19543964
+0.005285714285714286,0.4714285714285714,49405487.967128284,508104893.3673212,306091153.5075006
+0.005285714285714286,0.5,43989245.957902566,503215718.42880553,305406225.7675251
+0.005928571428571429,0.1,9844375.729569437,14635430.713352442,202950855.26137087
+0.005928571428571429,0.1285714285714286,2936863.1519069746,11375419.933464961,90158237.37398386
+0.005928571428571429,0.15714285714285714,4533296.867287366,11250914.591730138,74494773.81025559
+0.005928571428571429,0.18571428571428572,166468304.93079665,423912046.26852655,162490988.3828111
+0.005928571428571429,0.2142857142857143,283527387.9294489,856497191.9489262,350801886.3312499
+0.005928571428571429,0.24285714285714288,253234294.6142262,868468454.5353553,382114500.0771341
+0.005928571428571429,0.27142857142857146,226907787.5424555,795381833.4923143,241864742.66023102
+0.005928571428571429,0.30000000000000004,106804483.36036184,468733810.30999804,210078150.54351237
+0.005928571428571429,0.3285714285714286,2352158.0656181257,40642525.71131314,85825259.74349885
+0.005928571428571429,0.3571428571428572,161063001.1053997,860194169.7033911,395014818.2080709
+0.005928571428571429,0.3857142857142858,142510809.54843324,784995991.0149866,308346946.00739527
+0.005928571428571429,0.41428571428571437,126109199.5053428,771620875.3425975,311974510.46666545
+0.005928571428571429,0.44285714285714284,112689527.50925633,816475206.1562295,392039017.3926512
+0.005928571428571429,0.4714285714285714,100364035.08773513,804422940.2510742,392257242.6325494
+0.005928571428571429,0.5,158779036.7439492,1337110047.443672,594615482.4700973
+0.006571428571428572,0.1,6782149.729303698,7731256.232072338,52411094.01343542
+0.006571428571428572,0.1285714285714286,175178154.8152141,325265462.2179229,200430628.73444182
+0.006571428571428572,0.15714285714285714,2240442.97830294,6218100.250467721,38001914.65064071
+0.006571428571428572,0.18571428571428572,3706393.9036510484,16044883.332841087,90221274.12390375
+0.006571428571428572,0.2142857142857143,3248638.689113998,16303577.646196539,78256036.03195015
+0.006571428571428572,0.24285714285714288,3600646.1620157138,13994140.644690594,44897889.82175264
+0.006571428571428572,0.27142857142857146,2777026.5393179776,8771751.800862687,23644442.103681777
+0.006571428571428572,0.30000000000000004,3435435.365881911,24891578.10925066,59610160.598477796
+0.006571428571428572,0.3285714285714286,187992881.85401434,759211318.9330003,261706312.09941572
+0.006571428571428572,0.3571428571428572,89273694.80409642,430232310.627076,208023400.137291
+0.006571428571428572,0.3857142857142858,149242414.93641734,717101521.6947322,254713887.24944234
+0.006571428571428572,0.41428571428571437,132523365.15135741,697407929.2536316,252850606.8622819
+0.006571428571428572,0.44285714285714284,117512208.41672537,720323972.594034,300917679.0884478
+0.006571428571428572,0.4714285714285714,106217235.19824368,714102421.4979024,309809835.0534387
+0.006571428571428572,0.5,94796284.50685358,699144110.2538428,308231376.6194177
+0.007214285714285715,0.1,4231211.066170557,7742914.130974801,48214397.34801234
+0.007214285714285715,0.1285714285714286,3648020.708788416,7123215.861005142,59775467.2112579
+0.007214285714285715,0.15714285714285714,178893636.326209,361202462.499188,125527634.97748454
+0.007214285714285715,0.18571428571428572,169017020.72474438,384715851.662993,136144514.30139297
+0.007214285714285715,0.2142857142857143,300180813.35758936,782949624.7798389,278284243.71635383
+0.007214285714285715,0.24285714285714288,265883577.69844708,728206527.8372288,193579997.91646367
+0.007214285714285715,0.27142857142857146,130117928.93461993,392959528.93519133,119318884.77310827
+0.007214285714285715,0.30000000000000004,3885397.894296224,22738741.470094595,45403362.42811602
+0.007214285714285715,0.3285714285714286,103565174.19638054,386697133.3665402,132549984.11292633
+0.007214285714285715,0.3571428571428572,2478716.6885286425,42839128.84035718,88649113.89024624
+0.007214285714285715,0.3857142857142858,81963907.13864568,385838561.0380102,157020655.80803877
+0.007214285714285715,0.41428571428571437,135795472.31432137,658409239.7591268,233898819.98489183
+0.007214285714285715,0.44285714285714284,122147846.03427348,643086448.0448191,233660492.14320427
+0.007214285714285715,0.4714285714285714,110146795.17266881,645528230.0822897,257611950.62697545
+0.007214285714285715,0.5,99279464.17974274,635553152.8737414,261717760.07992524
+0.007857142857142858,0.1,159169908.14554006,227826999.87656647,119337758.47647679
+0.007857142857142858,0.1285714285714286,3268783.046164791,5245906.292794714,34214834.68128414
+0.007857142857142858,0.15714285714285714,4183967.9798734277,6948684.262100032,25802569.73592415
+0.007857142857142858,0.18571428571428572,2607876.8569085333,10996923.40793659,51624185.62422673
+0.007857142857142858,0.2142857142857143,290705058.5982447,706099021.5401033,184132314.07862273
+0.007857142857142858,0.24285714285714288,140218369.6795227,361724877.2102084,102177179.23101026
+0.007857142857142858,0.27142857142857146,236847554.97675118,682144922.904548,179498649.2855059
+0.007857142857142858,0.30000000000000004,3305417.3927154723,16411836.332095537,28804051.711932797
+0.007857142857142858,0.3285714285714286,2814698.2376703164,30565936.93551963,63633264.85208319
+0.007857142857142858,0.3571428571428572,2994669.2205963656,28082742.268985044,53121930.16370093
+0.007857142857142858,0.3857142857142858,2718091.352956773,31577944.048820324,54543471.4973015
+0.007857142857142858,0.41428571428571437,73417761.95322737,322725574.1221565,108286376.1154323
+0.007857142857142858,0.44285714285714284,2502125.833151248,20067973.07173027,27408759.57723207
+0.007857142857142858,0.4714285714285714,2336326.5930327,21267197.134822123,27873117.674682416
+0.007857142857142858,0.5,2158323.3676364194,30661156.84249586,41563585.68498001
+0.0085,0.1,4396839.621605505,8126078.692456027,40378217.25008087
+0.0085,0.1285714285714286,5797019.327715157,9417513.067730399,40248732.6790685
+0.0085,0.15714285714285714,4218164.945934756,9187342.754917983,37911864.0414364
+0.0085,0.18571428571428572,2874802.665829503,11030921.727272041,44604017.50947942
+0.0085,0.2142857142857143,157555033.28571433,362401710.1618539,102632467.57190093
+0.0085,0.24285714285714288,142809546.72321495,343270195.7249842,78128321.65159164
+0.0085,0.27142857142857146,4356723.8322410565,21717159.835387915,45638516.448746465
+0.0085,0.30000000000000004,4066032.5868178783,44284481.94488518,87970516.17740312
+0.0085,0.3285714285714286,108020853.55317521,356237275.79319537,132256845.61046691
+0.0085,0.3571428571428572,3719567.23391481,21869732.067006566,25983717.1518866
+0.0085,0.3857142857142858,3070771.4488824727,61883420.83808303,111770754.00136587
+0.0085,0.41428571428571437,77205717.93503039,349713801.31184447,172019544.15758148
+0.0085,0.44285714285714284,68952671.03618574,341400021.03838956,168372676.02695268
+0.0085,0.4714285714285714,61897694.7356794,335080222.5198144,169982998.44494775
+0.0085,0.5,56007709.32087239,327778587.9578069,169722338.25039393
+0.009142857142857144,0.1,3487711.421815592,6185563.430343639,31526444.219960112
+0.009142857142857144,0.1285714285714286,3827750.1241943007,6042972.3929147925,21723363.32918767
+0.009142857142857144,0.15714285714285714,3418770.508400583,5324605.664088282,17171717.17268231
+0.009142857142857144,0.18571428571428572,5187754.061685256,11434580.832007993,53179259.12927403
+0.009142857142857144,0.2142857142857143,3902145.2441658974,10898786.07407335,42748760.931683384
+0.009142857142857144,0.24285714285714288,4662363.537483169,10252844.731165478,26382099.612202138
+0.009142857142857144,0.27142857142857146,4545592.489121235,20351680.565305226,37614138.97449668
+0.009142857142857144,0.30000000000000004,4424229.222124043,37806065.45530765,73109214.31884202
+0.009142857142857144,0.3285714285714286,4439322.6212374475,32278852.791899115,59126524.031105086
+0.009142857142857144,0.3571428571428572,4085131.507036769,19877110.98528656,23086179.656920627
+0.009142857142857144,0.3857142857142858,2021036.7540346268,20651429.1427905,35951109.49655253
+0.009142857142857144,0.41428571428571437,1812904.929043067,21350678.048307933,39242571.659210086
+0.009142857142857144,0.44285714285714284,1697974.7094632066,21385791.824307285,38583832.65676548
+0.009142857142857144,0.4714285714285714,63936675.02989521,270354018.1819259,87565357.70557636
+0.009142857142857144,0.5,57736634.64009114,262605337.97257295,88365915.55403337
+0.009785714285714286,0.1,295536116.7425185,402300852.5086517,112823157.11615035
+0.009785714285714286,0.1285714285714286,3343075.6911628162,6183528.22448982,31173361.51519292
+0.009785714285714286,0.15714285714285714,184360787.21545345,316058688.8902379,82545307.31604007
+0.009785714285714286,0.18571428571428572,2409174.45807472,5955513.759893417,14723207.434685588
+0.009785714285714286,0.2142857142857143,2216179.42847585,5236070.456015761,18330239.52092717
+0.009785714285714286,0.24285714285714288,3374665.0706848213,11341831.735526618,30822576.84101246
+0.009785714285714286,0.27142857142857146,136664705.2749854,348990234.59912324,106836530.56941627
+0.009785714285714286,0.30000000000000004,122389557.87796488,333514021.243316,96673368.58967702
+0.009785714285714286,0.3285714285714286,109675465.50214107,312925806.4774942,86056675.49310973
+0.009785714285714286,0.3571428571428572,97723080.21752527,304892124.0335975,85978192.1065065
+0.009785714285714286,0.3857142857142858,1711175.7645398402,18693556.526603647,31634734.563602973
+0.009785714285714286,0.41428571428571437,1799157.5486168738,19777529.205896545,35105195.392370895
+0.009785714285714286,0.44285714285714284,1737846.7945687056,19003454.857336946,34372580.813152194
+0.009785714285714286,0.4714285714285714,1563791.1189914015,13715862.752591055,21586525.287689254
+0.009785714285714286,0.5,1803623.5900500598,29647452.643440813,50342762.612445846
+0.01042857142857143,0.1,2460431.353478051,3035598.8661428797,32140844.75601364
+0.01042857142857143,0.1285714285714286,4735966.637080395,8730413.921459021,37948655.1269636
+0.01042857142857143,0.15714285714285714,6199219.755149759,10746293.792159569,30135355.861326605
+0.01042857142857143,0.18571428571428572,184781137.09632316,320661061.48032707,47016240.71480311
+0.01042857142857143,0.2142857142857143,1826480.7191144018,5865963.4490171615,21677820.384426832
+0.01042857142857143,0.24285714285714288,2197335.78716921,7763123.242303379,21861050.382737063
+0.01042857142857143,0.27142857142857146,2558172.7140136817,9462891.636952171,24423676.274325065
+0.01042857142857143,0.30000000000000004,2714893.5010999357,10274927.16025972,25045297.90273592
+0.01042857142857143,0.3285714285714286,111222767.96742657,305205039.3361324,87983459.13113098
+0.01042857142857143,0.3571428571428572,99465390.2147805,298128282.77788,90142962.39798349
+0.01042857142857143,0.3857142857142858,89396359.40709493,285026832.9444531,90493989.74088368
+0.01042857142857143,0.41428571428571437,2080121.2258317017,25148553.420109455,44399052.32514885
+0.01042857142857143,0.44285714285714284,1991932.5841856196,26507129.54709527,45640156.21729778
+0.01042857142857143,0.4714285714285714,1757310.0364374623,26781393.11591684,45388582.51733254
+0.01042857142857143,0.5,1775034.1051776758,26532094.85298827,44663610.902633
+0.011071428571428572,0.1,2744225.1480164398,3185100.690100304,51970454.77016143
+0.011071428571428572,0.1285714285714286,181406143.3570104,266709840.24250406,51117365.10722424
+0.011071428571428572,0.15714285714285714,6033233.9872651445,10852070.753027234,23135991.740370184
+0.011071428571428572,0.18571428571428572,5983583.701169062,15513145.029534746,33780775.32018234
+0.011071428571428572,0.2142857142857143,5020793.43136664,9132976.398555746,10214028.489587314
+0.011071428571428572,0.24285714285714288,161577586.58675772,316946575.1576017,48095060.57080536
+0.011071428571428572,0.27142857142857146,146923059.67949975,323869415.3910029,69374796.09672564
+0.011071428571428572,0.30000000000000004,3822922.2905812645,8576132.622481432,20875869.008115746
+0.011071428571428572,0.3285714285714286,3319259.077809562,9766776.375479478,19490540.59614522
+0.011071428571428572,0.3571428571428572,2553158.116795452,6974201.927048999,11006650.585895807
+0.011071428571428572,0.3857142857142858,2322045.1204147963,22777411.550643906,36266348.7875781
+0.011071428571428572,0.41428571428571437,2187717.0686391206,17011453.245212775,25094829.203550614
+0.011071428571428572,0.44285714285714284,1982547.1030444386,18357128.4195402,25740866.536874883
+0.011071428571428572,0.4714285714285714,1779608.1840774964,16996226.464308653,22134708.3892922
+0.011071428571428572,0.5,1660539.2276709368,17419153.804924715,21804974.013803244
+0.011714285714285714,0.1,6815213.588028833,9761904.595436784,20362383.70938937
+0.011714285714285714,0.1285714285714286,5045109.897048123,8232137.649531809,21480575.366942897
+0.011714285714285714,0.15714285714285714,2943208.1379857687,6687735.497339319,37119746.63751452
+0.011714285714285714,0.18571428571428572,5942655.514659908,14657196.09578656,28497584.66736988
+0.011714285714285714,0.2142857142857143,4916233.311466051,8470645.348448163,12489730.733046351
+0.011714285714285714,0.24285714285714288,3940946.065217891,8808494.306279164,13343264.694920257
+0.011714285714285714,0.27142857142857146,147736300.43946812,314271619.1102454,62883756.49034692
+0.011714285714285714,0.30000000000000004,130657566.69505873,301198531.7556181,57458525.30766084
+0.011714285714285714,0.3285714285714286,3744040.4734973884,9565240.076732883,19968277.366421424
+0.011714285714285714,0.3571428571428572,196362333.26324216,503123305.58649224,99022025.49697986
+0.011714285714285714,0.3857142857142858,94274906.58228165,242614067.11028752,42423889.21127172
+0.011714285714285714,0.41428571428571437,222792131.31734496,617877220.9076537,101299400.18689944
+0.011714285714285714,0.44285714285714284,201294149.80229872,590779306.2353677,101193134.91614613
+0.011714285714285714,0.4714285714285714,181338261.94753265,564334269.5203438,101407460.19014168
+0.011714285714285714,0.5,164261395.13294044,540213737.0290288,101127979.64626935
+0.012357142857142856,0.1,8523369.27720039,9362202.972870188,18161652.07137699
+0.012357142857142856,0.1285714285714286,7124351.780784907,10424802.365032041,18392705.55426479
+0.012357142857142856,0.15714285714285714,7119685.012845153,10609848.463884395,13000381.836605141
+0.012357142857142856,0.18571428571428572,190684918.7210532,317446951.57811344,62676577.50622237
+0.012357142857142856,0.2142857142857143,6318007.986760128,28817317.453926396,65578567.69496939
+0.012357142857142856,0.24285714285714288,4516784.810827906,12817096.777365986,25258098.89005434
+0.012357142857142856,0.27142857142857146,146990992.29895818,304076815.8092589,55244349.789624095
+0.012357142857142856,0.30000000000000004,131375648.34511629,292371424.1978512,52413811.581071384
+0.012357142857142856,0.3285714285714286,3310706.355730277,8304667.3917812165,17582360.39411918
+0.012357142857142856,0.3571428571428572,197933391.4250632,486670844.0366133,88635364.45268783
+0.012357142857142856,0.3857142857142858,94751555.00440499,234244923.1846811,38485373.72671103
+0.012357142857142856,0.41428571428571437,226192245.79649097,598452323.6480973,91432755.00873941
+0.012357142857142856,0.44285714285714284,142663705.75521117,404268549.55423176,69097173.71778695
+0.012357142857142856,0.4714285714285714,128934547.5899481,386179115.55741465,68947021.78207664
+0.012357142857142856,0.5,117013128.73441789,370065135.06548893,68820608.76101583
+0.013,0.1,5233259.802572632,6678765.368670135,16583132.546864366
+0.013,0.1285714285714286,5812873.24480578,6904101.136143079,22235424.62593316
+0.013,0.15714285714285714,2237874.8454646347,5913403.388987118,20600834.318784874
+0.013,0.18571428571428572,183637858.33051682,298195570.67096734,47063905.5155579
+0.013,0.2142857142857143,171573558.5524438,301364656.93187255,51237276.07659987
+0.013,0.24285714285714288,2236138.4799568206,7770800.7895888295,19555622.65708689
+0.013,0.27142857142857146,2005179.830392785,12690413.060269494,32727600.07900352
+0.013,0.30000000000000004,2107665.899096263,14308249.346685465,27796724.75985222
+0.013,0.3285714285714286,2166616.3062410187,11745411.541179929,22622064.36774727
+0.013,0.3571428571428572,2138010.618791857,6878933.866544594,11819115.575468598
+0.013,0.3857142857142858,176987608.55527163,433760444.515484,67380850.27396923
+0.013,0.41428571428571437,159476989.61445087,412135377.29859406,67296676.36395893
+0.013,0.44285714285714284,144169775.97322085,390678722.98422855,62135725.01935575
+0.013,0.4714285714285714,130522314.62615478,373905182.14705336,62994473.56987629
+0.013,0.5,118189648.00449426,357377629.3856,62858484.128409825
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/settings.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/settings.json
new file mode 100644
index 0000000000..092dbed075
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example 2D Parameter Sweep Workflow Complete.wkfl/settings.json
@@ -0,0 +1 @@
+{"simulationSettings": {"isAutomatic": false, "relativeTol": 0.001, "absoluteTol": 1e-06, "realizations": 20, "algorithm": "SSA", "seed": -1, "tauTol": 0.03}, "parameterSweepSettings": {"is1D": false, "p1Min": 0.004, "p1Max": 0.013, "p1Steps": 15, "p2Min": 0.1, "p2Max": 0.5, "p2Steps": 15, "parameterOne": {"compID": 4, "name": "beta", "expression": "0.0083", "annotation": "Rate at which a Susceptible species becomes infected\n"}, "parameterTwo": {"compID": 5, "name": "gamma", "expression": "0.3", "annotation": "Rate at which an Infected species recovers from the infection.\n\n"}, "speciesOfInterest": {"compID": 2, "name": "Infected", "value": 1, "mode": "discrete", "switchTol": 0.03, "switchMin": 100, "isSwitchTol": true, "annotation": "Initial population of a species that are infected\n", "diffusionCoeff": 0, "subdomains": ["subdomain 1:", "subdomain 2:"]}}, "resultsSettings": {"mapper": "final", "reducer": "avg", "outputs": [{"key": "Recovered-max-var", "stamp": 200727163621, "species": ["Recovered"]}, {"key": "Infected-max-var", "stamp": 200727163636, "species": ["Infected"]}, {"key": "Infected-avg-var", "stamp": 200727163726, "species": ["Infected"]}]}}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/COMPLETE b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/COMPLETE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/RUNNING b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/RUNNING
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/SIR Epidemic Model.mdl b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/SIR Epidemic Model.mdl
new file mode 100644
index 0000000000..51a3fd2585
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/SIR Epidemic Model.mdl
@@ -0,0 +1 @@
+{"is_spatial":false,"defaultID":8,"defaultMode":"discrete","annotation":"Susceptible, Infected, Recovered epidemiology (SIR) Model.\n","modelSettings":{"endSim":20,"timeStep":0.05,"volume":1},"meshSettings":{"count":2},"species":[{"compID":1,"name":"Susceptible","value":999,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are\n susceptible to infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]},{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]},{"compID":3,"name":"Recovered","value":0,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that have recovered from infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}],"initialConditions":[],"parameters":[{"compID":4,"name":"beta","expression":"0.0083","annotation":"Rate at which a Susceptible species becomes infected\n"},{"compID":5,"name":"gamma","expression":"0.3","annotation":"Rate at which an Infected species recovers from the infection.\n\n"}],"reactions":[{"compID":6,"name":"r1","reactionType":"custom-massaction","summary":"Susceptible+Infected \\rightarrow 2Infected","massaction":true,"propensity":"","annotation":"","subdomains":["subdomain 1:","subdomain 2:"],"rate":{"compID":4,"name":"beta","expression":"8.3","annotation":""},"reactants":[{"ratio":1,"specie":{"compID":1,"name":"Susceptible","value":999,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are\n susceptible to infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}},{"ratio":1,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}],"products":[{"ratio":2,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}]},{"compID":7,"name":"r2","reactionType":"change","summary":"Infected \\rightarrow Recovered","massaction":false,"propensity":"","annotation":"","subdomains":["subdomain 1:","subdomain 2:"],"rate":{"compID":5,"name":"gamma","expression":"0.3","annotation":""},"reactants":[{"ratio":1,"specie":{"compID":2,"name":"Infected","value":1,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that are infected\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}],"products":[{"ratio":1,"specie":{"compID":3,"name":"Recovered","value":0,"mode":"discrete","switchTol":0.03,"switchMin":100,"isSwitchTol":true,"annotation":"Initial population of a species that have recovered from infection\n","diffusionCoeff":0,"subdomains":["subdomain 1:","subdomain 2:"]}}]}],"rules":[],"eventsCollection":[],"functionDefinitions":[]}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/info.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/info.json
new file mode 100644
index 0000000000..4fb62a0bac
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/info.json
@@ -0,0 +1 @@
+{"source_model": "Examples/Example SIR Epidemic Project.proj/SIR Epidemic Model.mdl", "wkfl_model": "Examples/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/SIR Epidemic Model.mdl", "type": "gillespy", "start_time": "Aug 27, 2020 08:27 PM UTC", "annotation": "\n\n"}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/logs.txt b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/logs.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/plots.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/plots.json
new file mode 100644
index 0000000000..260013b25f
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/plots.json
@@ -0,0 +1 @@
+{"stddevran": {"data": [{"legendgroup": "[1.0, 1.7, 2.2, 3.25, 5.45, 7.7, 10.45, 15.45, 22.5, 33.95, 49.5, 71.25, 98.9, 136.1, 184.8, 239.5, 302.95, 371.4, 440.2, 505.2, 563.45, 620.5, 669.4, 707.75, 740.2, 767.9, 786.2, 801.65, 808.8, 813.3, 812.9, 809.85, 803.75, 797.55, 788.7, 778.6, 770.3, 759.05, 748.5, 738.45, 727.65, 717.7, 707.25, 696.75, 685.3, 674.95, 665.0, 655.05, 644.75, 635.25, 625.6, 615.8, 606.4, 597.55, 588.7, 579.55, 570.85, 562.85, 553.35, 544.6, 536.6, 528.7, 520.1, 511.65, 503.7, 496.25, 489.45, 482.0, 475.2, 468.55, 461.55, 454.85, 447.45, 441.1, 434.65, 427.3, 419.5, 412.8, 406.95, 401.05, 395.55, 390.3, 384.7, 378.7, 373.05, 368.4, 363.25, 358.75, 353.45, 348.6, 343.9, 338.2, 333.9, 328.7, 323.85, 318.6, 313.9, 308.95, 304.75, 300.4, 295.8, 291.15, 287.15, 283.1, 279.4, 275.4, 271.9, 268.65, 264.65, 260.55, 256.75, 252.7, 249.35, 246.0, 242.85, 238.45, 235.2, 230.65, 227.7, 224.2, 221.15, 218.0, 215.0, 211.5, 208.95, 206.15, 203.35, 200.9, 198.0, 195.0, 192.5, 188.95, 186.4, 183.35, 180.3, 177.9, 175.25, 172.55, 169.75, 167.9, 165.5, 162.45, 160.8, 158.1, 155.75, 153.25, 150.95, 148.75, 146.5, 143.95, 142.5, 140.05, 137.65, 135.75, 133.8, 132.05, 130.6, 128.8, 127.45, 125.65, 124.15, 122.6, 120.8, 119.0, 117.35, 114.8, 113.25, 111.8, 110.7, 108.5, 106.8, 105.0, 103.15, 101.35, 99.95, 98.3, 96.3, 95.3, 94.25, 93.25, 91.4, 89.3, 88.15, 86.95, 85.4, 83.9, 82.85, 81.85, 80.8, 79.2, 78.3, 77.4, 76.4, 75.3, 74.2, 73.5, 72.55, 71.05, 70.15, 69.25, 68.4, 67.5, 66.45, 65.3, 63.8, 63.05, 62.25, 61.5, 60.55, 59.6, 58.6, 57.95, 57.15, 56.4, 55.45, 54.4, 53.65, 52.55, 51.6, 50.85, 50.35, 49.5, 48.9, 48.4, 47.7, 47.25, 46.35, 45.45, 44.55, 43.7, 43.05, 42.75, 42.15, 41.35, 40.55, 39.8, 39.3, 38.5, 37.9, 37.3, 36.8, 36.15, 35.6, 35.1, 34.95, 34.55, 34.15, 33.8, 33.25, 32.8, 32.3, 31.9, 31.75, 31.5, 30.9, 30.45, 29.75, 29.3, 28.95, 28.6, 28.2, 27.6, 27.2, 27.05, 26.65, 26.2, 25.9, 25.45, 24.95, 24.4, 23.85, 23.55, 23.0, 22.6, 22.15, 21.9, 21.7, 21.3, 20.95, 20.4, 20.05, 19.75, 19.35, 19.1, 18.9, 18.6, 18.55, 18.25, 18.05, 17.9, 17.65, 17.35, 17.2, 16.85, 16.55, 16.35, 16.15, 15.95, 15.55, 15.25, 15.25, 14.85, 14.55, 14.4, 14.25, 14.0, 13.85, 13.6, 13.3, 13.2, 13.15, 12.8, 12.65, 12.55, 12.5, 12.2, 12.1, 12.05, 11.9, 11.75, 11.55, 11.3, 11.1, 10.8, 10.65, 10.65, 10.5, 10.5, 10.3, 10.1, 9.95, 9.65, 9.5, 9.2, 9.05, 8.95, 8.8, 8.55, 8.5, 8.35, 8.3, 8.05, 7.85, 7.65, 7.5, 7.35, 7.05, 6.95, 6.9, 6.75, 6.55, 6.5, 6.45, 6.4, 6.35, 6.25, 6.05, 5.9, 5.8, 5.7, 5.55, 5.55, 5.5, 5.3, 5.25, 5.25, 5.15, 5.0, 4.9, 4.7, 4.55, 4.5, 4.45, 4.4, 4.4, 4.3, 4.3, 4.15, 4.1, 4.0, 4.0, 3.95, 3.9, 3.9, 3.85, 3.85, 3.75, 3.65, 3.65, 3.6, 3.6, 3.5, 3.45, 3.4, 3.35, 3.25, 3.2, 3.15, 3.15, 3.05, 3.0]", "line": {"dash": "dot", "width": 1}, "marker": {"color": "#444"}, "mode": "lines", "name": "Infected Upper Bound", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 2.542614977317636, 3.8613247725836146, 5.757488783623966, 9.184635189680513, 13.92976725086901, 18.996783020528834, 28.312639697978014, 40.861644806498134, 61.49355641524893, 87.38733297554738, 125.61347579027668, 173.76848469149087, 235.99539528927244, 313.67653005881255, 395.51009582716114, 488.18889305434755, 578.1015723210638, 664.4640408090428, 737.5505110818567, 798.3896677872854, 850.4346646332388, 886.2106085965352, 904.8928099120026, 914.8606996436233, 915.1514516057482, 906.5651112241417, 896.4530985780527, 881.4867250603575, 864.0159738149629, 850.8524702753325, 839.9403223645079, 833.6278764305631, 830.4292867927514, 823.8000000000001, 817.290308864107, 810.8587228595773, 802.1423136997771, 792.9460346937722, 784.2577231479584, 773.4225627423241, 763.1621820857732, 753.2552986078778, 742.5428760835133, 730.1476309296265, 718.3394860536513, 707.6942619095354, 695.120531566227, 685.4524262176102, 675.0531091750381, 665.0225823608754, 654.4220144477214, 644.7384924064575, 635.6675484521237, 626.3338942975611, 616.4274660192373, 607.0180452886246, 599.0581137315934, 587.8482245919989, 578.635863438438, 570.5461338004786, 561.809062203572, 553.0831775303715, 545.0195594816593, 535.3734904928396, 527.143162673964, 520.4749496373483, 511.8998327754521, 504.854004788561, 498.44561004562377, 492.0138720454246, 484.32757622329217, 476.1091608390755, 469.58841869953477, 463.32799679196575, 455.6585965802259, 447.95962051749814, 440.04444897589235, 433.4480659671607, 426.6184864628316, 421.39854928230983, 415.94195780356876, 409.78804496169437, 403.8656511936409, 397.90251496327886, 392.90591765268135, 387.384777811283, 383.52069841566845, 378.0822451270687, 372.48807233746584, 366.962740513651, 360.78450796453177, 356.2447980523432, 351.9144351643541, 347.18511302736715, 340.42063243813067, 334.66993018765345, 329.4694420002104, 324.78216164072165, 320.16967374541116, 315.30282030886815, 311.15568669153845, 306.6801689700832, 301.73840121898877, 297.462115047801, 293.35382967503034, 290.1068668364439, 286.6507638726805, 281.33015287699726, 276.9252099223186, 272.7964170455588, 269.4155616118633, 265.54035206535053, 262.5166582576501, 259.2184910727898, 254.9377985189048, 251.61828249239244, 246.2681785109532, 243.09512909981595, 239.1886623819472, 236.0472312863834, 232.83913744123964, 230.15915564930975, 226.7266214243344, 223.67574276564682, 220.75915808662498, 217.61630645962717, 214.41628647225266, 211.78404875209023, 208.42385935563988, 205.73820229487373, 202.0361568078638, 199.47440247200615, 196.0554122325881, 192.58861261493746, 190.5960623816993, 187.82726122810527, 185.14950395848982, 182.58695836247824, 180.15520297669525, 177.7126983095465, 173.74369293012697, 172.27431915191488, 169.99915963419267, 167.52231922774777, 165.5132581315081, 163.60889015672385, 161.62584948653875, 159.55181979648816, 157.05524704078485, 155.73442480805267, 152.7404491646277, 150.09698758736425, 148.2114405266807, 146.24427579250798, 144.20102876303073, 142.63079382252062, 140.28738438461951, 138.53816937100078, 137.00462460850204, 135.2192140642414, 133.36289923765895, 131.60555412739208, 129.89495295997187, 127.92957938672421, 125.78908549425292, 124.81233107984718, 123.52433366976562, 122.56633894678558, 120.2622276801633, 118.68949115816147, 116.96244122242614, 114.9875461984315, 112.53604040757943, 111.36260268299918, 109.60088492110242, 106.99626102897643, 106.02893284534859, 105.11680725880422, 104.27667220878539, 101.97071426158138, 99.48381068166529, 98.34448380252772, 96.8619876916792, 95.27117014340246, 93.61030380575191, 92.03300059893279, 90.91242241346097, 89.5783825389419, 88.0690472994567, 86.92032481986612, 86.19431634636827, 84.64257241399795, 83.35046582503149, 82.10948797331407, 81.47809501071528, 80.37607820047819, 79.05296819936203, 78.2880280166635, 77.12321408320642, 76.17431669023073, 75.46555082841105, 74.08855352799206, 72.64234295031224, 71.1932401557098, 70.29896544342708, 69.10474288358068, 68.10681466366357, 67.2766261974336, 66.2060578259655, 64.84819974072532, 64.26248762375025, 63.655958807124435, 63.021178142898734, 61.887973283573025, 61.34550214167413, 60.84218325684211, 59.75052081449668, 58.882856582413254, 58.06993767286117, 57.4512322874273, 56.27126280689208, 55.5850579653433, 54.86065012208524, 54.212296062065974, 53.64433342890406, 52.402065763026705, 51.50371786590687, 50.18449199129788, 49.011308689955804, 48.04474724085213, 47.586062447901185, 47.092418436352794, 46.05398767005187, 45.17033548565469, 44.13128156554154, 43.590687590584984, 42.55585995813465, 41.462302626111374, 40.8227829907617, 40.1555923471125, 39.44051667675458, 38.952610922848045, 38.228897569432405, 38.16675302129337, 37.63990291109607, 37.33237332819391, 36.843024810940584, 36.18044365241852, 35.63901391331567, 34.98514431641951, 34.427844931952905, 34.15572234474388, 33.89791576165636, 33.58141753555839, 33.17901080979904, 32.430951323690905, 32.14780617317963, 31.786811590500857, 31.487905815638733, 31.25941170815567, 30.8, 30.209983388658483, 30.00761728423405, 29.894610916581524, 29.418695387886217, 29.028897569432402, 28.572098653149833, 27.941237202229203, 27.16405499221705, 26.57534401498233, 26.18581107061944, 25.60768096208106, 25.157342370508886, 24.947766966707555, 24.83087017795057, 24.84801524773944, 24.44801524773944, 23.97448342696732, 23.38998327754521, 23.041237202229205, 22.68044365241852, 22.304234249344493, 22.030870177950572, 21.65499546279118, 21.25329983228432, 21.22348087705897, 20.83602010819715, 20.76062723368596, 20.726658805020513, 20.553015673398956, 20.321110903349116, 20.039013913315678, 19.718361901852695, 19.404382595238417, 19.270188350089768, 19.018361901852693, 18.804382595238415, 18.29727137356323, 18.18044365241852, 18.18044365241852, 17.770188350089768, 17.490663190506524, 17.30516780926679, 16.986329658502427, 16.82842712474619, 16.611792895928296, 16.272077843177478, 15.811971337416095, 15.6, 15.564021540914663, 15.4, 15.262948526090785, 15.204712790491659, 15.098076211353316, 14.761249694973138, 14.627844931952907, 14.549499949989999, 14.22163735324878, 14.23746859276655, 13.988749679651441, 13.560530911091464, 13.195232683975696, 12.935415650406263, 12.730264406271473, 12.730264406271473, 12.56155281280883, 12.56155281280883, 12.30249843945008, 12.195232683975696, 12.151703885630399, 11.801162476429896, 11.724859546128698, 11.557965224510319, 11.296664193866098, 11.10580611373101, 10.839607805437115, 10.352082129094011, 10.246424919657297, 10.060993863226868, 10.091647286716892, 9.73745370306862, 9.618473918382739, 9.474143634695471, 9.436491673103708, 9.280673457630783, 8.933480820183735, 8.859842925478429, 8.872308292331603, 8.563146436446875, 8.459842925478428, 8.51246117974981, 8.46183995387307, 8.359591794226542, 8.306399754651386, 8.320627924084866, 8.036831648630553, 7.820937271229855, 7.686796226411321, 7.57349939951952, 7.561839953873071, 7.561839953873071, 7.512461179749811, 7.302498439450078, 7.196150045602856, 7.196150045602856, 7.1063997546513855, 6.974841765813149, 6.820937271229855, 6.57349939951952, 6.3796174463531985, 6.302775637731995, 6.252082129094011, 6.172004514666935, 6.172004514666935, 6.0635192088548395, 6.0635192088548395, 5.739811309558465, 5.770329308849006, 5.7888543819998315, 5.7888543819998315, 5.779617446353199, 5.713835714721705, 5.713835714721705, 5.67414363469547, 5.67414363469547, 5.507128339080558, 5.389971264130532, 5.389971264130532, 5.372004514666935, 5.372004514666935, 5.1881943016134136, 5.16682847133894, 5.114642819948225, 5.031517172080024, 4.8585707942145415, 4.8613247725836155, 4.889971264130532, 4.889971264130532, 4.795709025009609, 4.7029386365926396], "type": "scatter"}, {"fill": "tonexty", "fillcolor": "rgba(68, 68, 68, 0.2)", "legendgroup": "[1.0, 1.7, 2.2, 3.25, 5.45, 7.7, 10.45, 15.45, 22.5, 33.95, 49.5, 71.25, 98.9, 136.1, 184.8, 239.5, 302.95, 371.4, 440.2, 505.2, 563.45, 620.5, 669.4, 707.75, 740.2, 767.9, 786.2, 801.65, 808.8, 813.3, 812.9, 809.85, 803.75, 797.55, 788.7, 778.6, 770.3, 759.05, 748.5, 738.45, 727.65, 717.7, 707.25, 696.75, 685.3, 674.95, 665.0, 655.05, 644.75, 635.25, 625.6, 615.8, 606.4, 597.55, 588.7, 579.55, 570.85, 562.85, 553.35, 544.6, 536.6, 528.7, 520.1, 511.65, 503.7, 496.25, 489.45, 482.0, 475.2, 468.55, 461.55, 454.85, 447.45, 441.1, 434.65, 427.3, 419.5, 412.8, 406.95, 401.05, 395.55, 390.3, 384.7, 378.7, 373.05, 368.4, 363.25, 358.75, 353.45, 348.6, 343.9, 338.2, 333.9, 328.7, 323.85, 318.6, 313.9, 308.95, 304.75, 300.4, 295.8, 291.15, 287.15, 283.1, 279.4, 275.4, 271.9, 268.65, 264.65, 260.55, 256.75, 252.7, 249.35, 246.0, 242.85, 238.45, 235.2, 230.65, 227.7, 224.2, 221.15, 218.0, 215.0, 211.5, 208.95, 206.15, 203.35, 200.9, 198.0, 195.0, 192.5, 188.95, 186.4, 183.35, 180.3, 177.9, 175.25, 172.55, 169.75, 167.9, 165.5, 162.45, 160.8, 158.1, 155.75, 153.25, 150.95, 148.75, 146.5, 143.95, 142.5, 140.05, 137.65, 135.75, 133.8, 132.05, 130.6, 128.8, 127.45, 125.65, 124.15, 122.6, 120.8, 119.0, 117.35, 114.8, 113.25, 111.8, 110.7, 108.5, 106.8, 105.0, 103.15, 101.35, 99.95, 98.3, 96.3, 95.3, 94.25, 93.25, 91.4, 89.3, 88.15, 86.95, 85.4, 83.9, 82.85, 81.85, 80.8, 79.2, 78.3, 77.4, 76.4, 75.3, 74.2, 73.5, 72.55, 71.05, 70.15, 69.25, 68.4, 67.5, 66.45, 65.3, 63.8, 63.05, 62.25, 61.5, 60.55, 59.6, 58.6, 57.95, 57.15, 56.4, 55.45, 54.4, 53.65, 52.55, 51.6, 50.85, 50.35, 49.5, 48.9, 48.4, 47.7, 47.25, 46.35, 45.45, 44.55, 43.7, 43.05, 42.75, 42.15, 41.35, 40.55, 39.8, 39.3, 38.5, 37.9, 37.3, 36.8, 36.15, 35.6, 35.1, 34.95, 34.55, 34.15, 33.8, 33.25, 32.8, 32.3, 31.9, 31.75, 31.5, 30.9, 30.45, 29.75, 29.3, 28.95, 28.6, 28.2, 27.6, 27.2, 27.05, 26.65, 26.2, 25.9, 25.45, 24.95, 24.4, 23.85, 23.55, 23.0, 22.6, 22.15, 21.9, 21.7, 21.3, 20.95, 20.4, 20.05, 19.75, 19.35, 19.1, 18.9, 18.6, 18.55, 18.25, 18.05, 17.9, 17.65, 17.35, 17.2, 16.85, 16.55, 16.35, 16.15, 15.95, 15.55, 15.25, 15.25, 14.85, 14.55, 14.4, 14.25, 14.0, 13.85, 13.6, 13.3, 13.2, 13.15, 12.8, 12.65, 12.55, 12.5, 12.2, 12.1, 12.05, 11.9, 11.75, 11.55, 11.3, 11.1, 10.8, 10.65, 10.65, 10.5, 10.5, 10.3, 10.1, 9.95, 9.65, 9.5, 9.2, 9.05, 8.95, 8.8, 8.55, 8.5, 8.35, 8.3, 8.05, 7.85, 7.65, 7.5, 7.35, 7.05, 6.95, 6.9, 6.75, 6.55, 6.5, 6.45, 6.4, 6.35, 6.25, 6.05, 5.9, 5.8, 5.7, 5.55, 5.55, 5.5, 5.3, 5.25, 5.25, 5.15, 5.0, 4.9, 4.7, 4.55, 4.5, 4.45, 4.4, 4.4, 4.3, 4.3, 4.15, 4.1, 4.0, 4.0, 3.95, 3.9, 3.9, 3.85, 3.85, 3.75, 3.65, 3.65, 3.6, 3.6, 3.5, 3.45, 3.4, 3.35, 3.25, 3.2, 3.15, 3.15, 3.05, 3.0]", "name": "Infected", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.7, 2.2, 3.25, 5.45, 7.7, 10.45, 15.45, 22.5, 33.95, 49.5, 71.25, 98.9, 136.1, 184.8, 239.5, 302.95, 371.4, 440.2, 505.2, 563.45, 620.5, 669.4, 707.75, 740.2, 767.9, 786.2, 801.65, 808.8, 813.3, 812.9, 809.85, 803.75, 797.55, 788.7, 778.6, 770.3, 759.05, 748.5, 738.45, 727.65, 717.7, 707.25, 696.75, 685.3, 674.95, 665.0, 655.05, 644.75, 635.25, 625.6, 615.8, 606.4, 597.55, 588.7, 579.55, 570.85, 562.85, 553.35, 544.6, 536.6, 528.7, 520.1, 511.65, 503.7, 496.25, 489.45, 482.0, 475.2, 468.55, 461.55, 454.85, 447.45, 441.1, 434.65, 427.3, 419.5, 412.8, 406.95, 401.05, 395.55, 390.3, 384.7, 378.7, 373.05, 368.4, 363.25, 358.75, 353.45, 348.6, 343.9, 338.2, 333.9, 328.7, 323.85, 318.6, 313.9, 308.95, 304.75, 300.4, 295.8, 291.15, 287.15, 283.1, 279.4, 275.4, 271.9, 268.65, 264.65, 260.55, 256.75, 252.7, 249.35, 246.0, 242.85, 238.45, 235.2, 230.65, 227.7, 224.2, 221.15, 218.0, 215.0, 211.5, 208.95, 206.15, 203.35, 200.9, 198.0, 195.0, 192.5, 188.95, 186.4, 183.35, 180.3, 177.9, 175.25, 172.55, 169.75, 167.9, 165.5, 162.45, 160.8, 158.1, 155.75, 153.25, 150.95, 148.75, 146.5, 143.95, 142.5, 140.05, 137.65, 135.75, 133.8, 132.05, 130.6, 128.8, 127.45, 125.65, 124.15, 122.6, 120.8, 119.0, 117.35, 114.8, 113.25, 111.8, 110.7, 108.5, 106.8, 105.0, 103.15, 101.35, 99.95, 98.3, 96.3, 95.3, 94.25, 93.25, 91.4, 89.3, 88.15, 86.95, 85.4, 83.9, 82.85, 81.85, 80.8, 79.2, 78.3, 77.4, 76.4, 75.3, 74.2, 73.5, 72.55, 71.05, 70.15, 69.25, 68.4, 67.5, 66.45, 65.3, 63.8, 63.05, 62.25, 61.5, 60.55, 59.6, 58.6, 57.95, 57.15, 56.4, 55.45, 54.4, 53.65, 52.55, 51.6, 50.85, 50.35, 49.5, 48.9, 48.4, 47.7, 47.25, 46.35, 45.45, 44.55, 43.7, 43.05, 42.75, 42.15, 41.35, 40.55, 39.8, 39.3, 38.5, 37.9, 37.3, 36.8, 36.15, 35.6, 35.1, 34.95, 34.55, 34.15, 33.8, 33.25, 32.8, 32.3, 31.9, 31.75, 31.5, 30.9, 30.45, 29.75, 29.3, 28.95, 28.6, 28.2, 27.6, 27.2, 27.05, 26.65, 26.2, 25.9, 25.45, 24.95, 24.4, 23.85, 23.55, 23.0, 22.6, 22.15, 21.9, 21.7, 21.3, 20.95, 20.4, 20.05, 19.75, 19.35, 19.1, 18.9, 18.6, 18.55, 18.25, 18.05, 17.9, 17.65, 17.35, 17.2, 16.85, 16.55, 16.35, 16.15, 15.95, 15.55, 15.25, 15.25, 14.85, 14.55, 14.4, 14.25, 14.0, 13.85, 13.6, 13.3, 13.2, 13.15, 12.8, 12.65, 12.55, 12.5, 12.2, 12.1, 12.05, 11.9, 11.75, 11.55, 11.3, 11.1, 10.8, 10.65, 10.65, 10.5, 10.5, 10.3, 10.1, 9.95, 9.65, 9.5, 9.2, 9.05, 8.95, 8.8, 8.55, 8.5, 8.35, 8.3, 8.05, 7.85, 7.65, 7.5, 7.35, 7.05, 6.95, 6.9, 6.75, 6.55, 6.5, 6.45, 6.4, 6.35, 6.25, 6.05, 5.9, 5.8, 5.7, 5.55, 5.55, 5.5, 5.3, 5.25, 5.25, 5.15, 5.0, 4.9, 4.7, 4.55, 4.5, 4.45, 4.4, 4.4, 4.3, 4.3, 4.15, 4.1, 4.0, 4.0, 3.95, 3.9, 3.9, 3.85, 3.85, 3.75, 3.65, 3.65, 3.6, 3.6, 3.5, 3.45, 3.4, 3.35, 3.25, 3.2, 3.15, 3.15, 3.05, 3.0], "type": "scatter"}, {"fill": "tonexty", "fillcolor": "rgba(68, 68, 68, 0.2)", "legendgroup": "[1.0, 1.7, 2.2, 3.25, 5.45, 7.7, 10.45, 15.45, 22.5, 33.95, 49.5, 71.25, 98.9, 136.1, 184.8, 239.5, 302.95, 371.4, 440.2, 505.2, 563.45, 620.5, 669.4, 707.75, 740.2, 767.9, 786.2, 801.65, 808.8, 813.3, 812.9, 809.85, 803.75, 797.55, 788.7, 778.6, 770.3, 759.05, 748.5, 738.45, 727.65, 717.7, 707.25, 696.75, 685.3, 674.95, 665.0, 655.05, 644.75, 635.25, 625.6, 615.8, 606.4, 597.55, 588.7, 579.55, 570.85, 562.85, 553.35, 544.6, 536.6, 528.7, 520.1, 511.65, 503.7, 496.25, 489.45, 482.0, 475.2, 468.55, 461.55, 454.85, 447.45, 441.1, 434.65, 427.3, 419.5, 412.8, 406.95, 401.05, 395.55, 390.3, 384.7, 378.7, 373.05, 368.4, 363.25, 358.75, 353.45, 348.6, 343.9, 338.2, 333.9, 328.7, 323.85, 318.6, 313.9, 308.95, 304.75, 300.4, 295.8, 291.15, 287.15, 283.1, 279.4, 275.4, 271.9, 268.65, 264.65, 260.55, 256.75, 252.7, 249.35, 246.0, 242.85, 238.45, 235.2, 230.65, 227.7, 224.2, 221.15, 218.0, 215.0, 211.5, 208.95, 206.15, 203.35, 200.9, 198.0, 195.0, 192.5, 188.95, 186.4, 183.35, 180.3, 177.9, 175.25, 172.55, 169.75, 167.9, 165.5, 162.45, 160.8, 158.1, 155.75, 153.25, 150.95, 148.75, 146.5, 143.95, 142.5, 140.05, 137.65, 135.75, 133.8, 132.05, 130.6, 128.8, 127.45, 125.65, 124.15, 122.6, 120.8, 119.0, 117.35, 114.8, 113.25, 111.8, 110.7, 108.5, 106.8, 105.0, 103.15, 101.35, 99.95, 98.3, 96.3, 95.3, 94.25, 93.25, 91.4, 89.3, 88.15, 86.95, 85.4, 83.9, 82.85, 81.85, 80.8, 79.2, 78.3, 77.4, 76.4, 75.3, 74.2, 73.5, 72.55, 71.05, 70.15, 69.25, 68.4, 67.5, 66.45, 65.3, 63.8, 63.05, 62.25, 61.5, 60.55, 59.6, 58.6, 57.95, 57.15, 56.4, 55.45, 54.4, 53.65, 52.55, 51.6, 50.85, 50.35, 49.5, 48.9, 48.4, 47.7, 47.25, 46.35, 45.45, 44.55, 43.7, 43.05, 42.75, 42.15, 41.35, 40.55, 39.8, 39.3, 38.5, 37.9, 37.3, 36.8, 36.15, 35.6, 35.1, 34.95, 34.55, 34.15, 33.8, 33.25, 32.8, 32.3, 31.9, 31.75, 31.5, 30.9, 30.45, 29.75, 29.3, 28.95, 28.6, 28.2, 27.6, 27.2, 27.05, 26.65, 26.2, 25.9, 25.45, 24.95, 24.4, 23.85, 23.55, 23.0, 22.6, 22.15, 21.9, 21.7, 21.3, 20.95, 20.4, 20.05, 19.75, 19.35, 19.1, 18.9, 18.6, 18.55, 18.25, 18.05, 17.9, 17.65, 17.35, 17.2, 16.85, 16.55, 16.35, 16.15, 15.95, 15.55, 15.25, 15.25, 14.85, 14.55, 14.4, 14.25, 14.0, 13.85, 13.6, 13.3, 13.2, 13.15, 12.8, 12.65, 12.55, 12.5, 12.2, 12.1, 12.05, 11.9, 11.75, 11.55, 11.3, 11.1, 10.8, 10.65, 10.65, 10.5, 10.5, 10.3, 10.1, 9.95, 9.65, 9.5, 9.2, 9.05, 8.95, 8.8, 8.55, 8.5, 8.35, 8.3, 8.05, 7.85, 7.65, 7.5, 7.35, 7.05, 6.95, 6.9, 6.75, 6.55, 6.5, 6.45, 6.4, 6.35, 6.25, 6.05, 5.9, 5.8, 5.7, 5.55, 5.55, 5.5, 5.3, 5.25, 5.25, 5.15, 5.0, 4.9, 4.7, 4.55, 4.5, 4.45, 4.4, 4.4, 4.3, 4.3, 4.15, 4.1, 4.0, 4.0, 3.95, 3.9, 3.9, 3.85, 3.85, 3.75, 3.65, 3.65, 3.6, 3.6, 3.5, 3.45, 3.4, 3.35, 3.25, 3.2, 3.15, 3.15, 3.05, 3.0]", "line": {"dash": "dot", "width": 1}, "marker": {"color": "#444"}, "mode": "lines", "name": "Infected Lower Bound", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 0.857385022682364, 0.5386752274163855, 0.7425112163760335, 1.7153648103194872, 1.4702327491309921, 1.9032169794711642, 2.587360302021983, 4.138355193501862, 6.406443584751077, 11.61266702445262, 16.886524209723312, 24.031515308509157, 36.20460471072754, 55.923469941187506, 83.48990417283886, 117.71110694565246, 164.6984276789361, 215.93595919095722, 272.8494889181433, 328.51033221271473, 390.5653353667612, 452.58939140346473, 510.60719008799737, 565.5393003563768, 620.6485483942517, 665.8348887758584, 706.8469014219472, 736.1132749396425, 762.584026185037, 774.9475297246674, 779.7596776354922, 773.8721235694369, 764.6707132072485, 753.6, 739.909691135893, 729.7412771404227, 715.9576863002228, 704.0539653062278, 692.6422768520417, 681.8774372576759, 672.2378179142269, 661.2447013921222, 650.9571239164867, 640.4523690703734, 631.5605139463488, 622.3057380904646, 614.9794684337729, 604.0475737823898, 595.4468908249619, 586.1774176391247, 577.1779855522785, 568.0615075935425, 559.4324515478762, 551.066105702439, 542.6725339807626, 534.6819547113754, 526.6418862684067, 518.8517754080011, 510.564136561562, 502.65386619952136, 495.5909377964281, 487.1168224696286, 478.28044051834064, 472.0265095071604, 465.35683732603604, 458.4250503626517, 452.1001672245479, 445.545995211439, 438.65438995437626, 431.08612795457543, 425.3724237767079, 418.79083916092446, 412.6115813004653, 405.9720032080342, 398.94140341977413, 391.04037948250186, 385.5555510241077, 380.4519340328393, 375.48151353716844, 369.7014507176902, 364.65804219643127, 359.6119550383056, 353.5343488063591, 348.19748503672116, 343.8940823473186, 339.115222188717, 333.97930158433155, 328.8177548729313, 324.7119276625342, 320.83725948634896, 315.6154920354682, 311.55520194765677, 305.4855648356459, 300.5148869726329, 296.7793675618694, 293.1300698123465, 288.4305579997896, 284.71783835927835, 280.6303262545888, 276.2971796911319, 271.1443133084615, 267.6198310299168, 264.4615987810113, 261.337884952199, 257.4461703249696, 253.6931331635561, 250.64923612731945, 247.96984712300272, 244.17479007768145, 240.7035829544412, 235.98443838813662, 233.15964793464946, 229.48334174234992, 226.48150892721017, 221.96220148109518, 218.78171750760754, 215.03182148904682, 212.30487090018403, 209.21133761805277, 206.2527687136166, 203.16086255876036, 199.84084435069025, 196.2733785756656, 194.22425723435316, 191.54084191337503, 189.08369354037282, 187.38371352774735, 184.21595124790977, 181.57614064436012, 179.26179770512627, 175.8638431921362, 173.32559752799386, 170.64458776741188, 168.01138738506256, 165.2039376183007, 162.67273877189473, 159.9504960415102, 156.91304163752176, 155.64479702330476, 153.2873016904535, 151.156307069873, 149.32568084808514, 146.20084036580732, 143.97768077225223, 140.9867418684919, 138.29110984327613, 135.87415051346125, 133.44818020351184, 130.84475295921513, 129.26557519194733, 127.3595508353723, 125.20301241263574, 123.28855947331931, 121.35572420749203, 119.89897123696929, 118.56920617747939, 117.31261561538051, 116.36183062899921, 114.29537539149797, 113.08078593575858, 111.83710076234102, 109.99444587260791, 108.10504704002813, 106.77042061327577, 103.81091450574708, 101.68766892015282, 100.07566633023437, 98.83366105321443, 96.7377723198367, 94.91050884183852, 93.03755877757386, 91.31245380156851, 90.16395959242055, 88.53739731700082, 86.99911507889757, 85.60373897102356, 84.5710671546514, 83.38319274119578, 82.22332779121461, 80.82928573841863, 79.1161893183347, 77.95551619747229, 77.0380123083208, 75.52882985659755, 74.1896961942481, 73.6669994010672, 72.78757758653902, 72.0216174610581, 70.3309527005433, 69.67967518013387, 68.60568365363174, 68.15742758600206, 67.2495341749685, 66.29051202668593, 65.52190498928472, 64.7239217995218, 63.04703180063797, 62.01197198333651, 61.37678591679357, 60.62568330976928, 59.534449171588946, 58.81144647200794, 57.95765704968775, 56.406759844290185, 55.801034556572915, 55.395257116419316, 54.89318533633643, 53.8233738025664, 52.9939421740345, 52.351800259274675, 51.63751237624976, 50.64404119287556, 49.77882185710126, 49.01202671642698, 47.454497858325865, 46.457816743157885, 45.34947918550331, 44.31714341758675, 43.63006232713883, 43.2487677125727, 42.72873719310792, 42.214942034656694, 41.93934987791476, 41.18770393793403, 40.85566657109594, 40.2979342369733, 39.396282134093134, 38.91550800870211, 38.3886913100442, 38.05525275914786, 37.913937552098815, 37.2075815636472, 36.646012329948135, 35.929664514345305, 35.46871843445845, 35.00931240941501, 34.44414004186535, 34.33769737388862, 33.77721700923829, 33.44440765288749, 32.85948332324542, 32.24738907715196, 31.971102430567598, 31.73324697870664, 31.46009708890392, 30.967626671806087, 30.75697518905941, 30.31955634758148, 29.96098608668432, 29.614855683580487, 29.37215506804709, 29.344277655256118, 29.10208423834364, 28.218582464441614, 27.72098919020096, 27.069048676309098, 26.452193826820373, 26.11318840949914, 25.71209418436127, 25.140588291844328, 24.400000000000002, 24.190016611341516, 24.09238271576595, 23.405389083418473, 22.98130461211378, 22.771102430567595, 22.327901346850165, 21.958762797770795, 21.635945007782947, 21.12465598501767, 20.91418892938056, 20.39231903791894, 20.042657629491117, 19.352233033292443, 18.969129822049428, 18.55198475226056, 18.15198475226056, 17.925516573032677, 17.410016722454788, 17.058762797770797, 16.81955634758148, 16.39576575065551, 16.16912982204943, 16.145004537208816, 15.946700167715681, 15.87651912294103, 15.66397989180285, 15.33937276631404, 15.073341194979484, 14.74698432660104, 14.378889096650886, 14.36098608668432, 13.981638098147307, 13.695617404761585, 13.429811649910233, 13.281638098147305, 13.095617404761583, 12.802728626436771, 12.319556347581479, 12.319556347581479, 11.929811649910231, 11.609336809493477, 11.49483219073321, 11.513670341497575, 11.17157287525381, 11.088207104071705, 10.927922156822522, 10.788028662583907, 10.799999999999999, 10.735978459085338, 10.200000000000001, 10.037051473909216, 9.895287209508343, 9.901923788646684, 9.63875030502686, 9.572155068047092, 9.550500050010003, 9.57836264675122, 9.26253140723345, 9.11125032034856, 9.039469088908538, 9.004767316024303, 8.664584349593738, 8.569735593728527, 8.569735593728527, 8.43844718719117, 8.43844718719117, 8.297501560549922, 8.004767316024303, 7.7482961143696, 7.498837523570105, 7.275140453871301, 6.8420347754896795, 6.803335806133903, 6.794193886268989, 6.760392194562887, 6.74791787090599, 6.753575080342702, 6.639006136773132, 6.5083527132831085, 6.362546296931381, 6.08152608161726, 5.8258563653045305, 5.563508326896292, 5.419326542369217, 5.166519179816263, 5.040157074521572, 4.927691707668398, 4.936853563553125, 4.6401570745215714, 4.487538820250189, 4.43816004612693, 4.4404082057734575, 4.3936002453486145, 4.1793720759151345, 4.063168351369447, 3.979062728770146, 3.913203773588679, 3.8265006004804807, 3.5381600461269285, 3.5381600461269285, 3.4875388202501894, 3.297501560549921, 3.3038499543971436, 3.3038499543971436, 3.193600245348615, 3.02515823418685, 2.9790627287701454, 2.8265006004804807, 2.720382553646801, 2.697224362268005, 2.6479178709059896, 2.6279954853330656, 2.6279954853330656, 2.53648079114516, 2.53648079114516, 2.560188690441536, 2.429670691150993, 2.2111456180001685, 2.2111456180001685, 2.1203825536468015, 2.0861642852782945, 2.0861642852782945, 2.0258563653045303, 2.0258563653045303, 1.9928716609194421, 1.9100287358694683, 1.9100287358694683, 1.827995485333065, 1.827995485333065, 1.8118056983865867, 1.7331715286610607, 1.6853571800517755, 1.6684828279199764, 1.6414292057854587, 1.538675227416385, 1.4100287358694683, 1.4100287358694683, 1.3042909749903906, 1.29706136340736], "type": "scatter"}, {"legendgroup": "[0.0, 0.0, 0.0, 0.0, 0.1, 0.25, 0.25, 0.6, 0.7, 1.0, 1.45, 2.1, 3.7, 5.4, 7.65, 10.7, 14.85, 19.9, 26.65, 33.4, 42.3, 51.8, 61.55, 72.05, 83.1, 93.55, 104.85, 115.65, 128.45, 140.65, 152.95, 165.6, 178.6, 189.8, 201.85, 215.35, 225.5, 237.95, 249.3, 260.15, 271.3, 281.45, 292.15, 302.8, 314.3, 324.7, 334.8, 344.75, 355.1, 364.6, 374.25, 384.1, 393.6, 402.45, 411.3, 420.45, 429.15, 437.15, 446.65, 455.4, 463.4, 471.3, 479.9, 488.35, 496.3, 503.75, 510.55, 518.0, 524.8, 531.45, 538.45, 545.15, 552.55, 558.9, 565.35, 572.7, 580.5, 587.2, 593.05, 598.95, 604.45, 609.7, 615.3, 621.3, 626.95, 631.6, 636.75, 641.25, 646.55, 651.4, 656.1, 661.8, 666.1, 671.3, 676.15, 681.4, 686.1, 691.05, 695.25, 699.6, 704.2, 708.85, 712.85, 716.9, 720.6, 724.6, 728.1, 731.35, 735.35, 739.45, 743.25, 747.3, 750.65, 754.0, 757.15, 761.55, 764.8, 769.35, 772.3, 775.8, 778.85, 782.0, 785.0, 788.5, 791.05, 793.85, 796.65, 799.1, 802.0, 805.0, 807.5, 811.05, 813.6, 816.65, 819.7, 822.1, 824.75, 827.45, 830.25, 832.1, 834.5, 837.55, 839.2, 841.9, 844.25, 846.75, 849.05, 851.25, 853.5, 856.05, 857.5, 859.95, 862.35, 864.25, 866.2, 867.95, 869.4, 871.2, 872.55, 874.35, 875.85, 877.4, 879.2, 881.0, 882.65, 885.2, 886.75, 888.2, 889.3, 891.5, 893.2, 895.0, 896.85, 898.65, 900.05, 901.7, 903.7, 904.7, 905.75, 906.75, 908.6, 910.7, 911.85, 913.05, 914.6, 916.1, 917.15, 918.15, 919.2, 920.8, 921.7, 922.6, 923.6, 924.7, 925.8, 926.5, 927.45, 928.95, 929.85, 930.75, 931.6, 932.5, 933.55, 934.7, 936.2, 936.95, 937.75, 938.5, 939.45, 940.4, 941.4, 942.05, 942.85, 943.6, 944.55, 945.6, 946.35, 947.45, 948.4, 949.15, 949.65, 950.5, 951.1, 951.6, 952.3, 952.75, 953.65, 954.55, 955.45, 956.3, 956.95, 957.25, 957.85, 958.65, 959.45, 960.2, 960.7, 961.5, 962.1, 962.7, 963.2, 963.85, 964.4, 964.9, 965.05, 965.45, 965.85, 966.2, 966.75, 967.2, 967.7, 968.1, 968.25, 968.5, 969.1, 969.55, 970.25, 970.7, 971.05, 971.4, 971.8, 972.4, 972.8, 972.95, 973.35, 973.8, 974.1, 974.55, 975.05, 975.6, 976.15, 976.45, 977.0, 977.4, 977.85, 978.1, 978.3, 978.7, 979.05, 979.6, 979.95, 980.25, 980.65, 980.9, 981.1, 981.4, 981.45, 981.75, 981.95, 982.1, 982.35, 982.65, 982.8, 983.15, 983.45, 983.65, 983.85, 984.05, 984.45, 984.75, 984.75, 985.15, 985.45, 985.6, 985.75, 986.0, 986.15, 986.4, 986.7, 986.8, 986.85, 987.2, 987.35, 987.45, 987.5, 987.8, 987.9, 987.95, 988.1, 988.25, 988.45, 988.7, 988.9, 989.2, 989.35, 989.35, 989.5, 989.5, 989.7, 989.9, 990.05, 990.35, 990.5, 990.8, 990.95, 991.05, 991.2, 991.45, 991.5, 991.65, 991.7, 991.95, 992.15, 992.35, 992.5, 992.65, 992.95, 993.05, 993.1, 993.25, 993.45, 993.5, 993.55, 993.6, 993.65, 993.75, 993.95, 994.1, 994.2, 994.3, 994.45, 994.45, 994.5, 994.7, 994.75, 994.75, 994.85, 995.0, 995.1, 995.3, 995.45, 995.5, 995.55, 995.6, 995.6, 995.7, 995.7, 995.85, 995.9, 996.0, 996.0, 996.05, 996.1, 996.1, 996.15, 996.15, 996.25, 996.35, 996.35, 996.4, 996.4, 996.5, 996.55, 996.6, 996.65, 996.75, 996.8, 996.85, 996.85, 996.95, 997.0]", "line": {"dash": "dot", "width": 1}, "marker": {"color": "#444"}, "mode": "lines", "name": "Recovered Upper Bound", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.4, 0.7861902647381804, 0.7861902647381804, 1.4, 1.7049875621120887, 2.264911064067352, 3.4618399538730706, 4.526932219902319, 7.251056180912942, 10.01952378498044, 13.897199372518859, 18.593668348746355, 25.18573896729208, 33.04496101173373, 42.94501457501649, 52.61822052116168, 65.64759088214456, 78.8325729445053, 91.89546918404788, 106.69314506507746, 121.08934061022907, 132.8850670521864, 147.07827843992695, 159.11869563260439, 172.19411388975664, 184.91542104171157, 198.46645306919245, 211.64606389258478, 226.2680186288459, 237.66710770456055, 249.00641525815973, 261.99683804932545, 272.03761919135957, 285.04827491532996, 296.83535526321435, 308.02199076704454, 318.8774106062951, 328.3685197976236, 339.177943820669, 349.37853582928517, 359.82043497155973, 368.67965438700037, 377.86460263371765, 385.1899245795538, 396.07548047308296, 404.6679422980517, 413.9298122475397, 422.88259919087426, 431.9384924064575, 440.56754845212373, 448.9338942975611, 457.32746601923725, 465.3180452886246, 473.35811373159333, 481.1482245919989, 489.435863438438, 497.34613380047864, 504.40906220357203, 512.8831775303714, 521.7195594816593, 527.9734904928396, 534.643162673964, 541.5749496373484, 547.8998327754521, 554.454004788561, 561.3456100456237, 568.9138720454246, 574.6275762232922, 581.2091608390755, 587.3884186995347, 594.0279967919658, 601.058596580226, 608.9596205174981, 614.4444489758923, 619.5480659671607, 624.5184864628316, 630.2985492823099, 635.3419578035688, 640.3880449616944, 646.4656511936408, 651.8025149632789, 656.1059176526813, 660.884777811283, 666.0206984156684, 671.1822451270687, 675.2880723374658, 679.162740513651, 684.3845079645317, 688.4447980523432, 694.514435164354, 699.4851130273671, 703.2206324381307, 706.8699301876535, 711.5694420002104, 715.2821616407216, 719.3696737454112, 723.7028203088682, 728.8556866915385, 732.3801689700832, 735.5384012189887, 738.6621150478011, 742.5538296750303, 746.3068668364439, 749.3507638726805, 752.0301528769972, 755.8252099223185, 759.2964170455588, 764.0155616118633, 766.8403520653505, 770.5166582576501, 773.5184910727897, 778.0377985189048, 781.2182824923924, 784.9681785109532, 787.6951290998159, 790.7886623819472, 793.7472312863835, 796.8391374412396, 800.1591556493098, 803.7266214243344, 805.7757427656468, 808.459158086625, 810.9163064596271, 812.6162864722527, 815.7840487520903, 818.4238593556398, 820.7382022948738, 824.1361568078637, 826.6744024720061, 829.3554122325882, 831.9886126149376, 834.7960623816994, 837.3272612281053, 840.0495039584898, 843.0869583624782, 844.3552029766953, 846.7126983095465, 848.843692930127, 850.6743191519149, 853.7991596341926, 856.0223192277477, 859.0132581315081, 861.7088901567238, 864.1258494865388, 866.5518197964882, 869.1552470407848, 870.7344248080527, 872.6404491646277, 874.7969875873642, 876.7114405266807, 878.644275792508, 880.1010287630307, 881.4307938225206, 882.6873843846196, 883.6381693710007, 885.7046246085021, 886.9192140642415, 888.162899237659, 890.0055541273921, 891.8949529599719, 893.2295793867241, 896.1890854942529, 898.3123310798471, 899.9243336697657, 901.1663389467856, 903.2622276801633, 905.0894911581615, 906.9624412224262, 908.6875461984315, 909.8360404075794, 911.4626026829991, 913.0008849211025, 914.3962610289765, 915.4289328453486, 916.6168072588042, 917.7766722087854, 919.1707142615815, 920.8838106816653, 922.0444838025278, 922.9619876916792, 924.4711701434024, 925.8103038057519, 926.3330005989328, 927.212422413461, 927.9783825389419, 929.6690472994567, 930.3203248198662, 931.3943163463683, 931.842572413998, 932.7504658250315, 933.709487973314, 934.4780950107153, 935.2760782004782, 936.9529681993621, 937.9880280166635, 938.6232140832064, 939.3743166902308, 940.4655508284111, 941.188553527992, 942.0423429503123, 943.5932401557099, 944.1989654434271, 944.6047428835807, 945.1068146636636, 946.1766261974336, 947.0060578259655, 947.6481997407253, 948.3624876237502, 949.3559588071245, 950.2211781428988, 950.987973283573, 952.5455021416742, 953.5421832568421, 954.6505208144968, 955.6828565824133, 956.3699376728612, 956.7512322874272, 957.2712628068921, 957.7850579653433, 958.0606501220852, 958.8122960620659, 959.144333428904, 959.7020657630267, 960.6037178659068, 961.0844919912979, 961.6113086899558, 961.9447472408522, 962.0860624479012, 962.7924184363528, 963.3539876700519, 964.0703354856547, 964.5312815655416, 964.990687590585, 965.5558599581346, 965.6623026261113, 966.2227829907617, 966.5555923471126, 967.1405166767546, 967.752610922848, 968.0288975694324, 968.2667530212933, 968.5399029110961, 969.0323733281939, 969.2430248109406, 969.6804436524185, 970.0390139133157, 970.3851443164195, 970.627844931953, 970.6557223447439, 970.8979157616563, 971.7814175355584, 972.279010809799, 972.9309513236909, 973.5478061731797, 973.8868115905008, 974.2879058156387, 974.8594117081557, 975.6, 975.8099833886585, 975.9076172842341, 976.5946109165816, 977.0186953878862, 977.2288975694324, 977.6720986531498, 978.0412372022291, 978.3640549922171, 978.8753440149823, 979.0858110706195, 979.6076809620811, 979.9573423705089, 980.6477669667075, 981.0308701779506, 981.4480152477394, 981.8480152477395, 982.0744834269673, 982.5899832775452, 982.9412372022292, 983.1804436524185, 983.6042342493445, 983.8308701779506, 983.8549954627912, 984.0532998322843, 984.123480877059, 984.3360201081972, 984.660627233686, 984.9266588050206, 985.253015673399, 985.6211109033491, 985.6390139133156, 986.0183619018527, 986.3043825952385, 986.5701883500898, 986.7183619018527, 986.9043825952384, 987.1972713735632, 987.6804436524185, 987.6804436524185, 988.0701883500898, 988.3906631905065, 988.5051678092668, 988.4863296585024, 988.8284271247462, 988.9117928959283, 989.0720778431775, 989.2119713374161, 989.1999999999999, 989.2640215409147, 989.8000000000001, 989.9629485260908, 990.1047127904917, 990.0980762113534, 990.3612496949731, 990.4278449319529, 990.44949994999, 990.4216373532488, 990.7374685927665, 990.8887496796515, 990.9605309110915, 990.9952326839757, 991.3354156504063, 991.4302644062715, 991.4302644062715, 991.5615528128088, 991.5615528128088, 991.7024984394501, 991.9952326839757, 992.2517038856304, 992.50116247643, 992.7248595461288, 993.1579652245102, 993.1966641938661, 993.205806113731, 993.2396078054371, 993.2520821290941, 993.2464249196573, 993.3609938632269, 993.4916472867169, 993.6374537030687, 993.9184739183827, 994.1741436346955, 994.4364916731037, 994.5806734576307, 994.8334808201838, 994.9598429254784, 995.0723082923316, 995.0631464364469, 995.3598429254785, 995.5124611797498, 995.561839953873, 995.5595917942265, 995.6063997546513, 995.8206279240849, 995.9368316486306, 996.0209372712299, 996.0867962264114, 996.1734993995195, 996.4618399538731, 996.4618399538731, 996.5124611797498, 996.7024984394501, 996.6961500456028, 996.6961500456028, 996.8063997546514, 996.9748417658132, 997.0209372712299, 997.1734993995195, 997.2796174463532, 997.302775637732, 997.352082129094, 997.372004514667, 997.372004514667, 997.4635192088549, 997.4635192088549, 997.4398113095585, 997.570329308849, 997.7888543819998, 997.7888543819998, 997.8796174463531, 997.9138357147217, 997.9138357147217, 997.9741436346955, 997.9741436346955, 998.0071283390805, 998.0899712641306, 998.0899712641306, 998.1720045146669, 998.1720045146669, 998.1881943016134, 998.2668284713388, 998.3146428199483, 998.33151717208, 998.3585707942145, 998.4613247725836, 998.5899712641306, 998.5899712641306, 998.6957090250097, 998.7029386365926], "type": "scatter"}, {"fill": "tonexty", "fillcolor": "rgba(68, 68, 68, 0.2)", "legendgroup": "[0.0, 0.0, 0.0, 0.0, 0.1, 0.25, 0.25, 0.6, 0.7, 1.0, 1.45, 2.1, 3.7, 5.4, 7.65, 10.7, 14.85, 19.9, 26.65, 33.4, 42.3, 51.8, 61.55, 72.05, 83.1, 93.55, 104.85, 115.65, 128.45, 140.65, 152.95, 165.6, 178.6, 189.8, 201.85, 215.35, 225.5, 237.95, 249.3, 260.15, 271.3, 281.45, 292.15, 302.8, 314.3, 324.7, 334.8, 344.75, 355.1, 364.6, 374.25, 384.1, 393.6, 402.45, 411.3, 420.45, 429.15, 437.15, 446.65, 455.4, 463.4, 471.3, 479.9, 488.35, 496.3, 503.75, 510.55, 518.0, 524.8, 531.45, 538.45, 545.15, 552.55, 558.9, 565.35, 572.7, 580.5, 587.2, 593.05, 598.95, 604.45, 609.7, 615.3, 621.3, 626.95, 631.6, 636.75, 641.25, 646.55, 651.4, 656.1, 661.8, 666.1, 671.3, 676.15, 681.4, 686.1, 691.05, 695.25, 699.6, 704.2, 708.85, 712.85, 716.9, 720.6, 724.6, 728.1, 731.35, 735.35, 739.45, 743.25, 747.3, 750.65, 754.0, 757.15, 761.55, 764.8, 769.35, 772.3, 775.8, 778.85, 782.0, 785.0, 788.5, 791.05, 793.85, 796.65, 799.1, 802.0, 805.0, 807.5, 811.05, 813.6, 816.65, 819.7, 822.1, 824.75, 827.45, 830.25, 832.1, 834.5, 837.55, 839.2, 841.9, 844.25, 846.75, 849.05, 851.25, 853.5, 856.05, 857.5, 859.95, 862.35, 864.25, 866.2, 867.95, 869.4, 871.2, 872.55, 874.35, 875.85, 877.4, 879.2, 881.0, 882.65, 885.2, 886.75, 888.2, 889.3, 891.5, 893.2, 895.0, 896.85, 898.65, 900.05, 901.7, 903.7, 904.7, 905.75, 906.75, 908.6, 910.7, 911.85, 913.05, 914.6, 916.1, 917.15, 918.15, 919.2, 920.8, 921.7, 922.6, 923.6, 924.7, 925.8, 926.5, 927.45, 928.95, 929.85, 930.75, 931.6, 932.5, 933.55, 934.7, 936.2, 936.95, 937.75, 938.5, 939.45, 940.4, 941.4, 942.05, 942.85, 943.6, 944.55, 945.6, 946.35, 947.45, 948.4, 949.15, 949.65, 950.5, 951.1, 951.6, 952.3, 952.75, 953.65, 954.55, 955.45, 956.3, 956.95, 957.25, 957.85, 958.65, 959.45, 960.2, 960.7, 961.5, 962.1, 962.7, 963.2, 963.85, 964.4, 964.9, 965.05, 965.45, 965.85, 966.2, 966.75, 967.2, 967.7, 968.1, 968.25, 968.5, 969.1, 969.55, 970.25, 970.7, 971.05, 971.4, 971.8, 972.4, 972.8, 972.95, 973.35, 973.8, 974.1, 974.55, 975.05, 975.6, 976.15, 976.45, 977.0, 977.4, 977.85, 978.1, 978.3, 978.7, 979.05, 979.6, 979.95, 980.25, 980.65, 980.9, 981.1, 981.4, 981.45, 981.75, 981.95, 982.1, 982.35, 982.65, 982.8, 983.15, 983.45, 983.65, 983.85, 984.05, 984.45, 984.75, 984.75, 985.15, 985.45, 985.6, 985.75, 986.0, 986.15, 986.4, 986.7, 986.8, 986.85, 987.2, 987.35, 987.45, 987.5, 987.8, 987.9, 987.95, 988.1, 988.25, 988.45, 988.7, 988.9, 989.2, 989.35, 989.35, 989.5, 989.5, 989.7, 989.9, 990.05, 990.35, 990.5, 990.8, 990.95, 991.05, 991.2, 991.45, 991.5, 991.65, 991.7, 991.95, 992.15, 992.35, 992.5, 992.65, 992.95, 993.05, 993.1, 993.25, 993.45, 993.5, 993.55, 993.6, 993.65, 993.75, 993.95, 994.1, 994.2, 994.3, 994.45, 994.45, 994.5, 994.7, 994.75, 994.75, 994.85, 995.0, 995.1, 995.3, 995.45, 995.5, 995.55, 995.6, 995.6, 995.7, 995.7, 995.85, 995.9, 996.0, 996.0, 996.05, 996.1, 996.1, 996.15, 996.15, 996.25, 996.35, 996.35, 996.4, 996.4, 996.5, 996.55, 996.6, 996.65, 996.75, 996.8, 996.85, 996.85, 996.95, 997.0]", "name": "Recovered", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.1, 0.25, 0.25, 0.6, 0.7, 1.0, 1.45, 2.1, 3.7, 5.4, 7.65, 10.7, 14.85, 19.9, 26.65, 33.4, 42.3, 51.8, 61.55, 72.05, 83.1, 93.55, 104.85, 115.65, 128.45, 140.65, 152.95, 165.6, 178.6, 189.8, 201.85, 215.35, 225.5, 237.95, 249.3, 260.15, 271.3, 281.45, 292.15, 302.8, 314.3, 324.7, 334.8, 344.75, 355.1, 364.6, 374.25, 384.1, 393.6, 402.45, 411.3, 420.45, 429.15, 437.15, 446.65, 455.4, 463.4, 471.3, 479.9, 488.35, 496.3, 503.75, 510.55, 518.0, 524.8, 531.45, 538.45, 545.15, 552.55, 558.9, 565.35, 572.7, 580.5, 587.2, 593.05, 598.95, 604.45, 609.7, 615.3, 621.3, 626.95, 631.6, 636.75, 641.25, 646.55, 651.4, 656.1, 661.8, 666.1, 671.3, 676.15, 681.4, 686.1, 691.05, 695.25, 699.6, 704.2, 708.85, 712.85, 716.9, 720.6, 724.6, 728.1, 731.35, 735.35, 739.45, 743.25, 747.3, 750.65, 754.0, 757.15, 761.55, 764.8, 769.35, 772.3, 775.8, 778.85, 782.0, 785.0, 788.5, 791.05, 793.85, 796.65, 799.1, 802.0, 805.0, 807.5, 811.05, 813.6, 816.65, 819.7, 822.1, 824.75, 827.45, 830.25, 832.1, 834.5, 837.55, 839.2, 841.9, 844.25, 846.75, 849.05, 851.25, 853.5, 856.05, 857.5, 859.95, 862.35, 864.25, 866.2, 867.95, 869.4, 871.2, 872.55, 874.35, 875.85, 877.4, 879.2, 881.0, 882.65, 885.2, 886.75, 888.2, 889.3, 891.5, 893.2, 895.0, 896.85, 898.65, 900.05, 901.7, 903.7, 904.7, 905.75, 906.75, 908.6, 910.7, 911.85, 913.05, 914.6, 916.1, 917.15, 918.15, 919.2, 920.8, 921.7, 922.6, 923.6, 924.7, 925.8, 926.5, 927.45, 928.95, 929.85, 930.75, 931.6, 932.5, 933.55, 934.7, 936.2, 936.95, 937.75, 938.5, 939.45, 940.4, 941.4, 942.05, 942.85, 943.6, 944.55, 945.6, 946.35, 947.45, 948.4, 949.15, 949.65, 950.5, 951.1, 951.6, 952.3, 952.75, 953.65, 954.55, 955.45, 956.3, 956.95, 957.25, 957.85, 958.65, 959.45, 960.2, 960.7, 961.5, 962.1, 962.7, 963.2, 963.85, 964.4, 964.9, 965.05, 965.45, 965.85, 966.2, 966.75, 967.2, 967.7, 968.1, 968.25, 968.5, 969.1, 969.55, 970.25, 970.7, 971.05, 971.4, 971.8, 972.4, 972.8, 972.95, 973.35, 973.8, 974.1, 974.55, 975.05, 975.6, 976.15, 976.45, 977.0, 977.4, 977.85, 978.1, 978.3, 978.7, 979.05, 979.6, 979.95, 980.25, 980.65, 980.9, 981.1, 981.4, 981.45, 981.75, 981.95, 982.1, 982.35, 982.65, 982.8, 983.15, 983.45, 983.65, 983.85, 984.05, 984.45, 984.75, 984.75, 985.15, 985.45, 985.6, 985.75, 986.0, 986.15, 986.4, 986.7, 986.8, 986.85, 987.2, 987.35, 987.45, 987.5, 987.8, 987.9, 987.95, 988.1, 988.25, 988.45, 988.7, 988.9, 989.2, 989.35, 989.35, 989.5, 989.5, 989.7, 989.9, 990.05, 990.35, 990.5, 990.8, 990.95, 991.05, 991.2, 991.45, 991.5, 991.65, 991.7, 991.95, 992.15, 992.35, 992.5, 992.65, 992.95, 993.05, 993.1, 993.25, 993.45, 993.5, 993.55, 993.6, 993.65, 993.75, 993.95, 994.1, 994.2, 994.3, 994.45, 994.45, 994.5, 994.7, 994.75, 994.75, 994.85, 995.0, 995.1, 995.3, 995.45, 995.5, 995.55, 995.6, 995.6, 995.7, 995.7, 995.85, 995.9, 996.0, 996.0, 996.05, 996.1, 996.1, 996.15, 996.15, 996.25, 996.35, 996.35, 996.4, 996.4, 996.5, 996.55, 996.6, 996.65, 996.75, 996.8, 996.85, 996.85, 996.95, 997.0], "type": "scatter"}, {"fill": "tonexty", "fillcolor": "rgba(68, 68, 68, 0.2)", "legendgroup": "[0.0, 0.0, 0.0, 0.0, 0.1, 0.25, 0.25, 0.6, 0.7, 1.0, 1.45, 2.1, 3.7, 5.4, 7.65, 10.7, 14.85, 19.9, 26.65, 33.4, 42.3, 51.8, 61.55, 72.05, 83.1, 93.55, 104.85, 115.65, 128.45, 140.65, 152.95, 165.6, 178.6, 189.8, 201.85, 215.35, 225.5, 237.95, 249.3, 260.15, 271.3, 281.45, 292.15, 302.8, 314.3, 324.7, 334.8, 344.75, 355.1, 364.6, 374.25, 384.1, 393.6, 402.45, 411.3, 420.45, 429.15, 437.15, 446.65, 455.4, 463.4, 471.3, 479.9, 488.35, 496.3, 503.75, 510.55, 518.0, 524.8, 531.45, 538.45, 545.15, 552.55, 558.9, 565.35, 572.7, 580.5, 587.2, 593.05, 598.95, 604.45, 609.7, 615.3, 621.3, 626.95, 631.6, 636.75, 641.25, 646.55, 651.4, 656.1, 661.8, 666.1, 671.3, 676.15, 681.4, 686.1, 691.05, 695.25, 699.6, 704.2, 708.85, 712.85, 716.9, 720.6, 724.6, 728.1, 731.35, 735.35, 739.45, 743.25, 747.3, 750.65, 754.0, 757.15, 761.55, 764.8, 769.35, 772.3, 775.8, 778.85, 782.0, 785.0, 788.5, 791.05, 793.85, 796.65, 799.1, 802.0, 805.0, 807.5, 811.05, 813.6, 816.65, 819.7, 822.1, 824.75, 827.45, 830.25, 832.1, 834.5, 837.55, 839.2, 841.9, 844.25, 846.75, 849.05, 851.25, 853.5, 856.05, 857.5, 859.95, 862.35, 864.25, 866.2, 867.95, 869.4, 871.2, 872.55, 874.35, 875.85, 877.4, 879.2, 881.0, 882.65, 885.2, 886.75, 888.2, 889.3, 891.5, 893.2, 895.0, 896.85, 898.65, 900.05, 901.7, 903.7, 904.7, 905.75, 906.75, 908.6, 910.7, 911.85, 913.05, 914.6, 916.1, 917.15, 918.15, 919.2, 920.8, 921.7, 922.6, 923.6, 924.7, 925.8, 926.5, 927.45, 928.95, 929.85, 930.75, 931.6, 932.5, 933.55, 934.7, 936.2, 936.95, 937.75, 938.5, 939.45, 940.4, 941.4, 942.05, 942.85, 943.6, 944.55, 945.6, 946.35, 947.45, 948.4, 949.15, 949.65, 950.5, 951.1, 951.6, 952.3, 952.75, 953.65, 954.55, 955.45, 956.3, 956.95, 957.25, 957.85, 958.65, 959.45, 960.2, 960.7, 961.5, 962.1, 962.7, 963.2, 963.85, 964.4, 964.9, 965.05, 965.45, 965.85, 966.2, 966.75, 967.2, 967.7, 968.1, 968.25, 968.5, 969.1, 969.55, 970.25, 970.7, 971.05, 971.4, 971.8, 972.4, 972.8, 972.95, 973.35, 973.8, 974.1, 974.55, 975.05, 975.6, 976.15, 976.45, 977.0, 977.4, 977.85, 978.1, 978.3, 978.7, 979.05, 979.6, 979.95, 980.25, 980.65, 980.9, 981.1, 981.4, 981.45, 981.75, 981.95, 982.1, 982.35, 982.65, 982.8, 983.15, 983.45, 983.65, 983.85, 984.05, 984.45, 984.75, 984.75, 985.15, 985.45, 985.6, 985.75, 986.0, 986.15, 986.4, 986.7, 986.8, 986.85, 987.2, 987.35, 987.45, 987.5, 987.8, 987.9, 987.95, 988.1, 988.25, 988.45, 988.7, 988.9, 989.2, 989.35, 989.35, 989.5, 989.5, 989.7, 989.9, 990.05, 990.35, 990.5, 990.8, 990.95, 991.05, 991.2, 991.45, 991.5, 991.65, 991.7, 991.95, 992.15, 992.35, 992.5, 992.65, 992.95, 993.05, 993.1, 993.25, 993.45, 993.5, 993.55, 993.6, 993.65, 993.75, 993.95, 994.1, 994.2, 994.3, 994.45, 994.45, 994.5, 994.7, 994.75, 994.75, 994.85, 995.0, 995.1, 995.3, 995.45, 995.5, 995.55, 995.6, 995.6, 995.7, 995.7, 995.85, 995.9, 996.0, 996.0, 996.05, 996.1, 996.1, 996.15, 996.15, 996.25, 996.35, 996.35, 996.4, 996.4, 996.5, 996.55, 996.6, 996.65, 996.75, 996.8, 996.85, 996.85, 996.95, 997.0]", "line": {"dash": "dot", "width": 1}, "marker": {"color": "#444"}, "mode": "lines", "name": "Recovered Lower Bound", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, -0.20000000000000004, -0.28619026473818043, -0.28619026473818043, -0.19999999999999996, -0.3049875621120888, -0.26491106406735176, -0.561839953873071, -0.32693221990231924, 0.14894381908705911, 0.7804762150195614, 1.4028006274811426, 2.806331651253644, 4.514261032707918, 6.7550389882662625, 10.354985424983504, 14.181779478838315, 18.95240911785543, 24.767427055494696, 31.20453081595211, 37.40685493492254, 45.110659389770916, 54.2149329478136, 62.621721560073034, 72.18130436739563, 84.70588611024334, 96.38457895828844, 107.43354693080752, 119.55393610741521, 130.93198137115408, 141.93289229543947, 154.69358474184025, 168.7031619506745, 178.9623808086404, 190.85172508467002, 201.76464473678567, 212.2780092329554, 223.72258939370494, 234.53148020237637, 245.12205617933097, 256.22146417071485, 268.7795650284403, 280.7203456129996, 291.73539736628237, 304.3100754204462, 314.1245195269171, 324.53205770194836, 334.5701877524603, 345.3174008091258, 355.26150759354255, 364.33245154787625, 373.6661057024389, 383.5725339807627, 392.98195471137535, 400.9418862684066, 412.1517754080011, 421.36413656156196, 429.4538661995213, 438.190937796428, 446.9168224696285, 454.9804405183407, 464.62650950716045, 472.85683732603604, 479.5250503626517, 488.1001672245479, 495.14599521143896, 501.5543899543763, 507.98612795457547, 515.6724237767078, 523.8908391609244, 530.4115813004653, 536.6720032080342, 544.3414034197741, 552.0403794825019, 559.9555510241078, 566.5519340328392, 573.3815135371685, 578.6014507176902, 584.0580421964313, 590.2119550383055, 596.1343488063591, 602.0974850367212, 607.0940823473187, 612.615222188717, 616.4793015843316, 621.9177548729313, 627.5119276625342, 633.0372594863491, 639.2154920354682, 643.7552019476568, 648.0855648356459, 652.8148869726328, 659.5793675618693, 665.3300698123466, 670.5305579997895, 675.2178383592784, 679.8303262545888, 684.6971796911319, 688.8443133084616, 693.3198310299168, 698.2615987810112, 702.537884952199, 706.6461703249697, 709.8931331635562, 713.3492361273195, 718.6698471230028, 723.0747900776815, 727.2035829544412, 730.5844383881366, 734.4596479346494, 737.4833417423499, 740.7815089272102, 745.0622014810951, 748.3817175076075, 753.7318214890469, 756.904870900184, 760.8113376180527, 763.9527687136166, 767.1608625587604, 769.8408443506902, 773.2733785756656, 776.3242572343531, 779.240841913375, 782.3836935403729, 785.5837135277474, 788.2159512479097, 791.5761406443602, 794.2617977051262, 797.9638431921362, 800.5255975279939, 803.9445877674118, 807.4113873850625, 809.4039376183007, 812.1727387718947, 814.8504960415103, 817.4130416375218, 819.8447970233047, 822.2873016904535, 826.256307069873, 827.7256808480852, 830.0008403658073, 832.4776807722523, 834.4867418684919, 836.3911098432761, 838.3741505134612, 840.4481802035118, 842.9447529592151, 844.2655751919473, 847.2595508353724, 849.9030124126358, 851.7885594733193, 853.7557242074921, 855.7989712369694, 857.3692061774793, 859.7126156153805, 861.4618306289992, 862.995375391498, 864.7807859357586, 866.637100762341, 868.394445872608, 870.1050470400281, 872.0704206132758, 874.2109145057472, 875.1876689201529, 876.4756663302344, 877.4336610532143, 879.7377723198367, 881.3105088418386, 883.0375587775738, 885.0124538015685, 887.4639595924206, 888.6373973170008, 890.3991150788976, 893.0037389710236, 893.9710671546515, 894.8831927411958, 895.7233277912146, 898.0292857384186, 900.5161893183348, 901.6555161974723, 903.1380123083208, 904.7288298565976, 906.3896961942481, 907.9669994010671, 909.0875775865389, 910.4216174610582, 911.9309527005432, 913.0796751801339, 913.8056836536317, 915.357427586002, 916.6495341749686, 917.8905120266859, 918.5219049892847, 919.6239217995219, 920.947031800638, 921.7119719833365, 922.8767859167936, 923.8256833097693, 924.5344491715889, 925.9114464720079, 927.3576570496878, 928.8067598442902, 929.701034556573, 930.8952571164193, 931.8931853363364, 932.7233738025665, 933.7939421740344, 935.1518002592746, 935.7375123762497, 936.3440411928756, 936.9788218571013, 938.112026716427, 938.6544978583258, 939.1578167431579, 940.2494791855033, 941.1171434175867, 941.9300623271388, 942.5487677125727, 943.7287371931079, 944.4149420346567, 945.1393498779148, 945.787703937934, 946.355666571096, 947.5979342369733, 948.4962821340931, 949.8155080087022, 950.9886913100441, 951.9552527591479, 952.4139375520988, 952.9075815636472, 953.9460123299481, 954.8296645143454, 955.8687184344585, 956.4093124094151, 957.4441400418654, 958.5376973738887, 959.1772170092383, 959.8444076528875, 960.5594833232454, 961.0473890771519, 961.7711024305676, 961.8332469787066, 962.360097088904, 962.6676266718061, 963.1569751890595, 963.8195563475815, 964.3609860866844, 965.0148556835805, 965.5721550680471, 965.8442776552561, 966.1020842383437, 966.4185824644417, 966.8209891902009, 967.5690486763091, 967.8521938268204, 968.2131884094991, 968.5120941843612, 968.7405882918442, 969.1999999999999, 969.7900166113415, 969.992382715766, 970.1053890834185, 970.5813046121137, 970.9711024305676, 971.4279013468501, 972.0587627977708, 972.8359450077829, 973.4246559850177, 973.8141889293806, 974.3923190379189, 974.8426576294911, 975.0522330332925, 975.1691298220494, 975.1519847522605, 975.5519847522606, 976.0255165730326, 976.6100167224548, 976.9587627977709, 977.3195563475815, 977.6957657506555, 977.9691298220494, 978.3450045372089, 978.7467001677156, 978.7765191229411, 979.1639798918028, 979.2393727663141, 979.2733411949795, 979.4469843266011, 979.6788890966509, 979.9609860866843, 980.2816380981473, 980.5956174047616, 980.7298116499102, 980.9816380981473, 981.1956174047615, 981.7027286264369, 981.8195563475815, 981.8195563475815, 982.2298116499102, 982.5093368094936, 982.6948321907332, 983.0136703414976, 983.1715728752538, 983.3882071040716, 983.7279221568225, 984.188028662584, 984.4, 984.4359784590854, 984.6, 984.7370514739092, 984.7952872095084, 984.9019237886466, 985.2387503050268, 985.372155068047, 985.4505000500101, 985.7783626467512, 985.7625314072335, 986.0112503203486, 986.4394690889086, 986.8047673160243, 987.0645843495938, 987.2697355937286, 987.2697355937286, 987.4384471871912, 987.4384471871912, 987.69750156055, 987.8047673160243, 987.8482961143695, 988.1988375235701, 988.2751404538712, 988.4420347754897, 988.703335806134, 988.8941938862689, 989.160392194563, 989.647917870906, 989.7535750803427, 989.9390061367731, 989.9083527132832, 990.2625462969314, 990.3815260816173, 990.5258563653045, 990.5635083268963, 990.7193265423692, 991.0665191798163, 991.1401570745215, 991.1276917076684, 991.4368535635531, 991.5401570745216, 991.4875388202502, 991.5381600461269, 991.6404082057735, 991.6936002453486, 991.6793720759151, 991.9631683513695, 992.1790627287702, 992.3132037735887, 992.4265006004804, 992.438160046127, 992.438160046127, 992.4875388202502, 992.69750156055, 992.8038499543972, 992.8038499543972, 992.8936002453487, 993.0251582341868, 993.1790627287702, 993.4265006004804, 993.6203825536469, 993.697224362268, 993.7479178709059, 993.8279954853331, 993.8279954853331, 993.9364807911452, 993.9364807911452, 994.2601886904415, 994.229670691151, 994.2111456180002, 994.2111456180002, 994.2203825536468, 994.2861642852783, 994.2861642852783, 994.3258563653045, 994.3258563653045, 994.4928716609195, 994.6100287358695, 994.6100287358695, 994.627995485333, 994.627995485333, 994.8118056983866, 994.8331715286611, 994.8853571800518, 994.96848282792, 995.1414292057855, 995.1386752274163, 995.1100287358695, 995.1100287358695, 995.2042909749904, 995.2970613634074], "type": "scatter"}, {"legendgroup": "[999.0, 998.3, 997.8, 996.75, 994.45, 992.05, 989.3, 983.95, 976.8, 965.05, 949.05, 926.65, 897.4, 858.5, 807.55, 749.8, 682.2, 608.7, 533.15, 461.4, 394.25, 327.7, 269.05, 220.2, 176.7, 138.55, 108.95, 82.7, 62.75, 46.05, 34.15, 24.55, 17.65, 12.65, 9.45, 6.05, 4.2, 3.0, 2.2, 1.4, 1.05, 0.85, 0.6, 0.45, 0.4, 0.35, 0.2, 0.2, 0.15, 0.15, 0.15, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]", "line": {"dash": "dot", "width": 1}, "marker": {"color": "#444"}, "mode": "lines", "name": "Susceptible Upper Bound", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.1426149773176, 999.4613247725836, 999.257488783624, 998.3675885439899, 998.4957350240294, 998.0641314458421, 997.3046808273355, 995.7884175222687, 993.388092737515, 988.3634518962657, 982.7715422097433, 975.0649212965544, 962.3400211864385, 941.7772233937661, 912.953486018534, 877.158098062122, 827.6527574615127, 772.72593263932, 711.7841848040727, 650.9996592013317, 582.3503681520999, 513.5409967667522, 447.922111355046, 384.12832497033764, 318.74918839994814, 263.4409301544916, 211.19517500669048, 166.67010152035073, 125.56004653501341, 96.06790936393121, 69.80314906169512, 49.44665862948495, 36.300105708009, 27.22209891937359, 18.920411803823526, 13.6424573072903, 10.224956747275378, 7.155804677345547, 5.291015291668744, 4.328337993557101, 3.2846457647879697, 2.1620499351813307, 1.61081867662439, 1.3695359714832658, 1.142148975887743, 0.7099019513592786, 0.7099019513592786, 0.6269696007084729, 0.6269696007084729, 0.6269696007084729, 0.5358898943540671, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"fill": "tonexty", "fillcolor": "rgba(68, 68, 68, 0.2)", "legendgroup": "[999.0, 998.3, 997.8, 996.75, 994.45, 992.05, 989.3, 983.95, 976.8, 965.05, 949.05, 926.65, 897.4, 858.5, 807.55, 749.8, 682.2, 608.7, 533.15, 461.4, 394.25, 327.7, 269.05, 220.2, 176.7, 138.55, 108.95, 82.7, 62.75, 46.05, 34.15, 24.55, 17.65, 12.65, 9.45, 6.05, 4.2, 3.0, 2.2, 1.4, 1.05, 0.85, 0.6, 0.45, 0.4, 0.35, 0.2, 0.2, 0.15, 0.15, 0.15, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]", "name": "Susceptible", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 998.3, 997.8, 996.75, 994.45, 992.05, 989.3, 983.95, 976.8, 965.05, 949.05, 926.65, 897.4, 858.5, 807.55, 749.8, 682.2, 608.7, 533.15, 461.4, 394.25, 327.7, 269.05, 220.2, 176.7, 138.55, 108.95, 82.7, 62.75, 46.05, 34.15, 24.55, 17.65, 12.65, 9.45, 6.05, 4.2, 3.0, 2.2, 1.4, 1.05, 0.85, 0.6, 0.45, 0.4, 0.35, 0.2, 0.2, 0.15, 0.15, 0.15, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"fill": "tonexty", "fillcolor": "rgba(68, 68, 68, 0.2)", "legendgroup": "[999.0, 998.3, 997.8, 996.75, 994.45, 992.05, 989.3, 983.95, 976.8, 965.05, 949.05, 926.65, 897.4, 858.5, 807.55, 749.8, 682.2, 608.7, 533.15, 461.4, 394.25, 327.7, 269.05, 220.2, 176.7, 138.55, 108.95, 82.7, 62.75, 46.05, 34.15, 24.55, 17.65, 12.65, 9.45, 6.05, 4.2, 3.0, 2.2, 1.4, 1.05, 0.85, 0.6, 0.45, 0.4, 0.35, 0.2, 0.2, 0.15, 0.15, 0.15, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]", "line": {"dash": "dot", "width": 1}, "marker": {"color": "#444"}, "mode": "lines", "name": "Susceptible Lower Bound", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 997.4573850226823, 996.1386752274163, 994.242511216376, 990.5324114560102, 985.6042649759705, 980.5358685541578, 970.5953191726646, 957.8115824777312, 936.7119072624849, 909.7365481037342, 870.5284577902567, 819.7350787034455, 754.6599788135615, 673.3227766062338, 586.6465139814659, 487.241901937878, 389.7472425384874, 293.5740673606799, 211.0158151959273, 137.50034079866828, 73.04963184790012, 24.559003233247864, -7.522111355046064, -30.72832497033764, -41.649188399948144, -45.54093015449159, -45.79517500669046, -41.17010152035073, -33.46004653501342, -27.76790936393121, -20.703149061695125, -14.146658629484953, -11.000105708008997, -8.322098919373591, -6.820411803823528, -5.242457307290301, -4.224956747275377, -2.7558046773455462, -2.4910152916687442, -2.2283379935571004, -1.5846457647879695, -0.9620499351813306, -0.71081867662439, -0.5695359714832658, -0.44214897588774305, -0.3099019513592785, -0.3099019513592785, -0.3269696007084728, -0.3269696007084728, -0.3269696007084728, -0.33588989435406713, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}], "layout": {"legend": {"traceorder": "normal"}, "showlegend": true, "title": {"text": "Standard Deviation Range"}, "xaxis": {"title": {"text": "Time "}}, "yaxis": {"title": {"text": "Species Population"}}}, "config": {"responsive": true}}, "stddev": {"data": [{"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.8426149773176359, 1.6613247725836147, 2.5074887836239665, 3.734635189680513, 6.229767250869008, 8.546783020528835, 12.862639697978016, 18.361644806498138, 27.543556415248926, 37.88733297554738, 54.36347579027669, 74.86848469149085, 99.89539528927246, 128.8765300588125, 156.01009582716114, 185.23889305434753, 206.70157232106388, 224.26404080904277, 232.35051108185667, 234.93966778728534, 229.9346646332388, 216.81060859653525, 197.14280991200263, 174.6606996436233, 147.25145160574817, 120.36511122414169, 94.80309857805281, 72.68672506035747, 50.71597381496288, 37.95247027533254, 30.090322364507827, 29.877876430563134, 32.87928679275145, 35.099999999999994, 38.690308864107045, 40.558722859577315, 43.09231369977713, 44.44603469377218, 45.80772314795836, 45.77256274232413, 45.46218208577323, 46.00529860787777, 45.792876083513256, 44.8476309296266, 43.38948605365129, 42.694261909535335, 40.07053156622707, 40.702426217610174, 39.803109175038074, 39.422582360875346, 38.62201444772139, 38.338492406457505, 38.11754845212373, 37.63389429756108, 36.877466019237275, 36.168045288624604, 36.208113731593365, 34.498224591998934, 34.03586343843799, 33.94613380047866, 33.109062203571995, 32.98317753037145, 33.36955948165933, 31.673490492839587, 30.89316267396396, 31.024949637348325, 29.899832775452108, 29.65400478856102, 29.895610045623755, 30.463872045424562, 29.477576223292168, 28.659160839075525, 28.48841869953473, 28.67799679196579, 28.358596580225896, 28.45962051749812, 27.24444897589232, 26.4980659671607, 25.568486462831547, 25.84854928230983, 25.641957803568747, 25.088044961694408, 25.165651193640908, 24.852514963278864, 24.50591765268136, 24.134777811283037, 24.77069841566846, 24.632245127068703, 23.88807233746583, 23.06274051365102, 22.584507964531795, 22.34479805234319, 23.214435164354096, 23.33511302736715, 21.82063243813066, 20.769930187653497, 20.519442000210432, 20.032161640721654, 19.76967374541118, 19.502820308868152, 20.005686691538486, 19.53016897008318, 18.63840121898872, 18.062115047801015, 17.953829675030338, 18.206866836443883, 18.000763872680515, 16.680152876997262, 16.375209922318554, 16.0464170455588, 16.715561611863357, 16.190352065350524, 16.516658257650064, 16.36849107278982, 16.48779851890482, 16.41828249239244, 15.618178510953188, 15.395129099815954, 14.988662381947229, 14.897231286383388, 14.839137441239636, 15.15915564930976, 15.226621424334422, 14.725742765646832, 14.609158086624978, 14.266306459627174, 13.51628647225265, 13.784048752090222, 13.423859355639868, 13.238202294873727, 13.086156807863796, 13.07440247200613, 12.705412232588126, 12.288612614937456, 12.696062381699296, 12.577261228105266, 12.599503958489795, 12.836958362478239, 12.255202976695244, 12.212698309546504, 11.293692930126976, 11.474319151914855, 11.899159634192662, 11.772319227747776, 12.263258131508119, 12.658890156723851, 12.875849486538742, 13.05181979648815, 13.105247040784848, 13.234424808052673, 12.690449164627704, 12.44698758736426, 12.461440526680693, 12.444275792507977, 12.151028763030725, 12.030793822520607, 11.487384384619503, 11.088169371000786, 11.354624608502036, 11.069214064241418, 10.762899237658969, 10.80555412739208, 10.894952959971878, 10.579579386724218, 10.989085494252922, 11.562331079847178, 11.72433366976563, 11.866338946785568, 11.762227680163312, 11.889491158161478, 11.962441222426131, 11.837546198431497, 11.18604040757944, 11.412602682999177, 11.300884921102417, 10.696261028976433, 10.728932845348599, 10.866807258804217, 11.026672208785387, 10.57071426158138, 10.183810681665287, 10.194483802527719, 9.911987691679201, 9.871170143402454, 9.71030380575191, 9.183000598932791, 9.062422413460984, 8.778382538941898, 8.86904729945669, 8.620324819866129, 8.79431634636826, 8.242572413997951, 8.050465825031493, 7.909487973314076, 7.978095010715277, 7.826078200478194, 8.002968199362034, 8.138028016663496, 7.873214083206426, 7.774316690230724, 7.965550828411052, 7.638553527992063, 7.34234295031225, 7.393240155709809, 7.248965443427083, 6.854742883580681, 6.606814663663572, 6.726626197433599, 6.606057825965498, 6.248199740725324, 6.312487623750244, 6.5059588071244345, 6.621178142898739, 6.437973283573022, 6.945502141674136, 7.192183256842111, 7.200520814496685, 7.28285658241325, 7.219937672861173, 7.101232287427302, 6.7712628068920795, 6.685057965343307, 6.460650122085238, 6.512296062065975, 6.394333428904064, 6.052065763026705, 6.053717865906867, 5.634491991297884, 5.3113086899558, 4.994747240852134, 4.836062447901185, 4.942418436352795, 4.703987670051868, 4.620335485654695, 4.331281565541543, 4.290687590584986, 4.05585995813465, 3.562302626111375, 3.5227829907617076, 3.3555923471125024, 3.290516676754579, 3.3526109228480423, 3.128897569432403, 3.216753021293366, 3.089902911096076, 3.1823733281939126, 3.043024810940587, 2.930443652418521, 2.8390139133156778, 2.6851443164195112, 2.527844931952908, 2.405722344743882, 2.3979157616563596, 2.681417535558385, 2.7290108097990378, 2.680951323690902, 2.8478061731796283, 2.836811590500857, 2.8879058156387303, 3.0594117081556713, 3.2, 3.009983388658483, 2.9576172842340505, 3.2446109165815242, 3.218695387886217, 3.1288975694324037, 3.1220986531498327, 2.991237202229205, 2.7640549922170505, 2.7253440149823285, 2.63581107061944, 2.6076809620810595, 2.5573423705088842, 2.7977669667075564, 2.930870177950569, 3.1480152477394387, 3.1480152477394387, 3.024483426967323, 2.9899832775452104, 2.991237202229205, 2.930443652418521, 2.95423424934449, 2.9308701779505695, 2.7549954627911823, 2.6532998322843198, 2.6734808770589704, 2.5860201081971503, 2.71062723368596, 2.8266588050205144, 2.9030156733989574, 2.971110903349116, 2.839013913315678, 2.868361901852693, 2.854382595238417, 2.920188350089768, 2.8683619018526936, 2.854382595238417, 2.7472713735632306, 2.930443652418521, 2.930443652418521, 2.9201883500897683, 2.940663190506523, 2.90516780926679, 2.7363296585024255, 2.8284271247461903, 2.7617928959282954, 2.6720778431774774, 2.511971337416094, 2.4, 2.4140215409146624, 2.6, 2.6129485260907837, 2.654712790491657, 2.598076211353316, 2.5612496949731396, 2.5278449319529073, 2.4994999499899975, 2.32163735324878, 2.48746859276655, 2.4387496796514396, 2.2605309110914633, 2.0952326839756963, 2.1354156504062622, 2.080264406271472, 2.080264406271472, 2.0615528128088303, 2.0615528128088303, 2.002498439450079, 2.0952326839756963, 2.2017038856303994, 2.1511624764298953, 2.224859546128699, 2.3579652245103193, 2.2466641938660974, 2.15580611373101, 2.0396078054371136, 1.8020821290940103, 1.746424919657298, 1.7109938632268678, 1.7916472867168922, 1.6874537030686203, 1.7684739183827396, 1.82414363469547, 1.9364916731037085, 1.9306734576307827, 1.8834808201837363, 1.909842925478428, 1.972308292331602, 1.8131464364468746, 1.909842925478428, 2.0124611797498106, 2.011839953873071, 1.9595917942265426, 1.9563997546513854, 2.0706279240848655, 1.9868316486305526, 1.9209372712298545, 1.8867962264113207, 1.8734993995195197, 2.0118399538730714, 2.0118399538730714, 2.0124611797498106, 2.0024984394500787, 1.9461500456028564, 1.9461500456028564, 1.9563997546513854, 1.9748417658131499, 1.9209372712298547, 1.8734993995195195, 1.829617446353199, 1.8027756377319946, 1.8020821290940103, 1.772004514666935, 1.772004514666935, 1.76351920885484, 1.76351920885484, 1.5898113095584645, 1.6703293088490065, 1.7888543819998317, 1.7888543819998317, 1.8296174463531987, 1.8138357147217055, 1.8138357147217055, 1.8241436346954698, 1.8241436346954698, 1.7571283390805579, 1.7399712641305316, 1.7399712641305316, 1.772004514666935, 1.772004514666935, 1.6881943016134133, 1.7168284713389395, 1.7146428199482244, 1.6815171720800237, 1.6085707942145413, 1.661324772583615, 1.7399712641305316, 1.7399712641305316, 1.7457090250096092, 1.70293863659264], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.30000000000000004, 0.5361902647381804, 0.5361902647381804, 0.7999999999999999, 1.0049875621120887, 1.2649110640673518, 2.011839953873071, 2.4269322199023193, 3.551056180912941, 4.619523784980439, 6.247199372518858, 7.893668348746355, 10.335738967292082, 13.144961011733736, 16.295014575016495, 19.218220521161683, 23.347590882144566, 27.0325729445053, 30.345469184047886, 34.643145065077455, 37.98934061022908, 39.335067052186396, 42.22827843992696, 43.46869563260439, 43.74411388975664, 44.265421041711555, 45.516453069192465, 46.046063892584776, 47.66801862884591, 47.867107704560546, 47.15641525815973, 46.64683804932548, 46.53761919135959, 47.098274915329974, 47.53535526321434, 47.871990767044565, 47.57741060629508, 46.91851979762363, 47.027943820669, 46.578535829285144, 45.520434971559744, 43.979654387000366, 43.064602633717634, 40.439924579553804, 40.97548047308292, 40.06794229805169, 39.67981224753968, 38.78259919087425, 38.338492406457505, 38.11754845212373, 37.63389429756108, 36.877466019237275, 36.168045288624604, 36.208113731593365, 34.498224591998934, 34.03586343843799, 33.94613380047866, 33.109062203571995, 32.98317753037145, 33.36955948165933, 31.673490492839587, 30.89316267396396, 31.024949637348325, 29.899832775452108, 29.65400478856102, 29.895610045623755, 30.463872045424562, 29.477576223292168, 28.659160839075525, 28.48841869953473, 28.67799679196579, 28.3585965802259, 28.45962051749812, 27.24444897589232, 26.4980659671607, 25.568486462831544, 25.84854928230983, 25.641957803568744, 25.088044961694404, 25.165651193640908, 24.852514963278864, 24.50591765268136, 24.134777811283037, 24.77069841566846, 24.632245127068707, 23.88807233746583, 23.06274051365102, 22.584507964531795, 22.34479805234319, 23.214435164354096, 23.33511302736715, 21.82063243813066, 20.769930187653497, 20.519442000210436, 20.032161640721654, 19.76967374541118, 19.50282030886815, 20.005686691538486, 19.53016897008318, 18.63840121898872, 18.062115047801015, 17.953829675030338, 18.206866836443883, 18.000763872680515, 16.680152876997262, 16.37520992231855, 16.0464170455588, 16.71556161186336, 16.190352065350524, 16.516658257650064, 16.36849107278982, 16.48779851890482, 16.418282492392436, 15.618178510953191, 15.395129099815959, 14.988662381947227, 14.897231286383384, 14.839137441239636, 15.15915564930976, 15.226621424334422, 14.725742765646833, 14.609158086624978, 14.266306459627174, 13.516286472252652, 13.784048752090222, 13.423859355639868, 13.238202294873727, 13.086156807863798, 13.074402472006131, 12.705412232588126, 12.288612614937456, 12.696062381699297, 12.577261228105266, 12.599503958489793, 12.836958362478239, 12.255202976695244, 12.212698309546504, 11.293692930126973, 11.474319151914852, 11.899159634192662, 11.772319227747776, 12.263258131508119, 12.658890156723851, 12.875849486538742, 13.05181979648815, 13.105247040784848, 13.234424808052673, 12.690449164627706, 12.44698758736426, 12.461440526680693, 12.444275792507973, 12.151028763030727, 12.030793822520607, 11.487384384619503, 11.088169371000786, 11.354624608502034, 11.069214064241418, 10.762899237658969, 10.805554127392078, 10.894952959971878, 10.579579386724218, 10.98908549425292, 11.562331079847178, 11.72433366976563, 11.866338946785568, 11.762227680163312, 11.889491158161478, 11.962441222426131, 11.837546198431497, 11.186040407579439, 11.412602682999177, 11.300884921102417, 10.696261028976432, 10.728932845348599, 10.866807258804217, 11.026672208785387, 10.570714261581383, 10.183810681665285, 10.19448380252772, 9.911987691679204, 9.871170143402454, 9.710303805751908, 9.183000598932791, 9.062422413460984, 8.778382538941896, 8.869047299456687, 8.620324819866127, 8.79431634636826, 8.24257241399795, 8.050465825031491, 7.909487973314074, 7.978095010715277, 7.826078200478194, 8.002968199362035, 8.138028016663498, 7.873214083206426, 7.774316690230725, 7.965550828411052, 7.638553527992063, 7.342342950312249, 7.393240155709808, 7.248965443427084, 6.854742883580681, 6.606814663663572, 6.726626197433599, 6.606057825965498, 6.2481997407253225, 6.312487623750244, 6.505958807124435, 6.621178142898739, 6.437973283573021, 6.945502141674135, 7.192183256842112, 7.200520814496684, 7.28285658241325, 7.219937672861174, 7.101232287427304, 6.7712628068920795, 6.685057965343306, 6.460650122085237, 6.512296062065973, 6.394333428904064, 6.052065763026705, 6.053717865906866, 5.6344919912978835, 5.3113086899557995, 4.994747240852133, 4.836062447901185, 4.942418436352793, 4.703987670051867, 4.620335485654695, 4.331281565541543, 4.290687590584987, 4.05585995813465, 3.562302626111374, 3.5227829907617076, 3.3555923471125038, 3.290516676754578, 3.3526109228480405, 3.1288975694324024, 3.2167530212933664, 3.089902911096076, 3.1823733281939117, 3.043024810940588, 2.930443652418521, 2.839013913315678, 2.685144316419511, 2.5278449319529077, 2.405722344743882, 2.3979157616563596, 2.6814175355583845, 2.7290108097990378, 2.680951323690902, 2.8478061731796287, 2.836811590500857, 2.8879058156387303, 3.0594117081556713, 3.1999999999999997, 3.0099833886584824, 2.9576172842340505, 3.244610916581524, 3.2186953878862163, 3.128897569432403, 3.1220986531498327, 2.991237202229205, 2.764054992217051, 2.725344014982329, 2.6358110706194404, 2.6076809620810595, 2.5573423705088847, 2.797766966707556, 2.9308701779505686, 3.1480152477394387, 3.1480152477394387, 3.024483426967323, 2.9899832775452104, 2.991237202229205, 2.930443652418521, 2.954234249344489, 2.9308701779505686, 2.7549954627911823, 2.65329983228432, 2.6734808770589704, 2.5860201081971503, 2.71062723368596, 2.8266588050205135, 2.903015673398957, 2.9711109033491154, 2.839013913315678, 2.8683619018526927, 2.854382595238417, 2.9201883500897674, 2.8683619018526927, 2.854382595238417, 2.747271373563231, 2.930443652418521, 2.930443652418521, 2.9201883500897674, 2.940663190506523, 2.9051678092667896, 2.7363296585024255, 2.8284271247461903, 2.761792895928295, 2.6720778431774774, 2.511971337416094, 2.4000000000000004, 2.4140215409146624, 2.6, 2.612948526090784, 2.654712790491657, 2.598076211353316, 2.5612496949731396, 2.5278449319529077, 2.499499949989998, 2.32163735324878, 2.48746859276655, 2.43874967965144, 2.2605309110914633, 2.0952326839756963, 2.1354156504062627, 2.080264406271472, 2.080264406271472, 2.0615528128088303, 2.0615528128088303, 2.0024984394500787, 2.0952326839756963, 2.2017038856304, 2.1511624764298953, 2.224859546128699, 2.3579652245103193, 2.2466641938660974, 2.1558061137310105, 2.0396078054371145, 1.8020821290940103, 1.746424919657298, 1.7109938632268673, 1.7916472867168922, 1.6874537030686207, 1.7684739183827396, 1.8241436346954698, 1.9364916731037085, 1.9306734576307825, 1.8834808201837367, 1.9098429254784282, 1.9723082923316022, 1.8131464364468746, 1.9098429254784284, 2.0124611797498106, 2.0118399538730714, 1.9595917942265426, 1.9563997546513854, 2.0706279240848655, 1.986831648630553, 1.9209372712298547, 1.8867962264113212, 1.87349939951952, 2.0118399538730714, 2.0118399538730714, 2.0124611797498106, 2.002498439450079, 1.9461500456028564, 1.9461500456028564, 1.9563997546513854, 1.9748417658131499, 1.9209372712298547, 1.87349939951952, 1.829617446353199, 1.8027756377319946, 1.8020821290940103, 1.7720045146669352, 1.7720045146669352, 1.76351920885484, 1.76351920885484, 1.5898113095584647, 1.6703293088490068, 1.7888543819998317, 1.7888543819998317, 1.829617446353199, 1.8138357147217055, 1.8138357147217055, 1.82414363469547, 1.82414363469547, 1.7571283390805579, 1.7399712641305316, 1.7399712641305316, 1.7720045146669352, 1.7720045146669352, 1.6881943016134133, 1.7168284713389397, 1.7146428199482249, 1.6815171720800237, 1.6085707942145413, 1.6613247725836153, 1.7399712641305318, 1.7399712641305318, 1.7457090250096094, 1.70293863659264], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.842614977317636, 1.6613247725836158, 2.5074887836239665, 3.9175885439897846, 6.445735024029451, 8.764131445842192, 13.354680827335413, 18.988417522268676, 28.33809273751499, 39.31345189626573, 56.1215422097433, 77.66492129655447, 103.84002118643852, 134.22722339376614, 163.1534860185341, 194.95809806212202, 218.95275746151268, 239.57593263932003, 250.38418480407267, 256.7496592013317, 254.65036815209987, 244.49099676675215, 227.72211135504605, 207.42832497033763, 180.19918839994816, 154.4909301544916, 128.49517500669046, 103.92010152035073, 79.51004653501342, 61.91790936393121, 45.253149061695126, 31.796658629484952, 23.650105708008997, 17.77209891937359, 12.870411803823528, 9.4424573072903, 7.224956747275377, 4.955804677345546, 3.891015291668744, 3.2783379935571006, 2.4346457647879696, 1.5620499351813306, 1.16081867662439, 0.9695359714832659, 0.792148975887743, 0.5099019513592785, 0.5099019513592785, 0.47696960070847283, 0.47696960070847283, 0.47696960070847283, 0.4358898943540671, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}], "layout": {"showlegend": true, "title": {"text": ""}, "xaxis": {"title": {"text": "Time "}}, "yaxis": {"title": {"text": "Species Population"}}}, "config": {"responsive": true}}, "avg": {"data": [{"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.7, 2.2, 3.25, 5.45, 7.7, 10.45, 15.45, 22.5, 33.95, 49.5, 71.25, 98.9, 136.1, 184.8, 239.5, 302.95, 371.4, 440.2, 505.2, 563.45, 620.5, 669.4, 707.75, 740.2, 767.9, 786.2, 801.65, 808.8, 813.3, 812.9, 809.85, 803.75, 797.55, 788.7, 778.6, 770.3, 759.05, 748.5, 738.45, 727.65, 717.7, 707.25, 696.75, 685.3, 674.95, 665.0, 655.05, 644.75, 635.25, 625.6, 615.8, 606.4, 597.55, 588.7, 579.55, 570.85, 562.85, 553.35, 544.6, 536.6, 528.7, 520.1, 511.65, 503.7, 496.25, 489.45, 482.0, 475.2, 468.55, 461.55, 454.85, 447.45, 441.1, 434.65, 427.3, 419.5, 412.8, 406.95, 401.05, 395.55, 390.3, 384.7, 378.7, 373.05, 368.4, 363.25, 358.75, 353.45, 348.6, 343.9, 338.2, 333.9, 328.7, 323.85, 318.6, 313.9, 308.95, 304.75, 300.4, 295.8, 291.15, 287.15, 283.1, 279.4, 275.4, 271.9, 268.65, 264.65, 260.55, 256.75, 252.7, 249.35, 246.0, 242.85, 238.45, 235.2, 230.65, 227.7, 224.2, 221.15, 218.0, 215.0, 211.5, 208.95, 206.15, 203.35, 200.9, 198.0, 195.0, 192.5, 188.95, 186.4, 183.35, 180.3, 177.9, 175.25, 172.55, 169.75, 167.9, 165.5, 162.45, 160.8, 158.1, 155.75, 153.25, 150.95, 148.75, 146.5, 143.95, 142.5, 140.05, 137.65, 135.75, 133.8, 132.05, 130.6, 128.8, 127.45, 125.65, 124.15, 122.6, 120.8, 119.0, 117.35, 114.8, 113.25, 111.8, 110.7, 108.5, 106.8, 105.0, 103.15, 101.35, 99.95, 98.3, 96.3, 95.3, 94.25, 93.25, 91.4, 89.3, 88.15, 86.95, 85.4, 83.9, 82.85, 81.85, 80.8, 79.2, 78.3, 77.4, 76.4, 75.3, 74.2, 73.5, 72.55, 71.05, 70.15, 69.25, 68.4, 67.5, 66.45, 65.3, 63.8, 63.05, 62.25, 61.5, 60.55, 59.6, 58.6, 57.95, 57.15, 56.4, 55.45, 54.4, 53.65, 52.55, 51.6, 50.85, 50.35, 49.5, 48.9, 48.4, 47.7, 47.25, 46.35, 45.45, 44.55, 43.7, 43.05, 42.75, 42.15, 41.35, 40.55, 39.8, 39.3, 38.5, 37.9, 37.3, 36.8, 36.15, 35.6, 35.1, 34.95, 34.55, 34.15, 33.8, 33.25, 32.8, 32.3, 31.9, 31.75, 31.5, 30.9, 30.45, 29.75, 29.3, 28.95, 28.6, 28.2, 27.6, 27.2, 27.05, 26.65, 26.2, 25.9, 25.45, 24.95, 24.4, 23.85, 23.55, 23.0, 22.6, 22.15, 21.9, 21.7, 21.3, 20.95, 20.4, 20.05, 19.75, 19.35, 19.1, 18.9, 18.6, 18.55, 18.25, 18.05, 17.9, 17.65, 17.35, 17.2, 16.85, 16.55, 16.35, 16.15, 15.95, 15.55, 15.25, 15.25, 14.85, 14.55, 14.4, 14.25, 14.0, 13.85, 13.6, 13.3, 13.2, 13.15, 12.8, 12.65, 12.55, 12.5, 12.2, 12.1, 12.05, 11.9, 11.75, 11.55, 11.3, 11.1, 10.8, 10.65, 10.65, 10.5, 10.5, 10.3, 10.1, 9.95, 9.65, 9.5, 9.2, 9.05, 8.95, 8.8, 8.55, 8.5, 8.35, 8.3, 8.05, 7.85, 7.65, 7.5, 7.35, 7.05, 6.95, 6.9, 6.75, 6.55, 6.5, 6.45, 6.4, 6.35, 6.25, 6.05, 5.9, 5.8, 5.7, 5.55, 5.55, 5.5, 5.3, 5.25, 5.25, 5.15, 5.0, 4.9, 4.7, 4.55, 4.5, 4.45, 4.4, 4.4, 4.3, 4.3, 4.15, 4.1, 4.0, 4.0, 3.95, 3.9, 3.9, 3.85, 3.85, 3.75, 3.65, 3.65, 3.6, 3.6, 3.5, 3.45, 3.4, 3.35, 3.25, 3.2, 3.15, 3.15, 3.05, 3.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.1, 0.25, 0.25, 0.6, 0.7, 1.0, 1.45, 2.1, 3.7, 5.4, 7.65, 10.7, 14.85, 19.9, 26.65, 33.4, 42.3, 51.8, 61.55, 72.05, 83.1, 93.55, 104.85, 115.65, 128.45, 140.65, 152.95, 165.6, 178.6, 189.8, 201.85, 215.35, 225.5, 237.95, 249.3, 260.15, 271.3, 281.45, 292.15, 302.8, 314.3, 324.7, 334.8, 344.75, 355.1, 364.6, 374.25, 384.1, 393.6, 402.45, 411.3, 420.45, 429.15, 437.15, 446.65, 455.4, 463.4, 471.3, 479.9, 488.35, 496.3, 503.75, 510.55, 518.0, 524.8, 531.45, 538.45, 545.15, 552.55, 558.9, 565.35, 572.7, 580.5, 587.2, 593.05, 598.95, 604.45, 609.7, 615.3, 621.3, 626.95, 631.6, 636.75, 641.25, 646.55, 651.4, 656.1, 661.8, 666.1, 671.3, 676.15, 681.4, 686.1, 691.05, 695.25, 699.6, 704.2, 708.85, 712.85, 716.9, 720.6, 724.6, 728.1, 731.35, 735.35, 739.45, 743.25, 747.3, 750.65, 754.0, 757.15, 761.55, 764.8, 769.35, 772.3, 775.8, 778.85, 782.0, 785.0, 788.5, 791.05, 793.85, 796.65, 799.1, 802.0, 805.0, 807.5, 811.05, 813.6, 816.65, 819.7, 822.1, 824.75, 827.45, 830.25, 832.1, 834.5, 837.55, 839.2, 841.9, 844.25, 846.75, 849.05, 851.25, 853.5, 856.05, 857.5, 859.95, 862.35, 864.25, 866.2, 867.95, 869.4, 871.2, 872.55, 874.35, 875.85, 877.4, 879.2, 881.0, 882.65, 885.2, 886.75, 888.2, 889.3, 891.5, 893.2, 895.0, 896.85, 898.65, 900.05, 901.7, 903.7, 904.7, 905.75, 906.75, 908.6, 910.7, 911.85, 913.05, 914.6, 916.1, 917.15, 918.15, 919.2, 920.8, 921.7, 922.6, 923.6, 924.7, 925.8, 926.5, 927.45, 928.95, 929.85, 930.75, 931.6, 932.5, 933.55, 934.7, 936.2, 936.95, 937.75, 938.5, 939.45, 940.4, 941.4, 942.05, 942.85, 943.6, 944.55, 945.6, 946.35, 947.45, 948.4, 949.15, 949.65, 950.5, 951.1, 951.6, 952.3, 952.75, 953.65, 954.55, 955.45, 956.3, 956.95, 957.25, 957.85, 958.65, 959.45, 960.2, 960.7, 961.5, 962.1, 962.7, 963.2, 963.85, 964.4, 964.9, 965.05, 965.45, 965.85, 966.2, 966.75, 967.2, 967.7, 968.1, 968.25, 968.5, 969.1, 969.55, 970.25, 970.7, 971.05, 971.4, 971.8, 972.4, 972.8, 972.95, 973.35, 973.8, 974.1, 974.55, 975.05, 975.6, 976.15, 976.45, 977.0, 977.4, 977.85, 978.1, 978.3, 978.7, 979.05, 979.6, 979.95, 980.25, 980.65, 980.9, 981.1, 981.4, 981.45, 981.75, 981.95, 982.1, 982.35, 982.65, 982.8, 983.15, 983.45, 983.65, 983.85, 984.05, 984.45, 984.75, 984.75, 985.15, 985.45, 985.6, 985.75, 986.0, 986.15, 986.4, 986.7, 986.8, 986.85, 987.2, 987.35, 987.45, 987.5, 987.8, 987.9, 987.95, 988.1, 988.25, 988.45, 988.7, 988.9, 989.2, 989.35, 989.35, 989.5, 989.5, 989.7, 989.9, 990.05, 990.35, 990.5, 990.8, 990.95, 991.05, 991.2, 991.45, 991.5, 991.65, 991.7, 991.95, 992.15, 992.35, 992.5, 992.65, 992.95, 993.05, 993.1, 993.25, 993.45, 993.5, 993.55, 993.6, 993.65, 993.75, 993.95, 994.1, 994.2, 994.3, 994.45, 994.45, 994.5, 994.7, 994.75, 994.75, 994.85, 995.0, 995.1, 995.3, 995.45, 995.5, 995.55, 995.6, 995.6, 995.7, 995.7, 995.85, 995.9, 996.0, 996.0, 996.05, 996.1, 996.1, 996.15, 996.15, 996.25, 996.35, 996.35, 996.4, 996.4, 996.5, 996.55, 996.6, 996.65, 996.75, 996.8, 996.85, 996.85, 996.95, 997.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 998.3, 997.8, 996.75, 994.45, 992.05, 989.3, 983.95, 976.8, 965.05, 949.05, 926.65, 897.4, 858.5, 807.55, 749.8, 682.2, 608.7, 533.15, 461.4, 394.25, 327.7, 269.05, 220.2, 176.7, 138.55, 108.95, 82.7, 62.75, 46.05, 34.15, 24.55, 17.65, 12.65, 9.45, 6.05, 4.2, 3.0, 2.2, 1.4, 1.05, 0.85, 0.6, 0.45, 0.4, 0.35, 0.2, 0.2, 0.15, 0.15, 0.15, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}], "layout": {"showlegend": true, "title": {"text": ""}, "xaxis": {"title": {"text": "Time "}}, "yaxis": {"title": {"text": "Species Population"}}}, "config": {"responsive": true}}, "trajectories": {"data": [{"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 3.0, 8.0, 12.0, 19.0, 30.0, 40.0, 60.0, 81.0, 118.0, 158.0, 214.0, 294.0, 389.0, 488.0, 568.0, 667.0, 724.0, 773.0, 811.0, 841.0, 845.0, 849.0, 843.0, 843.0, 842.0, 825.0, 823.0, 810.0, 792.0, 789.0, 781.0, 765.0, 756.0, 751.0, 739.0, 730.0, 723.0, 708.0, 694.0, 683.0, 671.0, 665.0, 657.0, 644.0, 637.0, 632.0, 625.0, 618.0, 612.0, 601.0, 592.0, 579.0, 573.0, 565.0, 553.0, 544.0, 534.0, 528.0, 525.0, 520.0, 508.0, 495.0, 483.0, 476.0, 465.0, 456.0, 449.0, 443.0, 437.0, 428.0, 423.0, 420.0, 411.0, 406.0, 398.0, 390.0, 383.0, 375.0, 366.0, 359.0, 357.0, 348.0, 344.0, 339.0, 337.0, 334.0, 331.0, 329.0, 322.0, 319.0, 317.0, 314.0, 308.0, 305.0, 302.0, 299.0, 293.0, 290.0, 284.0, 280.0, 272.0, 270.0, 270.0, 265.0, 260.0, 255.0, 253.0, 252.0, 252.0, 248.0, 241.0, 240.0, 238.0, 236.0, 230.0, 225.0, 220.0, 218.0, 216.0, 215.0, 209.0, 208.0, 203.0, 201.0, 200.0, 196.0, 195.0, 192.0, 188.0, 186.0, 183.0, 179.0, 173.0, 170.0, 166.0, 161.0, 159.0, 158.0, 156.0, 154.0, 153.0, 152.0, 151.0, 149.0, 147.0, 144.0, 143.0, 137.0, 136.0, 134.0, 130.0, 127.0, 124.0, 122.0, 120.0, 118.0, 117.0, 116.0, 114.0, 113.0, 112.0, 110.0, 108.0, 107.0, 101.0, 99.0, 99.0, 99.0, 96.0, 94.0, 92.0, 90.0, 90.0, 90.0, 87.0, 86.0, 83.0, 81.0, 80.0, 77.0, 75.0, 74.0, 73.0, 70.0, 70.0, 70.0, 69.0, 69.0, 69.0, 69.0, 68.0, 68.0, 68.0, 67.0, 67.0, 67.0, 66.0, 62.0, 61.0, 60.0, 58.0, 54.0, 52.0, 52.0, 52.0, 52.0, 51.0, 51.0, 50.0, 49.0, 47.0, 47.0, 46.0, 45.0, 44.0, 43.0, 42.0, 41.0, 40.0, 39.0, 39.0, 39.0, 39.0, 39.0, 39.0, 38.0, 37.0, 36.0, 36.0, 36.0, 36.0, 36.0, 35.0, 34.0, 34.0, 33.0, 33.0, 33.0, 31.0, 31.0, 31.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 29.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 27.0, 27.0, 27.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 25.0, 25.0, 24.0, 24.0, 24.0, 24.0, 22.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 19.0, 19.0, 19.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 17.0, 17.0, 16.0, 16.0, 15.0, 15.0, 15.0, 14.0, 14.0, 12.0, 12.0, 12.0, 12.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 3.0, 4.0, 5.0, 9.0, 11.0, 16.0, 20.0, 26.0, 32.0, 37.0, 45.0, 53.0, 66.0, 76.0, 92.0, 106.0, 125.0, 133.0, 143.0, 162.0, 171.0, 184.0, 203.0, 209.0, 217.0, 233.0, 242.0, 247.0, 260.0, 270.0, 277.0, 292.0, 306.0, 317.0, 329.0, 335.0, 343.0, 356.0, 363.0, 368.0, 375.0, 382.0, 388.0, 399.0, 408.0, 421.0, 427.0, 435.0, 447.0, 456.0, 466.0, 472.0, 475.0, 480.0, 492.0, 505.0, 517.0, 524.0, 535.0, 544.0, 551.0, 557.0, 563.0, 572.0, 577.0, 580.0, 589.0, 594.0, 602.0, 610.0, 617.0, 625.0, 634.0, 641.0, 643.0, 652.0, 656.0, 661.0, 663.0, 666.0, 669.0, 671.0, 678.0, 681.0, 683.0, 686.0, 692.0, 695.0, 698.0, 701.0, 707.0, 710.0, 716.0, 720.0, 728.0, 730.0, 730.0, 735.0, 740.0, 745.0, 747.0, 748.0, 748.0, 752.0, 759.0, 760.0, 762.0, 764.0, 770.0, 775.0, 780.0, 782.0, 784.0, 785.0, 791.0, 792.0, 797.0, 799.0, 800.0, 804.0, 805.0, 808.0, 812.0, 814.0, 817.0, 821.0, 827.0, 830.0, 834.0, 839.0, 841.0, 842.0, 844.0, 846.0, 847.0, 848.0, 849.0, 851.0, 853.0, 856.0, 857.0, 863.0, 864.0, 866.0, 870.0, 873.0, 876.0, 878.0, 880.0, 882.0, 883.0, 884.0, 886.0, 887.0, 888.0, 890.0, 892.0, 893.0, 899.0, 901.0, 901.0, 901.0, 904.0, 906.0, 908.0, 910.0, 910.0, 910.0, 913.0, 914.0, 917.0, 919.0, 920.0, 923.0, 925.0, 926.0, 927.0, 930.0, 930.0, 930.0, 931.0, 931.0, 931.0, 931.0, 932.0, 932.0, 932.0, 933.0, 933.0, 933.0, 934.0, 938.0, 939.0, 940.0, 942.0, 946.0, 948.0, 948.0, 948.0, 948.0, 949.0, 949.0, 950.0, 951.0, 953.0, 953.0, 954.0, 955.0, 956.0, 957.0, 958.0, 959.0, 960.0, 961.0, 961.0, 961.0, 961.0, 961.0, 961.0, 962.0, 963.0, 964.0, 964.0, 964.0, 964.0, 964.0, 965.0, 966.0, 966.0, 967.0, 967.0, 967.0, 969.0, 969.0, 969.0, 970.0, 970.0, 970.0, 970.0, 970.0, 970.0, 971.0, 972.0, 972.0, 972.0, 972.0, 972.0, 972.0, 972.0, 973.0, 973.0, 973.0, 974.0, 974.0, 974.0, 974.0, 974.0, 974.0, 974.0, 975.0, 975.0, 976.0, 976.0, 976.0, 976.0, 978.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 981.0, 981.0, 981.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 983.0, 983.0, 984.0, 984.0, 985.0, 985.0, 985.0, 986.0, 986.0, 988.0, 988.0, 988.0, 988.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 997.0, 992.0, 988.0, 980.0, 969.0, 959.0, 937.0, 915.0, 877.0, 833.0, 775.0, 690.0, 591.0, 486.0, 400.0, 296.0, 231.0, 174.0, 123.0, 83.0, 63.0, 45.0, 32.0, 24.0, 15.0, 13.0, 6.0, 6.0, 5.0, 2.0, 2.0, 2.0, 2.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 3.0, 3.0, 3.0, 6.0, 12.0, 15.0, 24.0, 41.0, 62.0, 88.0, 134.0, 173.0, 234.0, 302.0, 382.0, 465.0, 578.0, 653.0, 723.0, 762.0, 794.0, 821.0, 821.0, 832.0, 837.0, 832.0, 828.0, 821.0, 816.0, 803.0, 796.0, 783.0, 778.0, 765.0, 748.0, 735.0, 719.0, 706.0, 690.0, 680.0, 673.0, 664.0, 651.0, 640.0, 631.0, 621.0, 615.0, 605.0, 596.0, 588.0, 576.0, 564.0, 557.0, 546.0, 536.0, 524.0, 513.0, 505.0, 499.0, 488.0, 483.0, 475.0, 466.0, 457.0, 451.0, 444.0, 438.0, 433.0, 426.0, 420.0, 418.0, 414.0, 411.0, 407.0, 399.0, 392.0, 387.0, 383.0, 381.0, 374.0, 370.0, 365.0, 352.0, 345.0, 343.0, 341.0, 339.0, 334.0, 331.0, 326.0, 319.0, 313.0, 306.0, 302.0, 300.0, 299.0, 292.0, 290.0, 286.0, 280.0, 277.0, 271.0, 264.0, 257.0, 250.0, 247.0, 245.0, 242.0, 236.0, 232.0, 228.0, 226.0, 221.0, 216.0, 213.0, 209.0, 205.0, 202.0, 201.0, 195.0, 194.0, 190.0, 187.0, 183.0, 181.0, 180.0, 179.0, 177.0, 172.0, 171.0, 168.0, 166.0, 163.0, 161.0, 161.0, 158.0, 156.0, 148.0, 148.0, 147.0, 146.0, 144.0, 142.0, 140.0, 139.0, 135.0, 132.0, 132.0, 131.0, 129.0, 127.0, 122.0, 121.0, 119.0, 117.0, 117.0, 117.0, 115.0, 111.0, 108.0, 107.0, 105.0, 103.0, 102.0, 100.0, 95.0, 95.0, 94.0, 91.0, 90.0, 90.0, 89.0, 89.0, 86.0, 83.0, 81.0, 79.0, 77.0, 76.0, 76.0, 73.0, 70.0, 70.0, 68.0, 68.0, 68.0, 67.0, 66.0, 64.0, 63.0, 62.0, 61.0, 61.0, 61.0, 61.0, 61.0, 58.0, 58.0, 58.0, 58.0, 56.0, 56.0, 56.0, 54.0, 53.0, 53.0, 53.0, 53.0, 52.0, 50.0, 49.0, 47.0, 46.0, 46.0, 45.0, 44.0, 43.0, 43.0, 43.0, 43.0, 43.0, 43.0, 43.0, 43.0, 42.0, 42.0, 41.0, 41.0, 41.0, 41.0, 41.0, 40.0, 39.0, 38.0, 37.0, 36.0, 36.0, 36.0, 36.0, 35.0, 35.0, 33.0, 33.0, 33.0, 33.0, 33.0, 32.0, 31.0, 31.0, 31.0, 30.0, 30.0, 30.0, 30.0, 29.0, 28.0, 28.0, 27.0, 26.0, 25.0, 25.0, 25.0, 24.0, 24.0, 24.0, 23.0, 22.0, 22.0, 21.0, 20.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 18.0, 16.0, 15.0, 15.0, 15.0, 14.0, 14.0, 14.0, 14.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 3.0, 6.0, 8.0, 11.0, 19.0, 24.0, 29.0, 38.0, 46.0, 61.0, 71.0, 86.0, 104.0, 114.0, 127.0, 143.0, 154.0, 166.0, 175.0, 189.0, 197.0, 210.0, 219.0, 232.0, 250.0, 265.0, 281.0, 294.0, 310.0, 320.0, 327.0, 336.0, 349.0, 360.0, 369.0, 379.0, 385.0, 395.0, 404.0, 412.0, 424.0, 436.0, 443.0, 454.0, 464.0, 476.0, 487.0, 495.0, 501.0, 512.0, 517.0, 525.0, 534.0, 543.0, 549.0, 556.0, 562.0, 567.0, 574.0, 580.0, 582.0, 586.0, 589.0, 593.0, 601.0, 608.0, 613.0, 617.0, 619.0, 626.0, 630.0, 635.0, 648.0, 655.0, 657.0, 659.0, 661.0, 666.0, 669.0, 674.0, 681.0, 687.0, 694.0, 698.0, 700.0, 701.0, 708.0, 710.0, 714.0, 720.0, 723.0, 729.0, 736.0, 743.0, 750.0, 753.0, 755.0, 758.0, 764.0, 768.0, 772.0, 774.0, 779.0, 784.0, 787.0, 791.0, 795.0, 798.0, 799.0, 805.0, 806.0, 810.0, 813.0, 817.0, 819.0, 820.0, 821.0, 823.0, 828.0, 829.0, 832.0, 834.0, 837.0, 839.0, 839.0, 842.0, 844.0, 852.0, 852.0, 853.0, 854.0, 856.0, 858.0, 860.0, 861.0, 865.0, 868.0, 868.0, 869.0, 871.0, 873.0, 878.0, 879.0, 881.0, 883.0, 883.0, 883.0, 885.0, 889.0, 892.0, 893.0, 895.0, 897.0, 898.0, 900.0, 905.0, 905.0, 906.0, 909.0, 910.0, 910.0, 911.0, 911.0, 914.0, 917.0, 919.0, 921.0, 923.0, 924.0, 924.0, 927.0, 930.0, 930.0, 932.0, 932.0, 932.0, 933.0, 934.0, 936.0, 937.0, 938.0, 939.0, 939.0, 939.0, 939.0, 939.0, 942.0, 942.0, 942.0, 942.0, 944.0, 944.0, 944.0, 946.0, 947.0, 947.0, 947.0, 947.0, 948.0, 950.0, 951.0, 953.0, 954.0, 954.0, 955.0, 956.0, 957.0, 957.0, 957.0, 957.0, 957.0, 957.0, 957.0, 957.0, 958.0, 958.0, 959.0, 959.0, 959.0, 959.0, 959.0, 960.0, 961.0, 962.0, 963.0, 964.0, 964.0, 964.0, 964.0, 965.0, 965.0, 967.0, 967.0, 967.0, 967.0, 967.0, 968.0, 969.0, 969.0, 969.0, 970.0, 970.0, 970.0, 970.0, 971.0, 972.0, 972.0, 973.0, 974.0, 975.0, 975.0, 975.0, 976.0, 976.0, 976.0, 977.0, 978.0, 978.0, 979.0, 980.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 982.0, 984.0, 985.0, 985.0, 985.0, 986.0, 986.0, 986.0, 986.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 997.0, 997.0, 997.0, 994.0, 988.0, 985.0, 976.0, 959.0, 938.0, 911.0, 863.0, 821.0, 758.0, 687.0, 599.0, 511.0, 393.0, 309.0, 231.0, 177.0, 135.0, 93.0, 75.0, 54.0, 36.0, 25.0, 18.0, 13.0, 9.0, 8.0, 7.0, 7.0, 3.0, 3.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 1.0, 2.0, 2.0, 3.0, 4.0, 6.0, 6.0, 5.0, 8.0, 13.0, 19.0, 24.0, 34.0, 42.0, 62.0, 98.0, 142.0, 193.0, 268.0, 345.0, 431.0, 515.0, 608.0, 670.0, 733.0, 788.0, 817.0, 830.0, 830.0, 834.0, 823.0, 822.0, 816.0, 804.0, 796.0, 791.0, 782.0, 768.0, 758.0, 745.0, 730.0, 717.0, 703.0, 689.0, 677.0, 669.0, 662.0, 652.0, 642.0, 633.0, 625.0, 612.0, 604.0, 598.0, 586.0, 577.0, 572.0, 561.0, 552.0, 540.0, 536.0, 529.0, 522.0, 516.0, 509.0, 503.0, 497.0, 489.0, 482.0, 474.0, 468.0, 461.0, 455.0, 451.0, 443.0, 440.0, 433.0, 426.0, 423.0, 416.0, 413.0, 410.0, 405.0, 396.0, 386.0, 382.0, 379.0, 373.0, 365.0, 355.0, 352.0, 347.0, 340.0, 336.0, 334.0, 329.0, 322.0, 318.0, 313.0, 310.0, 309.0, 305.0, 301.0, 296.0, 294.0, 290.0, 286.0, 283.0, 277.0, 275.0, 266.0, 261.0, 257.0, 253.0, 249.0, 246.0, 242.0, 236.0, 233.0, 229.0, 227.0, 225.0, 221.0, 216.0, 211.0, 207.0, 197.0, 195.0, 194.0, 189.0, 187.0, 185.0, 185.0, 181.0, 177.0, 176.0, 176.0, 173.0, 169.0, 166.0, 164.0, 162.0, 159.0, 157.0, 153.0, 149.0, 146.0, 145.0, 143.0, 142.0, 138.0, 138.0, 136.0, 136.0, 135.0, 132.0, 131.0, 129.0, 129.0, 129.0, 127.0, 127.0, 124.0, 121.0, 119.0, 117.0, 113.0, 112.0, 108.0, 104.0, 103.0, 101.0, 101.0, 99.0, 94.0, 92.0, 92.0, 90.0, 88.0, 86.0, 86.0, 86.0, 85.0, 83.0, 83.0, 83.0, 82.0, 80.0, 80.0, 79.0, 78.0, 78.0, 75.0, 74.0, 73.0, 72.0, 69.0, 68.0, 68.0, 68.0, 68.0, 67.0, 67.0, 63.0, 61.0, 60.0, 60.0, 59.0, 59.0, 57.0, 54.0, 52.0, 52.0, 52.0, 49.0, 49.0, 49.0, 48.0, 47.0, 46.0, 44.0, 43.0, 42.0, 41.0, 41.0, 41.0, 41.0, 41.0, 40.0, 40.0, 39.0, 38.0, 38.0, 38.0, 36.0, 35.0, 35.0, 35.0, 34.0, 34.0, 34.0, 34.0, 34.0, 33.0, 33.0, 33.0, 33.0, 32.0, 30.0, 28.0, 28.0, 27.0, 27.0, 27.0, 26.0, 26.0, 26.0, 24.0, 24.0, 24.0, 23.0, 23.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 18.0, 17.0, 17.0, 16.0, 16.0, 15.0, 15.0, 15.0, 15.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 13.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 11.0, 11.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 9.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 7.0, 10.0, 16.0, 20.0, 25.0, 37.0, 45.0, 54.0, 62.0, 68.0, 77.0, 91.0, 111.0, 123.0, 144.0, 156.0, 166.0, 181.0, 193.0, 202.0, 213.0, 228.0, 239.0, 253.0, 268.0, 281.0, 295.0, 309.0, 321.0, 331.0, 338.0, 348.0, 358.0, 367.0, 375.0, 388.0, 396.0, 402.0, 414.0, 423.0, 428.0, 439.0, 448.0, 460.0, 464.0, 471.0, 478.0, 484.0, 491.0, 497.0, 503.0, 511.0, 518.0, 526.0, 532.0, 539.0, 545.0, 549.0, 557.0, 560.0, 567.0, 574.0, 577.0, 584.0, 587.0, 590.0, 595.0, 604.0, 614.0, 618.0, 621.0, 627.0, 635.0, 645.0, 648.0, 653.0, 660.0, 664.0, 666.0, 671.0, 678.0, 682.0, 687.0, 690.0, 691.0, 695.0, 699.0, 704.0, 706.0, 710.0, 714.0, 717.0, 723.0, 725.0, 734.0, 739.0, 743.0, 747.0, 751.0, 754.0, 758.0, 764.0, 767.0, 771.0, 773.0, 775.0, 779.0, 784.0, 789.0, 793.0, 803.0, 805.0, 806.0, 811.0, 813.0, 815.0, 815.0, 819.0, 823.0, 824.0, 824.0, 827.0, 831.0, 834.0, 836.0, 838.0, 841.0, 843.0, 847.0, 851.0, 854.0, 855.0, 857.0, 858.0, 862.0, 862.0, 864.0, 864.0, 865.0, 868.0, 869.0, 871.0, 871.0, 871.0, 873.0, 873.0, 876.0, 879.0, 881.0, 883.0, 887.0, 888.0, 892.0, 896.0, 897.0, 899.0, 899.0, 901.0, 906.0, 908.0, 908.0, 910.0, 912.0, 914.0, 914.0, 914.0, 915.0, 917.0, 917.0, 917.0, 918.0, 920.0, 920.0, 921.0, 922.0, 922.0, 925.0, 926.0, 927.0, 928.0, 931.0, 932.0, 932.0, 932.0, 932.0, 933.0, 933.0, 937.0, 939.0, 940.0, 940.0, 941.0, 941.0, 943.0, 946.0, 948.0, 948.0, 948.0, 951.0, 951.0, 951.0, 952.0, 953.0, 954.0, 956.0, 957.0, 958.0, 959.0, 959.0, 959.0, 959.0, 959.0, 960.0, 960.0, 961.0, 962.0, 962.0, 962.0, 964.0, 965.0, 965.0, 965.0, 966.0, 966.0, 966.0, 966.0, 966.0, 967.0, 967.0, 967.0, 967.0, 968.0, 970.0, 972.0, 972.0, 973.0, 973.0, 973.0, 974.0, 974.0, 974.0, 976.0, 976.0, 976.0, 977.0, 977.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 982.0, 983.0, 983.0, 984.0, 984.0, 985.0, 985.0, 985.0, 985.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 987.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 989.0, 989.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 991.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 997.0, 997.0, 996.0, 995.0, 993.0, 993.0, 993.0, 990.0, 985.0, 979.0, 973.0, 963.0, 955.0, 934.0, 898.0, 851.0, 797.0, 716.0, 635.0, 544.0, 448.0, 347.0, 276.0, 205.0, 144.0, 106.0, 79.0, 59.0, 43.0, 33.0, 22.0, 18.0, 15.0, 11.0, 7.0, 5.0, 4.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 1.0, 3.0, 3.0, 4.0, 8.0, 9.0, 14.0, 27.0, 40.0, 57.0, 77.0, 127.0, 172.0, 234.0, 321.0, 405.0, 494.0, 594.0, 674.0, 736.0, 789.0, 826.0, 839.0, 850.0, 856.0, 866.0, 855.0, 847.0, 842.0, 829.0, 813.0, 804.0, 789.0, 783.0, 772.0, 766.0, 763.0, 751.0, 743.0, 728.0, 719.0, 709.0, 698.0, 684.0, 677.0, 669.0, 660.0, 652.0, 644.0, 626.0, 619.0, 610.0, 604.0, 597.0, 593.0, 580.0, 570.0, 555.0, 540.0, 526.0, 516.0, 509.0, 503.0, 498.0, 488.0, 483.0, 473.0, 465.0, 456.0, 449.0, 445.0, 439.0, 431.0, 424.0, 415.0, 410.0, 407.0, 401.0, 397.0, 385.0, 381.0, 375.0, 371.0, 371.0, 366.0, 359.0, 354.0, 352.0, 345.0, 341.0, 339.0, 331.0, 323.0, 320.0, 315.0, 311.0, 308.0, 302.0, 296.0, 292.0, 290.0, 287.0, 284.0, 281.0, 274.0, 269.0, 263.0, 259.0, 253.0, 250.0, 248.0, 245.0, 242.0, 238.0, 234.0, 233.0, 229.0, 224.0, 220.0, 216.0, 212.0, 205.0, 202.0, 199.0, 197.0, 194.0, 191.0, 187.0, 184.0, 181.0, 179.0, 173.0, 172.0, 170.0, 168.0, 165.0, 165.0, 160.0, 159.0, 157.0, 156.0, 154.0, 153.0, 152.0, 150.0, 147.0, 146.0, 146.0, 145.0, 144.0, 143.0, 142.0, 141.0, 139.0, 137.0, 137.0, 132.0, 129.0, 129.0, 126.0, 124.0, 123.0, 120.0, 120.0, 115.0, 113.0, 113.0, 112.0, 111.0, 108.0, 107.0, 103.0, 101.0, 100.0, 99.0, 97.0, 97.0, 96.0, 91.0, 91.0, 90.0, 90.0, 85.0, 84.0, 84.0, 82.0, 80.0, 79.0, 79.0, 78.0, 78.0, 76.0, 75.0, 74.0, 74.0, 74.0, 73.0, 71.0, 71.0, 71.0, 71.0, 70.0, 70.0, 66.0, 65.0, 65.0, 65.0, 64.0, 64.0, 64.0, 63.0, 62.0, 61.0, 61.0, 60.0, 58.0, 58.0, 58.0, 58.0, 58.0, 57.0, 55.0, 55.0, 52.0, 50.0, 48.0, 48.0, 45.0, 45.0, 45.0, 42.0, 41.0, 40.0, 39.0, 39.0, 39.0, 38.0, 38.0, 37.0, 37.0, 37.0, 37.0, 37.0, 35.0, 34.0, 34.0, 34.0, 34.0, 34.0, 34.0, 34.0, 34.0, 34.0, 33.0, 32.0, 31.0, 30.0, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 28.0, 28.0, 27.0, 24.0, 24.0, 23.0, 22.0, 22.0, 21.0, 21.0, 21.0, 20.0, 20.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 18.0, 15.0, 15.0, 15.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 4.0, 6.0, 13.0, 17.0, 23.0, 28.0, 42.0, 51.0, 65.0, 80.0, 87.0, 100.0, 110.0, 130.0, 141.0, 148.0, 165.0, 184.0, 193.0, 208.0, 216.0, 227.0, 233.0, 237.0, 249.0, 257.0, 272.0, 281.0, 291.0, 302.0, 316.0, 323.0, 331.0, 340.0, 348.0, 356.0, 374.0, 381.0, 390.0, 396.0, 403.0, 407.0, 420.0, 430.0, 445.0, 460.0, 474.0, 484.0, 491.0, 497.0, 502.0, 512.0, 517.0, 527.0, 535.0, 544.0, 551.0, 555.0, 561.0, 569.0, 576.0, 585.0, 590.0, 593.0, 599.0, 603.0, 615.0, 619.0, 625.0, 629.0, 629.0, 634.0, 641.0, 646.0, 648.0, 655.0, 659.0, 661.0, 669.0, 677.0, 680.0, 685.0, 689.0, 692.0, 698.0, 704.0, 708.0, 710.0, 713.0, 716.0, 719.0, 726.0, 731.0, 737.0, 741.0, 747.0, 750.0, 752.0, 755.0, 758.0, 762.0, 766.0, 767.0, 771.0, 776.0, 780.0, 784.0, 788.0, 795.0, 798.0, 801.0, 803.0, 806.0, 809.0, 813.0, 816.0, 819.0, 821.0, 827.0, 828.0, 830.0, 832.0, 835.0, 835.0, 840.0, 841.0, 843.0, 844.0, 846.0, 847.0, 848.0, 850.0, 853.0, 854.0, 854.0, 855.0, 856.0, 857.0, 858.0, 859.0, 861.0, 863.0, 863.0, 868.0, 871.0, 871.0, 874.0, 876.0, 877.0, 880.0, 880.0, 885.0, 887.0, 887.0, 888.0, 889.0, 892.0, 893.0, 897.0, 899.0, 900.0, 901.0, 903.0, 903.0, 904.0, 909.0, 909.0, 910.0, 910.0, 915.0, 916.0, 916.0, 918.0, 920.0, 921.0, 921.0, 922.0, 922.0, 924.0, 925.0, 926.0, 926.0, 926.0, 927.0, 929.0, 929.0, 929.0, 929.0, 930.0, 930.0, 934.0, 935.0, 935.0, 935.0, 936.0, 936.0, 936.0, 937.0, 938.0, 939.0, 939.0, 940.0, 942.0, 942.0, 942.0, 942.0, 942.0, 943.0, 945.0, 945.0, 948.0, 950.0, 952.0, 952.0, 955.0, 955.0, 955.0, 958.0, 959.0, 960.0, 961.0, 961.0, 961.0, 962.0, 962.0, 963.0, 963.0, 963.0, 963.0, 963.0, 965.0, 966.0, 966.0, 966.0, 966.0, 966.0, 966.0, 966.0, 966.0, 966.0, 967.0, 968.0, 969.0, 970.0, 971.0, 971.0, 971.0, 971.0, 971.0, 971.0, 971.0, 972.0, 972.0, 973.0, 976.0, 976.0, 977.0, 978.0, 978.0, 979.0, 979.0, 979.0, 980.0, 980.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 982.0, 985.0, 985.0, 985.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 999.0, 997.0, 997.0, 996.0, 992.0, 991.0, 986.0, 973.0, 960.0, 943.0, 922.0, 872.0, 827.0, 762.0, 673.0, 582.0, 489.0, 383.0, 298.0, 222.0, 160.0, 109.0, 81.0, 63.0, 44.0, 24.0, 15.0, 12.0, 10.0, 6.0, 3.0, 3.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 3.0, 5.0, 8.0, 10.0, 11.0, 14.0, 20.0, 30.0, 41.0, 56.0, 73.0, 100.0, 136.0, 195.0, 252.0, 319.0, 408.0, 502.0, 602.0, 674.0, 736.0, 786.0, 804.0, 827.0, 831.0, 829.0, 828.0, 833.0, 825.0, 817.0, 811.0, 802.0, 790.0, 783.0, 774.0, 761.0, 753.0, 743.0, 734.0, 717.0, 711.0, 698.0, 689.0, 680.0, 667.0, 658.0, 646.0, 634.0, 620.0, 609.0, 599.0, 597.0, 588.0, 578.0, 568.0, 555.0, 545.0, 540.0, 531.0, 526.0, 522.0, 511.0, 503.0, 498.0, 493.0, 488.0, 480.0, 472.0, 465.0, 458.0, 448.0, 443.0, 434.0, 425.0, 420.0, 415.0, 406.0, 400.0, 396.0, 388.0, 384.0, 380.0, 373.0, 366.0, 360.0, 351.0, 350.0, 344.0, 341.0, 334.0, 328.0, 322.0, 318.0, 315.0, 307.0, 300.0, 294.0, 293.0, 289.0, 288.0, 284.0, 282.0, 277.0, 272.0, 270.0, 267.0, 262.0, 259.0, 258.0, 253.0, 249.0, 246.0, 241.0, 238.0, 234.0, 229.0, 228.0, 227.0, 224.0, 222.0, 217.0, 212.0, 210.0, 207.0, 205.0, 198.0, 197.0, 195.0, 193.0, 191.0, 189.0, 183.0, 183.0, 182.0, 182.0, 176.0, 175.0, 168.0, 166.0, 165.0, 164.0, 162.0, 159.0, 155.0, 154.0, 150.0, 147.0, 146.0, 143.0, 142.0, 142.0, 141.0, 140.0, 138.0, 138.0, 134.0, 130.0, 128.0, 124.0, 121.0, 119.0, 118.0, 117.0, 116.0, 114.0, 110.0, 110.0, 107.0, 104.0, 103.0, 100.0, 98.0, 98.0, 96.0, 96.0, 93.0, 92.0, 90.0, 90.0, 89.0, 88.0, 86.0, 85.0, 85.0, 84.0, 82.0, 79.0, 78.0, 77.0, 77.0, 75.0, 75.0, 75.0, 74.0, 70.0, 68.0, 66.0, 65.0, 63.0, 63.0, 60.0, 60.0, 60.0, 58.0, 58.0, 58.0, 56.0, 56.0, 56.0, 55.0, 55.0, 54.0, 52.0, 52.0, 52.0, 49.0, 49.0, 49.0, 48.0, 48.0, 47.0, 44.0, 44.0, 42.0, 40.0, 39.0, 39.0, 37.0, 36.0, 36.0, 36.0, 35.0, 34.0, 34.0, 34.0, 32.0, 32.0, 32.0, 32.0, 32.0, 31.0, 31.0, 31.0, 30.0, 29.0, 29.0, 29.0, 29.0, 29.0, 28.0, 28.0, 28.0, 28.0, 27.0, 27.0, 26.0, 25.0, 25.0, 25.0, 25.0, 25.0, 24.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 22.0, 21.0, 20.0, 19.0, 19.0, 19.0, 19.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 17.0, 17.0, 17.0, 16.0, 16.0, 16.0, 16.0, 16.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 14.0, 14.0, 14.0, 14.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 12.0, 11.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 5.0, 6.0, 9.0, 12.0, 19.0, 24.0, 32.0, 37.0, 51.0, 58.0, 68.0, 86.0, 101.0, 115.0, 132.0, 147.0, 153.0, 166.0, 179.0, 187.0, 197.0, 209.0, 216.0, 225.0, 238.0, 246.0, 257.0, 266.0, 283.0, 289.0, 302.0, 311.0, 320.0, 333.0, 342.0, 354.0, 366.0, 380.0, 391.0, 401.0, 403.0, 412.0, 422.0, 432.0, 445.0, 455.0, 460.0, 469.0, 474.0, 478.0, 489.0, 497.0, 502.0, 507.0, 512.0, 520.0, 528.0, 535.0, 542.0, 552.0, 557.0, 566.0, 575.0, 580.0, 585.0, 594.0, 600.0, 604.0, 612.0, 616.0, 620.0, 627.0, 634.0, 640.0, 649.0, 650.0, 656.0, 659.0, 666.0, 672.0, 678.0, 682.0, 685.0, 693.0, 700.0, 706.0, 707.0, 711.0, 712.0, 716.0, 718.0, 723.0, 728.0, 730.0, 733.0, 738.0, 741.0, 742.0, 747.0, 751.0, 754.0, 759.0, 762.0, 766.0, 771.0, 772.0, 773.0, 776.0, 778.0, 783.0, 788.0, 790.0, 793.0, 795.0, 802.0, 803.0, 805.0, 807.0, 809.0, 811.0, 817.0, 817.0, 818.0, 818.0, 824.0, 825.0, 832.0, 834.0, 835.0, 836.0, 838.0, 841.0, 845.0, 846.0, 850.0, 853.0, 854.0, 857.0, 858.0, 858.0, 859.0, 860.0, 862.0, 862.0, 866.0, 870.0, 872.0, 876.0, 879.0, 881.0, 882.0, 883.0, 884.0, 886.0, 890.0, 890.0, 893.0, 896.0, 897.0, 900.0, 902.0, 902.0, 904.0, 904.0, 907.0, 908.0, 910.0, 910.0, 911.0, 912.0, 914.0, 915.0, 915.0, 916.0, 918.0, 921.0, 922.0, 923.0, 923.0, 925.0, 925.0, 925.0, 926.0, 930.0, 932.0, 934.0, 935.0, 937.0, 937.0, 940.0, 940.0, 940.0, 942.0, 942.0, 942.0, 944.0, 944.0, 944.0, 945.0, 945.0, 946.0, 948.0, 948.0, 948.0, 951.0, 951.0, 951.0, 952.0, 952.0, 953.0, 956.0, 956.0, 958.0, 960.0, 961.0, 961.0, 963.0, 964.0, 964.0, 964.0, 965.0, 966.0, 966.0, 966.0, 968.0, 968.0, 968.0, 968.0, 968.0, 969.0, 969.0, 969.0, 970.0, 971.0, 971.0, 971.0, 971.0, 971.0, 972.0, 972.0, 972.0, 972.0, 973.0, 973.0, 974.0, 975.0, 975.0, 975.0, 975.0, 975.0, 976.0, 977.0, 977.0, 977.0, 977.0, 977.0, 977.0, 977.0, 977.0, 977.0, 977.0, 978.0, 979.0, 980.0, 981.0, 981.0, 981.0, 981.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 983.0, 983.0, 983.0, 984.0, 984.0, 984.0, 984.0, 984.0, 985.0, 985.0, 985.0, 985.0, 985.0, 985.0, 986.0, 986.0, 986.0, 986.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 988.0, 989.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 999.0, 998.0, 998.0, 997.0, 995.0, 992.0, 990.0, 989.0, 986.0, 980.0, 970.0, 959.0, 942.0, 925.0, 895.0, 858.0, 796.0, 736.0, 662.0, 568.0, 466.0, 361.0, 275.0, 206.0, 146.0, 110.0, 72.0, 54.0, 39.0, 25.0, 14.0, 9.0, 4.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 3.0, 4.0, 6.0, 9.0, 11.0, 19.0, 26.0, 34.0, 56.0, 90.0, 135.0, 194.0, 259.0, 337.0, 413.0, 500.0, 582.0, 649.0, 707.0, 755.0, 787.0, 812.0, 822.0, 830.0, 833.0, 834.0, 832.0, 823.0, 818.0, 807.0, 793.0, 782.0, 768.0, 758.0, 744.0, 736.0, 722.0, 712.0, 701.0, 689.0, 674.0, 665.0, 655.0, 644.0, 633.0, 622.0, 612.0, 598.0, 585.0, 575.0, 569.0, 561.0, 551.0, 541.0, 535.0, 529.0, 523.0, 516.0, 506.0, 502.0, 492.0, 484.0, 477.0, 472.0, 458.0, 449.0, 441.0, 435.0, 430.0, 423.0, 416.0, 410.0, 409.0, 403.0, 397.0, 389.0, 382.0, 379.0, 372.0, 365.0, 359.0, 358.0, 352.0, 350.0, 347.0, 341.0, 334.0, 330.0, 327.0, 322.0, 318.0, 314.0, 310.0, 306.0, 298.0, 294.0, 287.0, 283.0, 280.0, 275.0, 271.0, 269.0, 266.0, 265.0, 263.0, 261.0, 256.0, 254.0, 250.0, 247.0, 245.0, 244.0, 240.0, 235.0, 230.0, 229.0, 224.0, 222.0, 217.0, 216.0, 213.0, 211.0, 210.0, 209.0, 207.0, 203.0, 202.0, 201.0, 201.0, 199.0, 195.0, 192.0, 191.0, 184.0, 181.0, 178.0, 172.0, 166.0, 165.0, 164.0, 163.0, 159.0, 155.0, 150.0, 147.0, 144.0, 141.0, 139.0, 134.0, 132.0, 128.0, 127.0, 124.0, 120.0, 119.0, 118.0, 116.0, 116.0, 114.0, 113.0, 112.0, 112.0, 110.0, 105.0, 103.0, 99.0, 99.0, 98.0, 97.0, 96.0, 93.0, 90.0, 87.0, 85.0, 85.0, 85.0, 84.0, 84.0, 83.0, 83.0, 82.0, 82.0, 80.0, 79.0, 75.0, 74.0, 74.0, 74.0, 72.0, 72.0, 69.0, 68.0, 67.0, 66.0, 65.0, 63.0, 59.0, 56.0, 55.0, 55.0, 55.0, 55.0, 55.0, 54.0, 53.0, 53.0, 53.0, 52.0, 51.0, 50.0, 50.0, 48.0, 47.0, 46.0, 45.0, 43.0, 41.0, 39.0, 38.0, 37.0, 37.0, 37.0, 37.0, 35.0, 35.0, 34.0, 33.0, 33.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 31.0, 31.0, 31.0, 31.0, 31.0, 30.0, 30.0, 29.0, 29.0, 28.0, 27.0, 27.0, 27.0, 27.0, 27.0, 26.0, 25.0, 25.0, 24.0, 24.0, 23.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 18.0, 18.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 16.0, 16.0, 15.0, 14.0, 13.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 6.0, 12.0, 17.0, 21.0, 34.0, 42.0, 54.0, 62.0, 73.0, 86.0, 95.0, 111.0, 129.0, 140.0, 146.0, 154.0, 166.0, 174.0, 187.0, 204.0, 216.0, 231.0, 242.0, 256.0, 264.0, 278.0, 288.0, 299.0, 311.0, 326.0, 335.0, 345.0, 356.0, 367.0, 378.0, 388.0, 402.0, 415.0, 425.0, 431.0, 439.0, 449.0, 459.0, 465.0, 471.0, 477.0, 484.0, 494.0, 498.0, 508.0, 516.0, 523.0, 528.0, 542.0, 551.0, 559.0, 565.0, 570.0, 577.0, 584.0, 590.0, 591.0, 597.0, 603.0, 611.0, 618.0, 621.0, 628.0, 635.0, 641.0, 642.0, 648.0, 650.0, 653.0, 659.0, 666.0, 670.0, 673.0, 678.0, 682.0, 686.0, 690.0, 694.0, 702.0, 706.0, 713.0, 717.0, 720.0, 725.0, 729.0, 731.0, 734.0, 735.0, 737.0, 739.0, 744.0, 746.0, 750.0, 753.0, 755.0, 756.0, 760.0, 765.0, 770.0, 771.0, 776.0, 778.0, 783.0, 784.0, 787.0, 789.0, 790.0, 791.0, 793.0, 797.0, 798.0, 799.0, 799.0, 801.0, 805.0, 808.0, 809.0, 816.0, 819.0, 822.0, 828.0, 834.0, 835.0, 836.0, 837.0, 841.0, 845.0, 850.0, 853.0, 856.0, 859.0, 861.0, 866.0, 868.0, 872.0, 873.0, 876.0, 880.0, 881.0, 882.0, 884.0, 884.0, 886.0, 887.0, 888.0, 888.0, 890.0, 895.0, 897.0, 901.0, 901.0, 902.0, 903.0, 904.0, 907.0, 910.0, 913.0, 915.0, 915.0, 915.0, 916.0, 916.0, 917.0, 917.0, 918.0, 918.0, 920.0, 921.0, 925.0, 926.0, 926.0, 926.0, 928.0, 928.0, 931.0, 932.0, 933.0, 934.0, 935.0, 937.0, 941.0, 944.0, 945.0, 945.0, 945.0, 945.0, 945.0, 946.0, 947.0, 947.0, 947.0, 948.0, 949.0, 950.0, 950.0, 952.0, 953.0, 954.0, 955.0, 957.0, 959.0, 961.0, 962.0, 963.0, 963.0, 963.0, 963.0, 965.0, 965.0, 966.0, 967.0, 967.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 969.0, 969.0, 969.0, 969.0, 969.0, 970.0, 970.0, 971.0, 971.0, 972.0, 973.0, 973.0, 973.0, 973.0, 973.0, 974.0, 975.0, 975.0, 976.0, 976.0, 977.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 982.0, 982.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 983.0, 984.0, 984.0, 985.0, 986.0, 987.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 998.0, 998.0, 998.0, 998.0, 998.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 997.0, 996.0, 994.0, 991.0, 988.0, 980.0, 973.0, 965.0, 943.0, 909.0, 864.0, 800.0, 729.0, 646.0, 566.0, 466.0, 376.0, 297.0, 231.0, 172.0, 127.0, 93.0, 67.0, 41.0, 27.0, 20.0, 14.0, 11.0, 8.0, 6.0, 3.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 3.0, 4.0, 5.0, 6.0, 10.0, 13.0, 18.0, 27.0, 41.0, 57.0, 101.0, 143.0, 197.0, 280.0, 361.0, 442.0, 529.0, 640.0, 713.0, 769.0, 807.0, 831.0, 840.0, 839.0, 844.0, 837.0, 829.0, 815.0, 808.0, 797.0, 783.0, 767.0, 753.0, 745.0, 736.0, 729.0, 715.0, 703.0, 690.0, 680.0, 670.0, 655.0, 641.0, 630.0, 622.0, 613.0, 607.0, 598.0, 589.0, 578.0, 569.0, 560.0, 551.0, 540.0, 536.0, 534.0, 529.0, 523.0, 514.0, 507.0, 502.0, 496.0, 489.0, 482.0, 476.0, 468.0, 463.0, 460.0, 452.0, 447.0, 441.0, 432.0, 424.0, 417.0, 409.0, 405.0, 396.0, 394.0, 386.0, 381.0, 374.0, 370.0, 363.0, 358.0, 354.0, 352.0, 349.0, 340.0, 338.0, 338.0, 334.0, 331.0, 329.0, 325.0, 322.0, 317.0, 314.0, 311.0, 305.0, 301.0, 294.0, 288.0, 284.0, 282.0, 277.0, 275.0, 274.0, 267.0, 265.0, 262.0, 259.0, 258.0, 255.0, 246.0, 240.0, 233.0, 231.0, 224.0, 220.0, 215.0, 211.0, 207.0, 204.0, 199.0, 193.0, 189.0, 188.0, 184.0, 183.0, 179.0, 174.0, 171.0, 170.0, 168.0, 164.0, 162.0, 160.0, 156.0, 154.0, 153.0, 151.0, 150.0, 147.0, 146.0, 145.0, 142.0, 139.0, 138.0, 134.0, 129.0, 128.0, 125.0, 124.0, 123.0, 122.0, 121.0, 118.0, 116.0, 116.0, 114.0, 112.0, 111.0, 110.0, 108.0, 106.0, 106.0, 104.0, 103.0, 102.0, 101.0, 99.0, 99.0, 97.0, 93.0, 90.0, 89.0, 88.0, 86.0, 85.0, 85.0, 83.0, 83.0, 82.0, 80.0, 78.0, 78.0, 77.0, 75.0, 73.0, 71.0, 69.0, 69.0, 69.0, 69.0, 69.0, 68.0, 67.0, 66.0, 66.0, 65.0, 65.0, 65.0, 64.0, 62.0, 61.0, 59.0, 58.0, 57.0, 57.0, 57.0, 57.0, 57.0, 54.0, 54.0, 54.0, 53.0, 51.0, 49.0, 48.0, 48.0, 47.0, 46.0, 46.0, 44.0, 44.0, 43.0, 43.0, 42.0, 41.0, 41.0, 41.0, 38.0, 38.0, 37.0, 35.0, 35.0, 33.0, 33.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 31.0, 30.0, 30.0, 30.0, 30.0, 29.0, 27.0, 27.0, 26.0, 26.0, 24.0, 24.0, 24.0, 24.0, 23.0, 23.0, 23.0, 23.0, 23.0, 21.0, 21.0, 21.0, 21.0, 21.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 18.0, 17.0, 17.0, 17.0, 17.0, 16.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2.0, 4.0, 8.0, 22.0, 27.0, 39.0, 46.0, 56.0, 68.0, 82.0, 103.0, 119.0, 126.0, 141.0, 152.0, 169.0, 181.0, 196.0, 211.0, 227.0, 243.0, 251.0, 262.0, 270.0, 284.0, 296.0, 310.0, 320.0, 330.0, 345.0, 359.0, 370.0, 378.0, 387.0, 393.0, 402.0, 411.0, 422.0, 431.0, 440.0, 449.0, 460.0, 464.0, 466.0, 471.0, 477.0, 486.0, 493.0, 498.0, 504.0, 511.0, 518.0, 524.0, 532.0, 537.0, 540.0, 548.0, 553.0, 559.0, 568.0, 576.0, 583.0, 591.0, 595.0, 604.0, 606.0, 614.0, 619.0, 626.0, 630.0, 637.0, 642.0, 646.0, 648.0, 651.0, 660.0, 662.0, 662.0, 666.0, 669.0, 671.0, 675.0, 678.0, 683.0, 686.0, 689.0, 695.0, 699.0, 706.0, 712.0, 716.0, 718.0, 723.0, 725.0, 726.0, 733.0, 735.0, 738.0, 741.0, 742.0, 745.0, 754.0, 760.0, 767.0, 769.0, 776.0, 780.0, 785.0, 789.0, 793.0, 796.0, 801.0, 807.0, 811.0, 812.0, 816.0, 817.0, 821.0, 826.0, 829.0, 830.0, 832.0, 836.0, 838.0, 840.0, 844.0, 846.0, 847.0, 849.0, 850.0, 853.0, 854.0, 855.0, 858.0, 861.0, 862.0, 866.0, 871.0, 872.0, 875.0, 876.0, 877.0, 878.0, 879.0, 882.0, 884.0, 884.0, 886.0, 888.0, 889.0, 890.0, 892.0, 894.0, 894.0, 896.0, 897.0, 898.0, 899.0, 901.0, 901.0, 903.0, 907.0, 910.0, 911.0, 912.0, 914.0, 915.0, 915.0, 917.0, 917.0, 918.0, 920.0, 922.0, 922.0, 923.0, 925.0, 927.0, 929.0, 931.0, 931.0, 931.0, 931.0, 931.0, 932.0, 933.0, 934.0, 934.0, 935.0, 935.0, 935.0, 936.0, 938.0, 939.0, 941.0, 942.0, 943.0, 943.0, 943.0, 943.0, 943.0, 946.0, 946.0, 946.0, 947.0, 949.0, 951.0, 952.0, 952.0, 953.0, 954.0, 954.0, 956.0, 956.0, 957.0, 957.0, 958.0, 959.0, 959.0, 959.0, 962.0, 962.0, 963.0, 965.0, 965.0, 967.0, 967.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 969.0, 970.0, 970.0, 970.0, 970.0, 971.0, 973.0, 973.0, 974.0, 974.0, 976.0, 976.0, 976.0, 976.0, 977.0, 977.0, 977.0, 977.0, 977.0, 979.0, 979.0, 979.0, 979.0, 979.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 982.0, 983.0, 983.0, 983.0, 983.0, 984.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 997.0, 996.0, 995.0, 994.0, 990.0, 987.0, 982.0, 973.0, 959.0, 943.0, 898.0, 856.0, 801.0, 716.0, 631.0, 536.0, 444.0, 321.0, 241.0, 175.0, 125.0, 87.0, 57.0, 42.0, 30.0, 22.0, 19.0, 16.0, 11.0, 7.0, 6.0, 6.0, 4.0, 4.0, 2.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 2.0, 6.0, 11.0, 17.0, 23.0, 42.0, 59.0, 86.0, 108.0, 142.0, 181.0, 246.0, 323.0, 401.0, 465.0, 555.0, 632.0, 703.0, 756.0, 800.0, 823.0, 848.0, 853.0, 858.0, 850.0, 849.0, 842.0, 834.0, 825.0, 817.0, 805.0, 797.0, 786.0, 779.0, 769.0, 754.0, 740.0, 725.0, 712.0, 705.0, 697.0, 685.0, 677.0, 666.0, 649.0, 644.0, 635.0, 624.0, 605.0, 596.0, 590.0, 582.0, 572.0, 561.0, 553.0, 548.0, 539.0, 533.0, 528.0, 525.0, 518.0, 511.0, 504.0, 503.0, 495.0, 489.0, 481.0, 474.0, 468.0, 461.0, 453.0, 444.0, 432.0, 428.0, 424.0, 418.0, 408.0, 399.0, 395.0, 390.0, 385.0, 376.0, 372.0, 367.0, 358.0, 350.0, 344.0, 340.0, 337.0, 331.0, 326.0, 324.0, 320.0, 314.0, 311.0, 307.0, 303.0, 299.0, 297.0, 291.0, 287.0, 280.0, 276.0, 272.0, 269.0, 265.0, 259.0, 256.0, 253.0, 249.0, 245.0, 244.0, 243.0, 240.0, 236.0, 233.0, 233.0, 228.0, 225.0, 223.0, 218.0, 215.0, 214.0, 211.0, 208.0, 204.0, 204.0, 199.0, 197.0, 194.0, 190.0, 190.0, 190.0, 183.0, 182.0, 180.0, 178.0, 174.0, 167.0, 163.0, 157.0, 157.0, 154.0, 153.0, 151.0, 150.0, 149.0, 149.0, 148.0, 142.0, 141.0, 138.0, 137.0, 135.0, 133.0, 132.0, 131.0, 129.0, 126.0, 125.0, 121.0, 119.0, 117.0, 117.0, 116.0, 111.0, 107.0, 107.0, 106.0, 103.0, 102.0, 101.0, 101.0, 100.0, 100.0, 100.0, 99.0, 98.0, 97.0, 97.0, 97.0, 93.0, 92.0, 91.0, 90.0, 89.0, 87.0, 86.0, 84.0, 82.0, 81.0, 80.0, 80.0, 79.0, 76.0, 76.0, 75.0, 74.0, 73.0, 73.0, 69.0, 67.0, 65.0, 64.0, 62.0, 62.0, 61.0, 60.0, 60.0, 60.0, 60.0, 59.0, 58.0, 58.0, 57.0, 56.0, 54.0, 54.0, 52.0, 51.0, 51.0, 49.0, 48.0, 47.0, 46.0, 45.0, 44.0, 44.0, 44.0, 44.0, 44.0, 42.0, 42.0, 41.0, 40.0, 38.0, 38.0, 38.0, 37.0, 37.0, 37.0, 37.0, 36.0, 36.0, 36.0, 34.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 32.0, 31.0, 31.0, 31.0, 30.0, 30.0, 29.0, 29.0, 29.0, 28.0, 28.0, 28.0, 28.0, 27.0, 27.0, 27.0, 27.0, 27.0, 26.0, 26.0, 25.0, 25.0, 24.0, 24.0, 24.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 20.0, 20.0, 20.0, 20.0, 19.0, 19.0, 19.0, 18.0, 18.0, 17.0, 17.0, 17.0, 16.0, 16.0, 16.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 13.0, 12.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 3.0, 4.0, 4.0, 7.0, 8.0, 10.0, 12.0, 22.0, 24.0, 32.0, 39.0, 47.0, 59.0, 67.0, 80.0, 89.0, 101.0, 112.0, 128.0, 140.0, 151.0, 161.0, 172.0, 181.0, 194.0, 202.0, 213.0, 221.0, 231.0, 246.0, 260.0, 275.0, 288.0, 295.0, 303.0, 315.0, 323.0, 334.0, 351.0, 356.0, 365.0, 376.0, 395.0, 404.0, 410.0, 418.0, 428.0, 439.0, 447.0, 452.0, 461.0, 467.0, 472.0, 475.0, 482.0, 489.0, 496.0, 497.0, 505.0, 511.0, 519.0, 526.0, 532.0, 539.0, 547.0, 556.0, 568.0, 572.0, 576.0, 582.0, 592.0, 601.0, 605.0, 610.0, 615.0, 624.0, 628.0, 633.0, 642.0, 650.0, 656.0, 660.0, 663.0, 669.0, 674.0, 676.0, 680.0, 686.0, 689.0, 693.0, 697.0, 701.0, 703.0, 709.0, 713.0, 720.0, 724.0, 728.0, 731.0, 735.0, 741.0, 744.0, 747.0, 751.0, 755.0, 756.0, 757.0, 760.0, 764.0, 767.0, 767.0, 772.0, 775.0, 777.0, 782.0, 785.0, 786.0, 789.0, 792.0, 796.0, 796.0, 801.0, 803.0, 806.0, 810.0, 810.0, 810.0, 817.0, 818.0, 820.0, 822.0, 826.0, 833.0, 837.0, 843.0, 843.0, 846.0, 847.0, 849.0, 850.0, 851.0, 851.0, 852.0, 858.0, 859.0, 862.0, 863.0, 865.0, 867.0, 868.0, 869.0, 871.0, 874.0, 875.0, 879.0, 881.0, 883.0, 883.0, 884.0, 889.0, 893.0, 893.0, 894.0, 897.0, 898.0, 899.0, 899.0, 900.0, 900.0, 900.0, 901.0, 902.0, 903.0, 903.0, 903.0, 907.0, 908.0, 909.0, 910.0, 911.0, 913.0, 914.0, 916.0, 918.0, 919.0, 920.0, 920.0, 921.0, 924.0, 924.0, 925.0, 926.0, 927.0, 927.0, 931.0, 933.0, 935.0, 936.0, 938.0, 938.0, 939.0, 940.0, 940.0, 940.0, 940.0, 941.0, 942.0, 942.0, 943.0, 944.0, 946.0, 946.0, 948.0, 949.0, 949.0, 951.0, 952.0, 953.0, 954.0, 955.0, 956.0, 956.0, 956.0, 956.0, 956.0, 958.0, 958.0, 959.0, 960.0, 962.0, 962.0, 962.0, 963.0, 963.0, 963.0, 963.0, 964.0, 964.0, 964.0, 966.0, 967.0, 967.0, 967.0, 967.0, 967.0, 967.0, 967.0, 967.0, 967.0, 967.0, 968.0, 969.0, 969.0, 969.0, 970.0, 970.0, 971.0, 971.0, 971.0, 972.0, 972.0, 972.0, 972.0, 973.0, 973.0, 973.0, 973.0, 973.0, 974.0, 974.0, 975.0, 975.0, 976.0, 976.0, 976.0, 977.0, 977.0, 977.0, 977.0, 977.0, 977.0, 977.0, 977.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 980.0, 980.0, 980.0, 980.0, 981.0, 981.0, 981.0, 982.0, 982.0, 983.0, 983.0, 983.0, 984.0, 984.0, 984.0, 985.0, 985.0, 985.0, 985.0, 985.0, 985.0, 985.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 987.0, 988.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 998.0, 994.0, 989.0, 983.0, 976.0, 957.0, 938.0, 910.0, 888.0, 851.0, 811.0, 744.0, 665.0, 577.0, 511.0, 413.0, 329.0, 250.0, 185.0, 133.0, 97.0, 63.0, 46.0, 30.0, 22.0, 11.0, 7.0, 5.0, 3.0, 2.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 6.0, 6.0, 10.0, 19.0, 26.0, 33.0, 45.0, 58.0, 94.0, 135.0, 198.0, 286.0, 366.0, 459.0, 552.0, 643.0, 712.0, 759.0, 795.0, 822.0, 840.0, 841.0, 840.0, 841.0, 839.0, 836.0, 830.0, 819.0, 801.0, 793.0, 778.0, 770.0, 759.0, 746.0, 741.0, 733.0, 723.0, 714.0, 707.0, 695.0, 683.0, 673.0, 670.0, 663.0, 654.0, 648.0, 641.0, 634.0, 625.0, 609.0, 596.0, 586.0, 578.0, 571.0, 566.0, 558.0, 548.0, 539.0, 535.0, 529.0, 518.0, 512.0, 510.0, 503.0, 497.0, 487.0, 482.0, 476.0, 471.0, 462.0, 456.0, 448.0, 439.0, 433.0, 430.0, 421.0, 418.0, 406.0, 400.0, 394.0, 392.0, 386.0, 379.0, 372.0, 369.0, 363.0, 358.0, 354.0, 344.0, 338.0, 332.0, 327.0, 323.0, 321.0, 317.0, 314.0, 310.0, 303.0, 299.0, 294.0, 289.0, 281.0, 274.0, 267.0, 261.0, 253.0, 248.0, 245.0, 242.0, 238.0, 230.0, 229.0, 226.0, 222.0, 221.0, 217.0, 213.0, 212.0, 210.0, 209.0, 208.0, 202.0, 198.0, 196.0, 193.0, 190.0, 185.0, 182.0, 179.0, 179.0, 177.0, 176.0, 175.0, 173.0, 169.0, 168.0, 167.0, 165.0, 164.0, 162.0, 160.0, 159.0, 157.0, 157.0, 153.0, 149.0, 146.0, 144.0, 140.0, 140.0, 138.0, 137.0, 137.0, 134.0, 131.0, 131.0, 127.0, 127.0, 123.0, 122.0, 122.0, 122.0, 120.0, 119.0, 119.0, 118.0, 113.0, 111.0, 107.0, 106.0, 103.0, 102.0, 101.0, 99.0, 98.0, 98.0, 97.0, 97.0, 95.0, 93.0, 91.0, 91.0, 90.0, 89.0, 89.0, 87.0, 85.0, 83.0, 83.0, 82.0, 80.0, 80.0, 77.0, 77.0, 76.0, 72.0, 69.0, 69.0, 68.0, 67.0, 67.0, 67.0, 65.0, 64.0, 64.0, 64.0, 64.0, 61.0, 61.0, 61.0, 60.0, 60.0, 60.0, 59.0, 56.0, 53.0, 53.0, 53.0, 53.0, 53.0, 52.0, 52.0, 50.0, 50.0, 50.0, 50.0, 49.0, 48.0, 47.0, 46.0, 46.0, 45.0, 44.0, 43.0, 43.0, 43.0, 40.0, 40.0, 40.0, 40.0, 38.0, 38.0, 37.0, 35.0, 35.0, 35.0, 35.0, 34.0, 33.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 31.0, 31.0, 31.0, 31.0, 29.0, 29.0, 28.0, 27.0, 27.0, 25.0, 24.0, 22.0, 22.0, 22.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 19.0, 19.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 17.0, 16.0, 16.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 12.0, 12.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 2.0, 4.0, 4.0, 5.0, 6.0, 8.0, 10.0, 13.0, 19.0, 24.0, 35.0, 45.0, 54.0, 66.0, 74.0, 86.0, 91.0, 108.0, 121.0, 135.0, 145.0, 154.0, 163.0, 177.0, 197.0, 206.0, 222.0, 230.0, 241.0, 254.0, 259.0, 267.0, 277.0, 286.0, 293.0, 305.0, 317.0, 327.0, 330.0, 337.0, 346.0, 352.0, 359.0, 366.0, 375.0, 391.0, 404.0, 414.0, 422.0, 429.0, 434.0, 442.0, 452.0, 461.0, 465.0, 471.0, 482.0, 488.0, 490.0, 497.0, 503.0, 513.0, 518.0, 524.0, 529.0, 538.0, 544.0, 552.0, 561.0, 567.0, 570.0, 579.0, 582.0, 594.0, 600.0, 606.0, 608.0, 614.0, 621.0, 628.0, 631.0, 637.0, 642.0, 646.0, 656.0, 662.0, 668.0, 673.0, 677.0, 679.0, 683.0, 686.0, 690.0, 697.0, 701.0, 706.0, 711.0, 719.0, 726.0, 733.0, 739.0, 747.0, 752.0, 755.0, 758.0, 762.0, 770.0, 771.0, 774.0, 778.0, 779.0, 783.0, 787.0, 788.0, 790.0, 791.0, 792.0, 798.0, 802.0, 804.0, 807.0, 810.0, 815.0, 818.0, 821.0, 821.0, 823.0, 824.0, 825.0, 827.0, 831.0, 832.0, 833.0, 835.0, 836.0, 838.0, 840.0, 841.0, 843.0, 843.0, 847.0, 851.0, 854.0, 856.0, 860.0, 860.0, 862.0, 863.0, 863.0, 866.0, 869.0, 869.0, 873.0, 873.0, 877.0, 878.0, 878.0, 878.0, 880.0, 881.0, 881.0, 882.0, 887.0, 889.0, 893.0, 894.0, 897.0, 898.0, 899.0, 901.0, 902.0, 902.0, 903.0, 903.0, 905.0, 907.0, 909.0, 909.0, 910.0, 911.0, 911.0, 913.0, 915.0, 917.0, 917.0, 918.0, 920.0, 920.0, 923.0, 923.0, 924.0, 928.0, 931.0, 931.0, 932.0, 933.0, 933.0, 933.0, 935.0, 936.0, 936.0, 936.0, 936.0, 939.0, 939.0, 939.0, 940.0, 940.0, 940.0, 941.0, 944.0, 947.0, 947.0, 947.0, 947.0, 947.0, 948.0, 948.0, 950.0, 950.0, 950.0, 950.0, 951.0, 952.0, 953.0, 954.0, 954.0, 955.0, 956.0, 957.0, 957.0, 957.0, 960.0, 960.0, 960.0, 960.0, 962.0, 962.0, 963.0, 965.0, 965.0, 965.0, 965.0, 966.0, 967.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 969.0, 969.0, 969.0, 969.0, 971.0, 971.0, 972.0, 973.0, 973.0, 975.0, 976.0, 978.0, 978.0, 978.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 981.0, 981.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 983.0, 984.0, 984.0, 986.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 988.0, 988.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 998.0, 993.0, 993.0, 988.0, 979.0, 972.0, 963.0, 951.0, 937.0, 900.0, 857.0, 792.0, 701.0, 615.0, 517.0, 413.0, 312.0, 234.0, 175.0, 131.0, 92.0, 69.0, 51.0, 39.0, 24.0, 16.0, 10.0, 7.0, 4.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 2.0, 2.0, 4.0, 6.0, 7.0, 10.0, 18.0, 28.0, 44.0, 63.0, 77.0, 113.0, 163.0, 212.0, 305.0, 392.0, 486.0, 552.0, 618.0, 684.0, 740.0, 786.0, 805.0, 809.0, 813.0, 818.0, 818.0, 811.0, 801.0, 791.0, 779.0, 767.0, 764.0, 751.0, 746.0, 738.0, 732.0, 726.0, 717.0, 708.0, 698.0, 689.0, 684.0, 676.0, 666.0, 655.0, 648.0, 637.0, 620.0, 613.0, 607.0, 601.0, 590.0, 582.0, 574.0, 565.0, 552.0, 540.0, 529.0, 525.0, 517.0, 510.0, 501.0, 496.0, 493.0, 488.0, 480.0, 474.0, 469.0, 462.0, 452.0, 445.0, 436.0, 427.0, 419.0, 409.0, 399.0, 394.0, 390.0, 389.0, 377.0, 375.0, 372.0, 360.0, 358.0, 351.0, 348.0, 344.0, 339.0, 334.0, 328.0, 325.0, 315.0, 313.0, 311.0, 308.0, 306.0, 300.0, 296.0, 293.0, 289.0, 285.0, 283.0, 280.0, 274.0, 271.0, 269.0, 262.0, 257.0, 255.0, 252.0, 250.0, 249.0, 246.0, 244.0, 241.0, 234.0, 231.0, 224.0, 219.0, 212.0, 208.0, 203.0, 200.0, 193.0, 190.0, 187.0, 184.0, 181.0, 180.0, 178.0, 176.0, 172.0, 170.0, 166.0, 162.0, 159.0, 157.0, 156.0, 152.0, 148.0, 145.0, 140.0, 136.0, 132.0, 131.0, 129.0, 126.0, 123.0, 121.0, 120.0, 119.0, 116.0, 114.0, 113.0, 112.0, 109.0, 107.0, 105.0, 105.0, 104.0, 104.0, 103.0, 103.0, 100.0, 99.0, 95.0, 93.0, 92.0, 91.0, 89.0, 88.0, 87.0, 87.0, 87.0, 85.0, 85.0, 81.0, 79.0, 77.0, 77.0, 76.0, 76.0, 76.0, 76.0, 75.0, 75.0, 75.0, 70.0, 69.0, 68.0, 68.0, 67.0, 67.0, 67.0, 66.0, 65.0, 65.0, 65.0, 65.0, 65.0, 64.0, 63.0, 62.0, 62.0, 62.0, 61.0, 60.0, 60.0, 59.0, 57.0, 54.0, 53.0, 52.0, 51.0, 50.0, 50.0, 49.0, 47.0, 47.0, 47.0, 46.0, 46.0, 46.0, 46.0, 46.0, 44.0, 43.0, 43.0, 43.0, 43.0, 42.0, 42.0, 40.0, 40.0, 39.0, 38.0, 37.0, 37.0, 36.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 34.0, 32.0, 32.0, 30.0, 29.0, 29.0, 29.0, 28.0, 28.0, 27.0, 27.0, 27.0, 26.0, 25.0, 25.0, 24.0, 24.0, 23.0, 23.0, 23.0, 23.0, 23.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 19.0, 19.0, 19.0, 18.0, 18.0, 17.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 14.0, 14.0, 13.0, 13.0, 13.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 5.0, 11.0, 14.0, 17.0, 22.0, 42.0, 54.0, 67.0, 79.0, 87.0, 101.0, 119.0, 131.0, 139.0, 153.0, 167.0, 180.0, 196.0, 210.0, 223.0, 228.0, 243.0, 251.0, 259.0, 266.0, 272.0, 282.0, 292.0, 302.0, 311.0, 316.0, 324.0, 334.0, 345.0, 352.0, 363.0, 380.0, 387.0, 393.0, 399.0, 410.0, 418.0, 426.0, 435.0, 448.0, 460.0, 471.0, 475.0, 483.0, 490.0, 499.0, 504.0, 507.0, 512.0, 520.0, 526.0, 531.0, 538.0, 548.0, 555.0, 564.0, 573.0, 581.0, 591.0, 601.0, 606.0, 610.0, 611.0, 623.0, 625.0, 628.0, 640.0, 642.0, 649.0, 652.0, 656.0, 661.0, 666.0, 672.0, 675.0, 685.0, 687.0, 689.0, 692.0, 694.0, 700.0, 704.0, 707.0, 711.0, 715.0, 717.0, 720.0, 726.0, 729.0, 731.0, 738.0, 743.0, 745.0, 748.0, 750.0, 751.0, 754.0, 756.0, 759.0, 766.0, 769.0, 776.0, 781.0, 788.0, 792.0, 797.0, 800.0, 807.0, 810.0, 813.0, 816.0, 819.0, 820.0, 822.0, 824.0, 828.0, 830.0, 834.0, 838.0, 841.0, 843.0, 844.0, 848.0, 852.0, 855.0, 860.0, 864.0, 868.0, 869.0, 871.0, 874.0, 877.0, 879.0, 880.0, 881.0, 884.0, 886.0, 887.0, 888.0, 891.0, 893.0, 895.0, 895.0, 896.0, 896.0, 897.0, 897.0, 900.0, 901.0, 905.0, 907.0, 908.0, 909.0, 911.0, 912.0, 913.0, 913.0, 913.0, 915.0, 915.0, 919.0, 921.0, 923.0, 923.0, 924.0, 924.0, 924.0, 924.0, 925.0, 925.0, 925.0, 930.0, 931.0, 932.0, 932.0, 933.0, 933.0, 933.0, 934.0, 935.0, 935.0, 935.0, 935.0, 935.0, 936.0, 937.0, 938.0, 938.0, 938.0, 939.0, 940.0, 940.0, 941.0, 943.0, 946.0, 947.0, 948.0, 949.0, 950.0, 950.0, 951.0, 953.0, 953.0, 953.0, 954.0, 954.0, 954.0, 954.0, 954.0, 956.0, 957.0, 957.0, 957.0, 957.0, 958.0, 958.0, 960.0, 960.0, 961.0, 962.0, 963.0, 963.0, 964.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 966.0, 968.0, 968.0, 970.0, 971.0, 971.0, 971.0, 972.0, 972.0, 973.0, 973.0, 973.0, 974.0, 975.0, 975.0, 976.0, 976.0, 977.0, 977.0, 977.0, 977.0, 977.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 981.0, 981.0, 981.0, 982.0, 982.0, 983.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 986.0, 986.0, 987.0, 987.0, 987.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 998.0, 998.0, 996.0, 994.0, 993.0, 990.0, 982.0, 972.0, 956.0, 937.0, 921.0, 885.0, 832.0, 777.0, 681.0, 591.0, 492.0, 406.0, 328.0, 249.0, 181.0, 127.0, 94.0, 72.0, 56.0, 43.0, 29.0, 22.0, 19.0, 13.0, 11.0, 10.0, 8.0, 6.0, 3.0, 3.0, 2.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 7.0, 7.0, 9.0, 12.0, 20.0, 26.0, 39.0, 53.0, 68.0, 107.0, 137.0, 203.0, 280.0, 358.0, 433.0, 530.0, 609.0, 693.0, 755.0, 805.0, 840.0, 861.0, 862.0, 854.0, 851.0, 856.0, 851.0, 849.0, 838.0, 829.0, 816.0, 804.0, 793.0, 781.0, 759.0, 750.0, 738.0, 725.0, 717.0, 705.0, 695.0, 684.0, 675.0, 660.0, 647.0, 633.0, 624.0, 615.0, 599.0, 589.0, 584.0, 575.0, 568.0, 559.0, 544.0, 531.0, 525.0, 515.0, 506.0, 498.0, 491.0, 478.0, 470.0, 462.0, 455.0, 447.0, 438.0, 427.0, 420.0, 413.0, 406.0, 402.0, 398.0, 389.0, 383.0, 380.0, 372.0, 367.0, 362.0, 358.0, 351.0, 344.0, 340.0, 333.0, 327.0, 323.0, 319.0, 313.0, 312.0, 307.0, 304.0, 300.0, 297.0, 289.0, 285.0, 282.0, 279.0, 277.0, 268.0, 264.0, 262.0, 257.0, 253.0, 248.0, 248.0, 241.0, 237.0, 232.0, 230.0, 229.0, 225.0, 223.0, 222.0, 221.0, 220.0, 217.0, 216.0, 212.0, 209.0, 206.0, 205.0, 204.0, 201.0, 199.0, 193.0, 193.0, 191.0, 189.0, 187.0, 183.0, 182.0, 179.0, 176.0, 174.0, 170.0, 166.0, 163.0, 160.0, 157.0, 155.0, 155.0, 151.0, 151.0, 148.0, 144.0, 140.0, 137.0, 137.0, 134.0, 133.0, 132.0, 131.0, 130.0, 129.0, 129.0, 126.0, 125.0, 124.0, 124.0, 122.0, 120.0, 117.0, 114.0, 111.0, 110.0, 110.0, 106.0, 106.0, 105.0, 103.0, 102.0, 100.0, 97.0, 96.0, 94.0, 93.0, 91.0, 91.0, 91.0, 90.0, 90.0, 89.0, 87.0, 87.0, 87.0, 85.0, 84.0, 81.0, 80.0, 79.0, 79.0, 78.0, 76.0, 75.0, 74.0, 73.0, 72.0, 71.0, 70.0, 70.0, 69.0, 68.0, 66.0, 65.0, 65.0, 65.0, 64.0, 64.0, 64.0, 64.0, 63.0, 62.0, 61.0, 61.0, 61.0, 60.0, 60.0, 60.0, 58.0, 57.0, 56.0, 55.0, 54.0, 53.0, 53.0, 50.0, 50.0, 49.0, 46.0, 44.0, 44.0, 43.0, 42.0, 42.0, 42.0, 41.0, 41.0, 41.0, 40.0, 38.0, 37.0, 35.0, 33.0, 33.0, 33.0, 33.0, 33.0, 32.0, 32.0, 31.0, 31.0, 30.0, 30.0, 30.0, 29.0, 29.0, 29.0, 28.0, 28.0, 27.0, 26.0, 25.0, 25.0, 23.0, 22.0, 22.0, 22.0, 21.0, 19.0, 19.0, 19.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 15.0, 15.0, 14.0, 14.0, 14.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 5.0, 9.0, 9.0, 12.0, 17.0, 24.0, 29.0, 36.0, 45.0, 54.0, 61.0, 75.0, 87.0, 101.0, 114.0, 124.0, 135.0, 141.0, 153.0, 168.0, 181.0, 193.0, 205.0, 217.0, 239.0, 248.0, 261.0, 274.0, 283.0, 295.0, 305.0, 316.0, 325.0, 340.0, 353.0, 367.0, 376.0, 385.0, 401.0, 411.0, 416.0, 425.0, 432.0, 441.0, 456.0, 469.0, 475.0, 485.0, 494.0, 502.0, 509.0, 522.0, 530.0, 538.0, 545.0, 553.0, 562.0, 573.0, 580.0, 587.0, 594.0, 598.0, 602.0, 611.0, 617.0, 620.0, 628.0, 633.0, 638.0, 642.0, 649.0, 656.0, 660.0, 667.0, 673.0, 677.0, 681.0, 687.0, 688.0, 693.0, 696.0, 700.0, 703.0, 711.0, 715.0, 718.0, 721.0, 723.0, 732.0, 736.0, 738.0, 743.0, 747.0, 752.0, 752.0, 759.0, 763.0, 768.0, 770.0, 771.0, 775.0, 777.0, 778.0, 779.0, 780.0, 783.0, 784.0, 788.0, 791.0, 794.0, 795.0, 796.0, 799.0, 801.0, 807.0, 807.0, 809.0, 811.0, 813.0, 817.0, 818.0, 821.0, 824.0, 826.0, 830.0, 834.0, 837.0, 840.0, 843.0, 845.0, 845.0, 849.0, 849.0, 852.0, 856.0, 860.0, 863.0, 863.0, 866.0, 867.0, 868.0, 869.0, 870.0, 871.0, 871.0, 874.0, 875.0, 876.0, 876.0, 878.0, 880.0, 883.0, 886.0, 889.0, 890.0, 890.0, 894.0, 894.0, 895.0, 897.0, 898.0, 900.0, 903.0, 904.0, 906.0, 907.0, 909.0, 909.0, 909.0, 910.0, 910.0, 911.0, 913.0, 913.0, 913.0, 915.0, 916.0, 919.0, 920.0, 921.0, 921.0, 922.0, 924.0, 925.0, 926.0, 927.0, 928.0, 929.0, 930.0, 930.0, 931.0, 932.0, 934.0, 935.0, 935.0, 935.0, 936.0, 936.0, 936.0, 936.0, 937.0, 938.0, 939.0, 939.0, 939.0, 940.0, 940.0, 940.0, 942.0, 943.0, 944.0, 945.0, 946.0, 947.0, 947.0, 950.0, 950.0, 951.0, 954.0, 956.0, 956.0, 957.0, 958.0, 958.0, 958.0, 959.0, 959.0, 959.0, 960.0, 962.0, 963.0, 965.0, 967.0, 967.0, 967.0, 967.0, 967.0, 968.0, 968.0, 969.0, 969.0, 970.0, 970.0, 970.0, 971.0, 971.0, 971.0, 972.0, 972.0, 973.0, 974.0, 975.0, 975.0, 977.0, 978.0, 978.0, 978.0, 979.0, 981.0, 981.0, 981.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 985.0, 985.0, 986.0, 986.0, 986.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 999.0, 998.0, 998.0, 998.0, 998.0, 997.0, 997.0, 993.0, 993.0, 991.0, 988.0, 980.0, 974.0, 961.0, 947.0, 932.0, 890.0, 858.0, 788.0, 711.0, 630.0, 550.0, 446.0, 362.0, 271.0, 200.0, 141.0, 99.0, 64.0, 51.0, 45.0, 35.0, 20.0, 14.0, 10.0, 9.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 2.0, 2.0, 2.0, 6.0, 8.0, 13.0, 23.0, 34.0, 47.0, 71.0, 100.0, 139.0, 210.0, 281.0, 370.0, 455.0, 548.0, 638.0, 710.0, 755.0, 794.0, 821.0, 844.0, 855.0, 847.0, 841.0, 831.0, 821.0, 814.0, 803.0, 790.0, 779.0, 768.0, 756.0, 740.0, 732.0, 718.0, 703.0, 697.0, 681.0, 673.0, 664.0, 656.0, 644.0, 636.0, 627.0, 621.0, 610.0, 601.0, 593.0, 583.0, 577.0, 571.0, 565.0, 554.0, 544.0, 542.0, 535.0, 527.0, 515.0, 507.0, 494.0, 482.0, 474.0, 471.0, 467.0, 462.0, 454.0, 451.0, 444.0, 439.0, 435.0, 430.0, 425.0, 419.0, 407.0, 402.0, 399.0, 395.0, 392.0, 387.0, 379.0, 374.0, 370.0, 363.0, 357.0, 353.0, 346.0, 343.0, 340.0, 335.0, 330.0, 324.0, 317.0, 314.0, 309.0, 305.0, 299.0, 297.0, 292.0, 290.0, 288.0, 285.0, 281.0, 277.0, 268.0, 265.0, 264.0, 258.0, 256.0, 255.0, 252.0, 249.0, 245.0, 241.0, 238.0, 235.0, 232.0, 229.0, 229.0, 228.0, 225.0, 220.0, 215.0, 212.0, 210.0, 209.0, 206.0, 202.0, 198.0, 196.0, 191.0, 187.0, 184.0, 180.0, 176.0, 170.0, 169.0, 168.0, 165.0, 160.0, 159.0, 154.0, 154.0, 151.0, 148.0, 147.0, 146.0, 142.0, 142.0, 139.0, 138.0, 135.0, 133.0, 130.0, 127.0, 126.0, 125.0, 124.0, 122.0, 122.0, 120.0, 118.0, 118.0, 116.0, 115.0, 114.0, 114.0, 111.0, 109.0, 108.0, 108.0, 106.0, 106.0, 105.0, 103.0, 103.0, 103.0, 103.0, 102.0, 99.0, 97.0, 96.0, 92.0, 92.0, 89.0, 87.0, 82.0, 82.0, 81.0, 79.0, 79.0, 78.0, 77.0, 75.0, 75.0, 74.0, 74.0, 74.0, 73.0, 72.0, 70.0, 70.0, 68.0, 68.0, 68.0, 66.0, 65.0, 62.0, 60.0, 60.0, 60.0, 59.0, 59.0, 59.0, 58.0, 58.0, 58.0, 56.0, 53.0, 52.0, 52.0, 51.0, 49.0, 49.0, 49.0, 49.0, 47.0, 46.0, 45.0, 45.0, 44.0, 44.0, 44.0, 44.0, 44.0, 41.0, 40.0, 40.0, 40.0, 39.0, 39.0, 39.0, 39.0, 39.0, 39.0, 39.0, 37.0, 37.0, 36.0, 34.0, 33.0, 33.0, 33.0, 32.0, 32.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 30.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 26.0, 25.0, 24.0, 24.0, 23.0, 22.0, 22.0, 21.0, 21.0, 21.0, 21.0, 20.0, 20.0, 19.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 16.0, 14.0, 14.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 8.0, 8.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 2.0, 2.0, 4.0, 4.0, 7.0, 9.0, 14.0, 19.0, 28.0, 35.0, 45.0, 65.0, 76.0, 87.0, 96.0, 109.0, 128.0, 142.0, 156.0, 169.0, 182.0, 194.0, 209.0, 220.0, 231.0, 243.0, 259.0, 268.0, 282.0, 297.0, 303.0, 319.0, 327.0, 336.0, 344.0, 356.0, 364.0, 373.0, 379.0, 390.0, 399.0, 407.0, 417.0, 423.0, 429.0, 435.0, 446.0, 456.0, 458.0, 465.0, 473.0, 485.0, 493.0, 506.0, 518.0, 526.0, 529.0, 533.0, 538.0, 546.0, 549.0, 556.0, 561.0, 565.0, 570.0, 575.0, 581.0, 593.0, 598.0, 601.0, 605.0, 608.0, 613.0, 621.0, 626.0, 630.0, 637.0, 643.0, 647.0, 654.0, 657.0, 660.0, 665.0, 670.0, 676.0, 683.0, 686.0, 691.0, 695.0, 701.0, 703.0, 708.0, 710.0, 712.0, 715.0, 719.0, 723.0, 732.0, 735.0, 736.0, 742.0, 744.0, 745.0, 748.0, 751.0, 755.0, 759.0, 762.0, 765.0, 768.0, 771.0, 771.0, 772.0, 775.0, 780.0, 785.0, 788.0, 790.0, 791.0, 794.0, 798.0, 802.0, 804.0, 809.0, 813.0, 816.0, 820.0, 824.0, 830.0, 831.0, 832.0, 835.0, 840.0, 841.0, 846.0, 846.0, 849.0, 852.0, 853.0, 854.0, 858.0, 858.0, 861.0, 862.0, 865.0, 867.0, 870.0, 873.0, 874.0, 875.0, 876.0, 878.0, 878.0, 880.0, 882.0, 882.0, 884.0, 885.0, 886.0, 886.0, 889.0, 891.0, 892.0, 892.0, 894.0, 894.0, 895.0, 897.0, 897.0, 897.0, 897.0, 898.0, 901.0, 903.0, 904.0, 908.0, 908.0, 911.0, 913.0, 918.0, 918.0, 919.0, 921.0, 921.0, 922.0, 923.0, 925.0, 925.0, 926.0, 926.0, 926.0, 927.0, 928.0, 930.0, 930.0, 932.0, 932.0, 932.0, 934.0, 935.0, 938.0, 940.0, 940.0, 940.0, 941.0, 941.0, 941.0, 942.0, 942.0, 942.0, 944.0, 947.0, 948.0, 948.0, 949.0, 951.0, 951.0, 951.0, 951.0, 953.0, 954.0, 955.0, 955.0, 956.0, 956.0, 956.0, 956.0, 956.0, 959.0, 960.0, 960.0, 960.0, 961.0, 961.0, 961.0, 961.0, 961.0, 961.0, 961.0, 963.0, 963.0, 964.0, 966.0, 967.0, 967.0, 967.0, 968.0, 968.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 970.0, 972.0, 972.0, 972.0, 972.0, 972.0, 972.0, 972.0, 972.0, 972.0, 974.0, 975.0, 976.0, 976.0, 977.0, 978.0, 978.0, 979.0, 979.0, 979.0, 979.0, 980.0, 980.0, 981.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 984.0, 986.0, 986.0, 986.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 992.0, 992.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 998.0, 998.0, 998.0, 994.0, 992.0, 987.0, 976.0, 964.0, 951.0, 927.0, 896.0, 857.0, 783.0, 710.0, 616.0, 526.0, 424.0, 327.0, 245.0, 180.0, 130.0, 92.0, 60.0, 36.0, 25.0, 17.0, 13.0, 10.0, 4.0, 3.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 3.0, 3.0, 3.0, 5.0, 5.0, 6.0, 8.0, 14.0, 23.0, 31.0, 47.0, 67.0, 108.0, 162.0, 210.0, 273.0, 368.0, 461.0, 553.0, 641.0, 713.0, 772.0, 809.0, 833.0, 850.0, 855.0, 854.0, 848.0, 839.0, 828.0, 820.0, 809.0, 804.0, 787.0, 779.0, 766.0, 750.0, 741.0, 735.0, 728.0, 713.0, 694.0, 681.0, 670.0, 658.0, 647.0, 631.0, 624.0, 615.0, 608.0, 599.0, 593.0, 580.0, 577.0, 570.0, 562.0, 553.0, 546.0, 539.0, 533.0, 528.0, 518.0, 513.0, 504.0, 498.0, 492.0, 484.0, 472.0, 464.0, 457.0, 451.0, 442.0, 432.0, 426.0, 421.0, 416.0, 414.0, 411.0, 403.0, 398.0, 389.0, 385.0, 376.0, 370.0, 365.0, 356.0, 351.0, 347.0, 343.0, 337.0, 330.0, 326.0, 320.0, 315.0, 310.0, 306.0, 303.0, 299.0, 293.0, 289.0, 282.0, 279.0, 277.0, 275.0, 272.0, 268.0, 264.0, 258.0, 256.0, 251.0, 247.0, 243.0, 241.0, 239.0, 234.0, 231.0, 228.0, 225.0, 218.0, 215.0, 214.0, 210.0, 204.0, 202.0, 200.0, 197.0, 195.0, 192.0, 190.0, 189.0, 186.0, 183.0, 179.0, 175.0, 174.0, 173.0, 170.0, 167.0, 167.0, 164.0, 163.0, 160.0, 156.0, 155.0, 151.0, 149.0, 147.0, 146.0, 143.0, 142.0, 138.0, 136.0, 136.0, 134.0, 132.0, 128.0, 127.0, 127.0, 125.0, 125.0, 124.0, 121.0, 120.0, 118.0, 117.0, 116.0, 114.0, 112.0, 112.0, 108.0, 108.0, 105.0, 102.0, 102.0, 98.0, 97.0, 95.0, 95.0, 94.0, 89.0, 89.0, 89.0, 88.0, 88.0, 86.0, 86.0, 85.0, 83.0, 79.0, 79.0, 79.0, 78.0, 72.0, 71.0, 69.0, 68.0, 67.0, 67.0, 67.0, 67.0, 66.0, 66.0, 64.0, 61.0, 61.0, 61.0, 60.0, 57.0, 56.0, 56.0, 55.0, 54.0, 53.0, 50.0, 46.0, 44.0, 43.0, 42.0, 41.0, 41.0, 41.0, 41.0, 41.0, 40.0, 40.0, 39.0, 39.0, 38.0, 38.0, 38.0, 38.0, 36.0, 36.0, 36.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 34.0, 34.0, 34.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 32.0, 32.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 29.0, 29.0, 29.0, 28.0, 28.0, 28.0, 28.0, 27.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 25.0, 25.0, 25.0, 24.0, 24.0, 24.0, 24.0, 24.0, 22.0, 22.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 20.0, 20.0, 19.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 17.0, 17.0, 17.0, 17.0, 16.0, 14.0, 14.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 4.0, 5.0, 9.0, 12.0, 14.0, 23.0, 33.0, 45.0, 51.0, 59.0, 69.0, 86.0, 92.0, 106.0, 122.0, 134.0, 147.0, 160.0, 172.0, 184.0, 192.0, 210.0, 218.0, 231.0, 247.0, 258.0, 264.0, 272.0, 287.0, 306.0, 319.0, 330.0, 342.0, 353.0, 369.0, 376.0, 385.0, 392.0, 401.0, 407.0, 420.0, 423.0, 430.0, 438.0, 447.0, 454.0, 461.0, 467.0, 472.0, 482.0, 487.0, 496.0, 502.0, 508.0, 516.0, 528.0, 536.0, 543.0, 549.0, 558.0, 568.0, 574.0, 579.0, 584.0, 586.0, 589.0, 597.0, 602.0, 611.0, 615.0, 624.0, 630.0, 635.0, 644.0, 649.0, 653.0, 657.0, 663.0, 670.0, 674.0, 680.0, 685.0, 690.0, 694.0, 697.0, 701.0, 707.0, 711.0, 718.0, 721.0, 723.0, 725.0, 728.0, 732.0, 736.0, 742.0, 744.0, 749.0, 753.0, 757.0, 759.0, 761.0, 766.0, 769.0, 772.0, 775.0, 782.0, 785.0, 786.0, 790.0, 796.0, 798.0, 800.0, 803.0, 805.0, 808.0, 810.0, 811.0, 814.0, 817.0, 821.0, 825.0, 826.0, 827.0, 830.0, 833.0, 833.0, 836.0, 837.0, 840.0, 844.0, 845.0, 849.0, 851.0, 853.0, 854.0, 857.0, 858.0, 862.0, 864.0, 864.0, 866.0, 868.0, 872.0, 873.0, 873.0, 875.0, 875.0, 876.0, 879.0, 880.0, 882.0, 883.0, 884.0, 886.0, 888.0, 888.0, 892.0, 892.0, 895.0, 898.0, 898.0, 902.0, 903.0, 905.0, 905.0, 906.0, 911.0, 911.0, 911.0, 912.0, 912.0, 914.0, 914.0, 915.0, 917.0, 921.0, 921.0, 921.0, 922.0, 928.0, 929.0, 931.0, 932.0, 933.0, 933.0, 933.0, 933.0, 934.0, 934.0, 936.0, 939.0, 939.0, 939.0, 940.0, 943.0, 944.0, 944.0, 945.0, 946.0, 947.0, 950.0, 954.0, 956.0, 957.0, 958.0, 959.0, 959.0, 959.0, 959.0, 959.0, 960.0, 960.0, 961.0, 961.0, 962.0, 962.0, 962.0, 962.0, 964.0, 964.0, 964.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 965.0, 966.0, 966.0, 966.0, 967.0, 967.0, 967.0, 967.0, 967.0, 967.0, 967.0, 967.0, 968.0, 968.0, 970.0, 970.0, 970.0, 970.0, 970.0, 970.0, 971.0, 971.0, 971.0, 972.0, 972.0, 972.0, 972.0, 973.0, 974.0, 974.0, 974.0, 974.0, 974.0, 974.0, 974.0, 974.0, 974.0, 975.0, 975.0, 975.0, 976.0, 976.0, 976.0, 976.0, 976.0, 978.0, 978.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 980.0, 980.0, 981.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 983.0, 983.0, 983.0, 983.0, 984.0, 986.0, 986.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 997.0, 997.0, 997.0, 995.0, 995.0, 994.0, 992.0, 986.0, 977.0, 969.0, 953.0, 931.0, 888.0, 833.0, 781.0, 715.0, 618.0, 516.0, 414.0, 314.0, 236.0, 169.0, 122.0, 81.0, 58.0, 39.0, 24.0, 18.0, 14.0, 12.0, 8.0, 7.0, 4.0, 3.0, 3.0, 3.0, 3.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 2.0, 3.0, 6.0, 7.0, 9.0, 12.0, 20.0, 35.0, 55.0, 78.0, 106.0, 150.0, 196.0, 268.0, 356.0, 438.0, 530.0, 609.0, 672.0, 744.0, 768.0, 800.0, 823.0, 843.0, 848.0, 850.0, 845.0, 842.0, 829.0, 812.0, 802.0, 789.0, 776.0, 763.0, 748.0, 730.0, 716.0, 704.0, 696.0, 687.0, 670.0, 659.0, 653.0, 645.0, 639.0, 633.0, 620.0, 613.0, 606.0, 599.0, 585.0, 581.0, 578.0, 573.0, 562.0, 556.0, 546.0, 540.0, 536.0, 528.0, 520.0, 509.0, 499.0, 492.0, 485.0, 476.0, 471.0, 466.0, 461.0, 458.0, 445.0, 435.0, 426.0, 422.0, 413.0, 409.0, 399.0, 391.0, 385.0, 381.0, 374.0, 369.0, 364.0, 356.0, 349.0, 342.0, 339.0, 337.0, 330.0, 322.0, 316.0, 309.0, 309.0, 303.0, 299.0, 287.0, 283.0, 277.0, 271.0, 268.0, 264.0, 262.0, 261.0, 257.0, 257.0, 255.0, 254.0, 248.0, 242.0, 237.0, 233.0, 231.0, 228.0, 223.0, 221.0, 216.0, 214.0, 208.0, 206.0, 204.0, 202.0, 201.0, 200.0, 198.0, 195.0, 194.0, 191.0, 185.0, 184.0, 180.0, 176.0, 176.0, 175.0, 172.0, 171.0, 171.0, 170.0, 168.0, 164.0, 162.0, 162.0, 160.0, 158.0, 157.0, 156.0, 156.0, 154.0, 152.0, 151.0, 149.0, 147.0, 146.0, 145.0, 144.0, 144.0, 141.0, 137.0, 136.0, 133.0, 128.0, 126.0, 125.0, 123.0, 123.0, 122.0, 120.0, 119.0, 117.0, 117.0, 114.0, 113.0, 111.0, 110.0, 108.0, 105.0, 104.0, 104.0, 104.0, 101.0, 99.0, 99.0, 97.0, 96.0, 94.0, 94.0, 93.0, 92.0, 89.0, 88.0, 87.0, 87.0, 85.0, 84.0, 84.0, 81.0, 79.0, 76.0, 76.0, 76.0, 75.0, 74.0, 73.0, 71.0, 71.0, 71.0, 67.0, 64.0, 64.0, 63.0, 62.0, 62.0, 61.0, 59.0, 57.0, 56.0, 54.0, 54.0, 54.0, 54.0, 53.0, 53.0, 52.0, 52.0, 51.0, 48.0, 48.0, 47.0, 45.0, 45.0, 44.0, 44.0, 43.0, 43.0, 43.0, 43.0, 42.0, 41.0, 40.0, 40.0, 40.0, 40.0, 40.0, 40.0, 39.0, 38.0, 37.0, 36.0, 35.0, 35.0, 35.0, 35.0, 34.0, 33.0, 33.0, 31.0, 31.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 29.0, 28.0, 28.0, 28.0, 27.0, 26.0, 25.0, 25.0, 25.0, 24.0, 24.0, 23.0, 23.0, 23.0, 23.0, 22.0, 22.0, 21.0, 21.0, 20.0, 19.0, 19.0, 19.0, 19.0, 18.0, 17.0, 17.0, 17.0, 17.0, 17.0, 16.0, 16.0, 16.0, 15.0, 15.0, 15.0, 14.0, 14.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 5.0, 7.0, 13.0, 13.0, 19.0, 27.0, 37.0, 47.0, 61.0, 73.0, 87.0, 95.0, 100.0, 106.0, 118.0, 127.0, 140.0, 147.0, 162.0, 179.0, 191.0, 205.0, 221.0, 234.0, 249.0, 268.0, 284.0, 296.0, 304.0, 313.0, 330.0, 341.0, 347.0, 355.0, 361.0, 367.0, 380.0, 387.0, 394.0, 401.0, 415.0, 419.0, 422.0, 427.0, 438.0, 444.0, 454.0, 460.0, 464.0, 472.0, 480.0, 491.0, 501.0, 508.0, 515.0, 524.0, 529.0, 534.0, 539.0, 542.0, 555.0, 565.0, 574.0, 578.0, 587.0, 591.0, 601.0, 609.0, 615.0, 619.0, 626.0, 631.0, 636.0, 644.0, 651.0, 658.0, 661.0, 663.0, 670.0, 678.0, 684.0, 691.0, 691.0, 697.0, 701.0, 713.0, 717.0, 723.0, 729.0, 732.0, 736.0, 738.0, 739.0, 743.0, 743.0, 745.0, 746.0, 752.0, 758.0, 763.0, 767.0, 769.0, 772.0, 777.0, 779.0, 784.0, 786.0, 792.0, 794.0, 796.0, 798.0, 799.0, 800.0, 802.0, 805.0, 806.0, 809.0, 815.0, 816.0, 820.0, 824.0, 824.0, 825.0, 828.0, 829.0, 829.0, 830.0, 832.0, 836.0, 838.0, 838.0, 840.0, 842.0, 843.0, 844.0, 844.0, 846.0, 848.0, 849.0, 851.0, 853.0, 854.0, 855.0, 856.0, 856.0, 859.0, 863.0, 864.0, 867.0, 872.0, 874.0, 875.0, 877.0, 877.0, 878.0, 880.0, 881.0, 883.0, 883.0, 886.0, 887.0, 889.0, 890.0, 892.0, 895.0, 896.0, 896.0, 896.0, 899.0, 901.0, 901.0, 903.0, 904.0, 906.0, 906.0, 907.0, 908.0, 911.0, 912.0, 913.0, 913.0, 915.0, 916.0, 916.0, 919.0, 921.0, 924.0, 924.0, 924.0, 925.0, 926.0, 927.0, 929.0, 929.0, 929.0, 933.0, 936.0, 936.0, 937.0, 938.0, 938.0, 939.0, 941.0, 943.0, 944.0, 946.0, 946.0, 946.0, 946.0, 947.0, 947.0, 948.0, 948.0, 949.0, 952.0, 952.0, 953.0, 955.0, 955.0, 956.0, 956.0, 957.0, 957.0, 957.0, 957.0, 958.0, 959.0, 960.0, 960.0, 960.0, 960.0, 960.0, 960.0, 961.0, 962.0, 963.0, 964.0, 965.0, 965.0, 965.0, 965.0, 966.0, 967.0, 967.0, 969.0, 969.0, 970.0, 970.0, 970.0, 970.0, 970.0, 970.0, 970.0, 970.0, 970.0, 970.0, 971.0, 972.0, 972.0, 972.0, 973.0, 974.0, 975.0, 975.0, 975.0, 976.0, 976.0, 977.0, 977.0, 977.0, 977.0, 978.0, 978.0, 979.0, 979.0, 980.0, 981.0, 981.0, 981.0, 981.0, 982.0, 983.0, 983.0, 983.0, 983.0, 983.0, 984.0, 984.0, 984.0, 985.0, 985.0, 985.0, 986.0, 986.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 998.0, 997.0, 994.0, 993.0, 991.0, 988.0, 980.0, 965.0, 944.0, 920.0, 889.0, 843.0, 791.0, 719.0, 625.0, 535.0, 433.0, 344.0, 267.0, 183.0, 145.0, 105.0, 77.0, 51.0, 34.0, 23.0, 15.0, 11.0, 9.0, 9.0, 7.0, 6.0, 3.0, 3.0, 3.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 5.0, 7.0, 9.0, 12.0, 23.0, 33.0, 59.0, 81.0, 138.0, 191.0, 261.0, 366.0, 466.0, 578.0, 657.0, 731.0, 773.0, 804.0, 827.0, 844.0, 857.0, 850.0, 851.0, 842.0, 835.0, 825.0, 816.0, 812.0, 794.0, 778.0, 769.0, 753.0, 743.0, 732.0, 718.0, 704.0, 696.0, 690.0, 686.0, 678.0, 663.0, 648.0, 639.0, 626.0, 620.0, 607.0, 599.0, 590.0, 583.0, 576.0, 565.0, 556.0, 545.0, 541.0, 530.0, 523.0, 517.0, 511.0, 504.0, 494.0, 485.0, 480.0, 471.0, 468.0, 462.0, 456.0, 451.0, 448.0, 441.0, 431.0, 426.0, 417.0, 404.0, 393.0, 389.0, 386.0, 381.0, 373.0, 367.0, 364.0, 355.0, 351.0, 349.0, 344.0, 336.0, 331.0, 327.0, 324.0, 313.0, 309.0, 304.0, 297.0, 294.0, 288.0, 283.0, 279.0, 275.0, 273.0, 266.0, 263.0, 260.0, 257.0, 253.0, 248.0, 247.0, 245.0, 243.0, 242.0, 237.0, 233.0, 232.0, 232.0, 227.0, 226.0, 220.0, 220.0, 217.0, 214.0, 208.0, 205.0, 203.0, 201.0, 201.0, 199.0, 195.0, 192.0, 189.0, 188.0, 183.0, 179.0, 176.0, 174.0, 171.0, 170.0, 170.0, 166.0, 165.0, 163.0, 159.0, 157.0, 155.0, 150.0, 146.0, 142.0, 137.0, 133.0, 130.0, 130.0, 128.0, 127.0, 123.0, 121.0, 120.0, 117.0, 116.0, 116.0, 113.0, 113.0, 113.0, 111.0, 110.0, 108.0, 105.0, 104.0, 103.0, 102.0, 96.0, 93.0, 92.0, 90.0, 90.0, 90.0, 90.0, 86.0, 86.0, 86.0, 85.0, 84.0, 84.0, 82.0, 81.0, 79.0, 77.0, 76.0, 76.0, 76.0, 74.0, 74.0, 73.0, 72.0, 70.0, 69.0, 68.0, 68.0, 65.0, 64.0, 64.0, 62.0, 61.0, 61.0, 61.0, 59.0, 57.0, 57.0, 56.0, 56.0, 55.0, 55.0, 53.0, 52.0, 51.0, 51.0, 49.0, 49.0, 48.0, 47.0, 46.0, 46.0, 46.0, 46.0, 45.0, 45.0, 44.0, 44.0, 42.0, 41.0, 40.0, 40.0, 39.0, 38.0, 38.0, 38.0, 38.0, 38.0, 38.0, 38.0, 38.0, 38.0, 38.0, 37.0, 35.0, 35.0, 34.0, 34.0, 34.0, 34.0, 34.0, 34.0, 33.0, 33.0, 33.0, 33.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 31.0, 30.0, 29.0, 28.0, 28.0, 27.0, 26.0, 26.0, 26.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 24.0, 23.0, 23.0, 22.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 20.0, 20.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 19.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 17.0, 17.0, 17.0, 16.0, 16.0, 16.0, 16.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 10.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 3.0, 6.0, 10.0, 18.0, 22.0, 34.0, 38.0, 46.0, 54.0, 68.0, 81.0, 91.0, 115.0, 125.0, 141.0, 152.0, 165.0, 178.0, 186.0, 205.0, 221.0, 230.0, 246.0, 257.0, 268.0, 282.0, 296.0, 304.0, 310.0, 314.0, 322.0, 337.0, 352.0, 361.0, 374.0, 380.0, 393.0, 401.0, 410.0, 417.0, 424.0, 435.0, 444.0, 455.0, 459.0, 470.0, 477.0, 483.0, 489.0, 496.0, 506.0, 515.0, 520.0, 529.0, 532.0, 538.0, 544.0, 549.0, 552.0, 559.0, 569.0, 574.0, 583.0, 596.0, 607.0, 611.0, 614.0, 619.0, 627.0, 633.0, 636.0, 645.0, 649.0, 651.0, 656.0, 664.0, 669.0, 673.0, 676.0, 687.0, 691.0, 696.0, 703.0, 706.0, 712.0, 717.0, 721.0, 725.0, 727.0, 734.0, 737.0, 740.0, 743.0, 747.0, 752.0, 753.0, 755.0, 757.0, 758.0, 763.0, 767.0, 768.0, 768.0, 773.0, 774.0, 780.0, 780.0, 783.0, 786.0, 792.0, 795.0, 797.0, 799.0, 799.0, 801.0, 805.0, 808.0, 811.0, 812.0, 817.0, 821.0, 824.0, 826.0, 829.0, 830.0, 830.0, 834.0, 835.0, 837.0, 841.0, 843.0, 845.0, 850.0, 854.0, 858.0, 863.0, 867.0, 870.0, 870.0, 872.0, 873.0, 877.0, 879.0, 880.0, 883.0, 884.0, 884.0, 887.0, 887.0, 887.0, 889.0, 890.0, 892.0, 895.0, 896.0, 897.0, 898.0, 904.0, 907.0, 908.0, 910.0, 910.0, 910.0, 910.0, 914.0, 914.0, 914.0, 915.0, 916.0, 916.0, 918.0, 919.0, 921.0, 923.0, 924.0, 924.0, 924.0, 926.0, 926.0, 927.0, 928.0, 930.0, 931.0, 932.0, 932.0, 935.0, 936.0, 936.0, 938.0, 939.0, 939.0, 939.0, 941.0, 943.0, 943.0, 944.0, 944.0, 945.0, 945.0, 947.0, 948.0, 949.0, 949.0, 951.0, 951.0, 952.0, 953.0, 954.0, 954.0, 954.0, 954.0, 955.0, 955.0, 956.0, 956.0, 958.0, 959.0, 960.0, 960.0, 961.0, 962.0, 962.0, 962.0, 962.0, 962.0, 962.0, 962.0, 962.0, 962.0, 962.0, 963.0, 965.0, 965.0, 966.0, 966.0, 966.0, 966.0, 966.0, 966.0, 967.0, 967.0, 967.0, 967.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 969.0, 970.0, 971.0, 972.0, 972.0, 973.0, 974.0, 974.0, 974.0, 975.0, 975.0, 975.0, 975.0, 975.0, 975.0, 975.0, 975.0, 975.0, 976.0, 977.0, 977.0, 978.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 980.0, 980.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 981.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 983.0, 983.0, 983.0, 984.0, 984.0, 984.0, 984.0, 986.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 990.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 995.0, 993.0, 991.0, 988.0, 977.0, 967.0, 940.0, 918.0, 861.0, 806.0, 733.0, 624.0, 516.0, 400.0, 309.0, 231.0, 181.0, 142.0, 105.0, 75.0, 52.0, 35.0, 24.0, 17.0, 13.0, 10.0, 6.0, 2.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 4.0, 6.0, 11.0, 17.0, 26.0, 34.0, 50.0, 72.0, 105.0, 163.0, 220.0, 286.0, 365.0, 461.0, 560.0, 653.0, 720.0, 766.0, 798.0, 832.0, 851.0, 862.0, 872.0, 865.0, 863.0, 854.0, 849.0, 840.0, 828.0, 819.0, 808.0, 795.0, 782.0, 770.0, 756.0, 747.0, 730.0, 721.0, 709.0, 700.0, 688.0, 677.0, 670.0, 661.0, 651.0, 642.0, 634.0, 622.0, 613.0, 604.0, 597.0, 589.0, 580.0, 569.0, 558.0, 549.0, 539.0, 533.0, 526.0, 520.0, 510.0, 501.0, 496.0, 494.0, 483.0, 476.0, 462.0, 454.0, 448.0, 442.0, 437.0, 429.0, 421.0, 418.0, 414.0, 411.0, 410.0, 407.0, 400.0, 394.0, 389.0, 384.0, 379.0, 373.0, 365.0, 357.0, 349.0, 343.0, 339.0, 331.0, 327.0, 321.0, 315.0, 310.0, 307.0, 307.0, 301.0, 296.0, 293.0, 287.0, 283.0, 279.0, 278.0, 273.0, 272.0, 269.0, 264.0, 261.0, 256.0, 254.0, 251.0, 249.0, 244.0, 241.0, 235.0, 233.0, 228.0, 226.0, 221.0, 219.0, 215.0, 214.0, 213.0, 211.0, 209.0, 207.0, 204.0, 199.0, 194.0, 192.0, 188.0, 188.0, 187.0, 183.0, 182.0, 180.0, 179.0, 176.0, 174.0, 172.0, 169.0, 165.0, 162.0, 159.0, 158.0, 155.0, 151.0, 148.0, 146.0, 143.0, 143.0, 143.0, 143.0, 138.0, 135.0, 133.0, 133.0, 132.0, 129.0, 129.0, 127.0, 124.0, 124.0, 124.0, 123.0, 120.0, 120.0, 119.0, 118.0, 113.0, 110.0, 107.0, 104.0, 101.0, 100.0, 98.0, 95.0, 93.0, 91.0, 89.0, 89.0, 86.0, 85.0, 82.0, 81.0, 80.0, 80.0, 79.0, 78.0, 77.0, 77.0, 75.0, 75.0, 75.0, 75.0, 73.0, 73.0, 73.0, 72.0, 70.0, 69.0, 68.0, 67.0, 66.0, 66.0, 66.0, 65.0, 64.0, 62.0, 61.0, 61.0, 61.0, 60.0, 60.0, 59.0, 56.0, 54.0, 52.0, 50.0, 48.0, 47.0, 47.0, 45.0, 41.0, 39.0, 38.0, 38.0, 38.0, 38.0, 37.0, 36.0, 35.0, 33.0, 33.0, 33.0, 33.0, 33.0, 32.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 31.0, 30.0, 30.0, 30.0, 29.0, 28.0, 28.0, 28.0, 27.0, 27.0, 26.0, 26.0, 26.0, 26.0, 24.0, 23.0, 23.0, 22.0, 22.0, 22.0, 21.0, 21.0, 21.0, 21.0, 19.0, 19.0, 19.0, 19.0, 18.0, 17.0, 17.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 3.0, 4.0, 5.0, 8.0, 14.0, 18.0, 22.0, 27.0, 32.0, 39.0, 52.0, 65.0, 74.0, 85.0, 96.0, 105.0, 118.0, 129.0, 140.0, 149.0, 158.0, 171.0, 180.0, 191.0, 204.0, 217.0, 229.0, 243.0, 252.0, 269.0, 278.0, 290.0, 299.0, 312.0, 323.0, 330.0, 339.0, 349.0, 358.0, 366.0, 378.0, 387.0, 396.0, 403.0, 411.0, 420.0, 431.0, 442.0, 451.0, 461.0, 467.0, 474.0, 480.0, 490.0, 499.0, 504.0, 506.0, 517.0, 524.0, 538.0, 546.0, 552.0, 558.0, 563.0, 571.0, 579.0, 582.0, 586.0, 589.0, 590.0, 593.0, 600.0, 606.0, 611.0, 616.0, 621.0, 627.0, 635.0, 643.0, 651.0, 657.0, 661.0, 669.0, 673.0, 679.0, 685.0, 690.0, 693.0, 693.0, 699.0, 704.0, 707.0, 713.0, 717.0, 721.0, 722.0, 727.0, 728.0, 731.0, 736.0, 739.0, 744.0, 746.0, 749.0, 751.0, 756.0, 759.0, 765.0, 767.0, 772.0, 774.0, 779.0, 781.0, 785.0, 786.0, 787.0, 789.0, 791.0, 793.0, 796.0, 801.0, 806.0, 808.0, 812.0, 812.0, 813.0, 817.0, 818.0, 820.0, 821.0, 824.0, 826.0, 828.0, 831.0, 835.0, 838.0, 841.0, 842.0, 845.0, 849.0, 852.0, 854.0, 857.0, 857.0, 857.0, 857.0, 862.0, 865.0, 867.0, 867.0, 868.0, 871.0, 871.0, 873.0, 876.0, 876.0, 876.0, 877.0, 880.0, 880.0, 881.0, 882.0, 887.0, 890.0, 893.0, 896.0, 899.0, 900.0, 902.0, 905.0, 907.0, 909.0, 911.0, 911.0, 914.0, 915.0, 918.0, 919.0, 920.0, 920.0, 921.0, 922.0, 923.0, 923.0, 925.0, 925.0, 925.0, 925.0, 927.0, 927.0, 927.0, 928.0, 930.0, 931.0, 932.0, 933.0, 934.0, 934.0, 934.0, 935.0, 936.0, 938.0, 939.0, 939.0, 939.0, 940.0, 940.0, 941.0, 944.0, 946.0, 948.0, 950.0, 952.0, 953.0, 953.0, 955.0, 959.0, 961.0, 962.0, 962.0, 962.0, 962.0, 963.0, 964.0, 965.0, 967.0, 967.0, 967.0, 967.0, 967.0, 968.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 969.0, 970.0, 970.0, 970.0, 971.0, 972.0, 972.0, 972.0, 973.0, 973.0, 974.0, 974.0, 974.0, 974.0, 976.0, 977.0, 977.0, 978.0, 978.0, 978.0, 979.0, 979.0, 979.0, 979.0, 981.0, 981.0, 981.0, 981.0, 982.0, 983.0, 983.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 985.0, 985.0, 985.0, 985.0, 985.0, 985.0, 985.0, 985.0, 985.0, 985.0, 986.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 999.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 996.0, 994.0, 989.0, 983.0, 973.0, 964.0, 947.0, 925.0, 891.0, 832.0, 772.0, 700.0, 617.0, 517.0, 413.0, 315.0, 241.0, 182.0, 137.0, 94.0, 64.0, 42.0, 23.0, 17.0, 8.0, 6.0, 2.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 2.0, 3.0, 3.0, 5.0, 5.0, 7.0, 10.0, 12.0, 15.0, 19.0, 28.0, 34.0, 50.0, 67.0, 96.0, 130.0, 178.0, 246.0, 322.0, 399.0, 478.0, 561.0, 649.0, 723.0, 776.0, 810.0, 830.0, 842.0, 843.0, 844.0, 835.0, 829.0, 818.0, 809.0, 798.0, 793.0, 784.0, 773.0, 767.0, 757.0, 750.0, 743.0, 729.0, 721.0, 704.0, 694.0, 682.0, 668.0, 657.0, 646.0, 633.0, 625.0, 618.0, 610.0, 601.0, 593.0, 586.0, 577.0, 563.0, 553.0, 547.0, 534.0, 524.0, 517.0, 506.0, 501.0, 496.0, 489.0, 481.0, 474.0, 467.0, 460.0, 456.0, 453.0, 446.0, 440.0, 429.0, 424.0, 417.0, 413.0, 409.0, 403.0, 400.0, 397.0, 390.0, 382.0, 376.0, 370.0, 365.0, 363.0, 357.0, 349.0, 348.0, 345.0, 336.0, 335.0, 326.0, 317.0, 308.0, 301.0, 296.0, 291.0, 284.0, 282.0, 275.0, 275.0, 271.0, 267.0, 265.0, 257.0, 252.0, 246.0, 241.0, 236.0, 228.0, 226.0, 223.0, 221.0, 216.0, 214.0, 211.0, 207.0, 203.0, 203.0, 200.0, 200.0, 197.0, 193.0, 191.0, 190.0, 189.0, 189.0, 186.0, 184.0, 180.0, 180.0, 178.0, 172.0, 167.0, 163.0, 160.0, 159.0, 156.0, 151.0, 148.0, 146.0, 144.0, 142.0, 140.0, 137.0, 137.0, 136.0, 134.0, 134.0, 131.0, 130.0, 129.0, 128.0, 128.0, 125.0, 124.0, 123.0, 121.0, 120.0, 118.0, 116.0, 115.0, 114.0, 110.0, 108.0, 105.0, 101.0, 100.0, 100.0, 100.0, 96.0, 95.0, 95.0, 94.0, 90.0, 84.0, 83.0, 80.0, 79.0, 78.0, 76.0, 74.0, 74.0, 73.0, 71.0, 71.0, 71.0, 70.0, 70.0, 68.0, 65.0, 63.0, 63.0, 60.0, 59.0, 58.0, 58.0, 58.0, 57.0, 56.0, 56.0, 56.0, 55.0, 54.0, 54.0, 54.0, 54.0, 53.0, 53.0, 52.0, 52.0, 50.0, 50.0, 50.0, 50.0, 49.0, 47.0, 45.0, 45.0, 44.0, 44.0, 44.0, 44.0, 44.0, 44.0, 44.0, 43.0, 42.0, 41.0, 41.0, 40.0, 38.0, 37.0, 37.0, 37.0, 35.0, 34.0, 34.0, 34.0, 33.0, 33.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 30.0, 28.0, 28.0, 28.0, 25.0, 25.0, 24.0, 24.0, 24.0, 23.0, 23.0, 22.0, 20.0, 18.0, 17.0, 15.0, 15.0, 15.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 13.0, 13.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 4.0, 4.0, 5.0, 7.0, 7.0, 10.0, 14.0, 18.0, 25.0, 34.0, 43.0, 46.0, 56.0, 70.0, 80.0, 97.0, 107.0, 122.0, 131.0, 146.0, 157.0, 170.0, 179.0, 197.0, 203.0, 213.0, 224.0, 231.0, 242.0, 249.0, 256.0, 270.0, 278.0, 295.0, 306.0, 318.0, 332.0, 343.0, 354.0, 367.0, 375.0, 382.0, 390.0, 399.0, 407.0, 414.0, 423.0, 437.0, 447.0, 453.0, 466.0, 476.0, 483.0, 494.0, 499.0, 504.0, 511.0, 519.0, 526.0, 533.0, 540.0, 544.0, 547.0, 554.0, 560.0, 571.0, 576.0, 583.0, 587.0, 591.0, 597.0, 600.0, 603.0, 610.0, 618.0, 624.0, 630.0, 635.0, 637.0, 643.0, 651.0, 652.0, 655.0, 664.0, 665.0, 674.0, 683.0, 692.0, 699.0, 704.0, 709.0, 716.0, 718.0, 725.0, 725.0, 729.0, 733.0, 735.0, 743.0, 748.0, 754.0, 759.0, 764.0, 772.0, 774.0, 777.0, 779.0, 784.0, 786.0, 789.0, 793.0, 797.0, 797.0, 800.0, 800.0, 803.0, 807.0, 809.0, 810.0, 811.0, 811.0, 814.0, 816.0, 820.0, 820.0, 822.0, 828.0, 833.0, 837.0, 840.0, 841.0, 844.0, 849.0, 852.0, 854.0, 856.0, 858.0, 860.0, 863.0, 863.0, 864.0, 866.0, 866.0, 869.0, 870.0, 871.0, 872.0, 872.0, 875.0, 876.0, 877.0, 879.0, 880.0, 882.0, 884.0, 885.0, 886.0, 890.0, 892.0, 895.0, 899.0, 900.0, 900.0, 900.0, 904.0, 905.0, 905.0, 906.0, 910.0, 916.0, 917.0, 920.0, 921.0, 922.0, 924.0, 926.0, 926.0, 927.0, 929.0, 929.0, 929.0, 930.0, 930.0, 932.0, 935.0, 937.0, 937.0, 940.0, 941.0, 942.0, 942.0, 942.0, 943.0, 944.0, 944.0, 944.0, 945.0, 946.0, 946.0, 946.0, 946.0, 947.0, 947.0, 948.0, 948.0, 950.0, 950.0, 950.0, 950.0, 951.0, 953.0, 955.0, 955.0, 956.0, 956.0, 956.0, 956.0, 956.0, 956.0, 956.0, 957.0, 958.0, 959.0, 959.0, 960.0, 962.0, 963.0, 963.0, 963.0, 965.0, 966.0, 966.0, 966.0, 967.0, 967.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 968.0, 970.0, 972.0, 972.0, 972.0, 975.0, 975.0, 976.0, 976.0, 976.0, 977.0, 977.0, 978.0, 980.0, 982.0, 983.0, 985.0, 985.0, 985.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 987.0, 987.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 998.0, 997.0, 997.0, 994.0, 993.0, 991.0, 988.0, 986.0, 983.0, 979.0, 970.0, 962.0, 946.0, 928.0, 897.0, 863.0, 812.0, 740.0, 660.0, 576.0, 488.0, 396.0, 305.0, 221.0, 154.0, 110.0, 73.0, 51.0, 35.0, 25.0, 19.0, 14.0, 12.0, 12.0, 5.0, 4.0, 3.0, 3.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 2.0, 2.0, 2.0, 4.0, 7.0, 8.0, 11.0, 15.0, 26.0, 35.0, 47.0, 68.0, 94.0, 139.0, 180.0, 255.0, 348.0, 429.0, 523.0, 584.0, 686.0, 741.0, 785.0, 800.0, 821.0, 830.0, 839.0, 841.0, 840.0, 829.0, 824.0, 812.0, 803.0, 793.0, 781.0, 767.0, 756.0, 745.0, 736.0, 730.0, 719.0, 711.0, 700.0, 691.0, 677.0, 669.0, 662.0, 652.0, 644.0, 634.0, 626.0, 618.0, 608.0, 598.0, 587.0, 582.0, 569.0, 557.0, 548.0, 535.0, 529.0, 526.0, 520.0, 512.0, 502.0, 492.0, 484.0, 475.0, 468.0, 459.0, 451.0, 444.0, 438.0, 428.0, 424.0, 419.0, 412.0, 406.0, 404.0, 400.0, 395.0, 394.0, 388.0, 386.0, 381.0, 375.0, 370.0, 361.0, 353.0, 349.0, 346.0, 343.0, 338.0, 333.0, 330.0, 325.0, 324.0, 322.0, 321.0, 318.0, 314.0, 311.0, 304.0, 300.0, 294.0, 288.0, 284.0, 280.0, 274.0, 273.0, 271.0, 268.0, 263.0, 259.0, 254.0, 249.0, 245.0, 241.0, 237.0, 236.0, 235.0, 230.0, 229.0, 228.0, 226.0, 220.0, 215.0, 214.0, 209.0, 207.0, 201.0, 200.0, 197.0, 189.0, 186.0, 182.0, 179.0, 178.0, 174.0, 171.0, 168.0, 167.0, 166.0, 166.0, 164.0, 163.0, 158.0, 156.0, 153.0, 149.0, 146.0, 144.0, 143.0, 143.0, 141.0, 141.0, 137.0, 135.0, 133.0, 132.0, 130.0, 130.0, 129.0, 128.0, 126.0, 125.0, 124.0, 123.0, 120.0, 117.0, 117.0, 116.0, 114.0, 113.0, 111.0, 109.0, 107.0, 104.0, 103.0, 101.0, 100.0, 99.0, 97.0, 97.0, 96.0, 94.0, 94.0, 92.0, 92.0, 90.0, 90.0, 88.0, 87.0, 87.0, 87.0, 87.0, 86.0, 84.0, 83.0, 82.0, 82.0, 81.0, 79.0, 77.0, 73.0, 72.0, 72.0, 71.0, 68.0, 67.0, 67.0, 67.0, 67.0, 65.0, 64.0, 63.0, 61.0, 59.0, 57.0, 57.0, 57.0, 57.0, 55.0, 54.0, 54.0, 52.0, 52.0, 50.0, 48.0, 47.0, 46.0, 46.0, 45.0, 44.0, 44.0, 43.0, 41.0, 41.0, 41.0, 37.0, 37.0, 36.0, 35.0, 34.0, 34.0, 34.0, 34.0, 34.0, 34.0, 33.0, 33.0, 33.0, 32.0, 32.0, 32.0, 32.0, 31.0, 30.0, 30.0, 29.0, 28.0, 28.0, 28.0, 28.0, 27.0, 27.0, 26.0, 24.0, 24.0, 23.0, 23.0, 22.0, 22.0, 22.0, 21.0, 20.0, 20.0, 20.0, 20.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 17.0, 17.0, 17.0, 17.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 15.0, 15.0, 15.0, 14.0, 14.0, 14.0, 14.0, 14.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 2.0, 4.0, 5.0, 6.0, 7.0, 9.0, 13.0, 21.0, 29.0, 42.0, 50.0, 65.0, 73.0, 84.0, 96.0, 112.0, 125.0, 138.0, 145.0, 160.0, 167.0, 180.0, 192.0, 205.0, 219.0, 233.0, 244.0, 255.0, 264.0, 270.0, 281.0, 289.0, 300.0, 309.0, 323.0, 331.0, 338.0, 348.0, 356.0, 366.0, 374.0, 382.0, 392.0, 402.0, 413.0, 418.0, 431.0, 443.0, 452.0, 465.0, 471.0, 474.0, 480.0, 488.0, 498.0, 508.0, 516.0, 525.0, 532.0, 541.0, 549.0, 556.0, 562.0, 572.0, 576.0, 581.0, 588.0, 594.0, 596.0, 600.0, 605.0, 606.0, 612.0, 614.0, 619.0, 625.0, 630.0, 639.0, 647.0, 651.0, 654.0, 657.0, 662.0, 667.0, 670.0, 675.0, 676.0, 678.0, 679.0, 682.0, 686.0, 689.0, 696.0, 700.0, 706.0, 712.0, 716.0, 720.0, 726.0, 727.0, 729.0, 732.0, 737.0, 741.0, 746.0, 751.0, 755.0, 759.0, 763.0, 764.0, 765.0, 770.0, 771.0, 772.0, 774.0, 780.0, 785.0, 786.0, 791.0, 793.0, 799.0, 800.0, 803.0, 811.0, 814.0, 818.0, 821.0, 822.0, 826.0, 829.0, 832.0, 833.0, 834.0, 834.0, 836.0, 837.0, 842.0, 844.0, 847.0, 851.0, 854.0, 856.0, 857.0, 857.0, 859.0, 859.0, 863.0, 865.0, 867.0, 868.0, 870.0, 870.0, 871.0, 872.0, 874.0, 875.0, 876.0, 877.0, 880.0, 883.0, 883.0, 884.0, 886.0, 887.0, 889.0, 891.0, 893.0, 896.0, 897.0, 899.0, 900.0, 901.0, 903.0, 903.0, 904.0, 906.0, 906.0, 908.0, 908.0, 910.0, 910.0, 912.0, 913.0, 913.0, 913.0, 913.0, 914.0, 916.0, 917.0, 918.0, 918.0, 919.0, 921.0, 923.0, 927.0, 928.0, 928.0, 929.0, 932.0, 933.0, 933.0, 933.0, 933.0, 935.0, 936.0, 937.0, 939.0, 941.0, 943.0, 943.0, 943.0, 943.0, 945.0, 946.0, 946.0, 948.0, 948.0, 950.0, 952.0, 953.0, 954.0, 954.0, 955.0, 956.0, 956.0, 957.0, 959.0, 959.0, 959.0, 963.0, 963.0, 964.0, 965.0, 966.0, 966.0, 966.0, 966.0, 966.0, 966.0, 967.0, 967.0, 967.0, 968.0, 968.0, 968.0, 968.0, 969.0, 970.0, 970.0, 971.0, 972.0, 972.0, 972.0, 972.0, 973.0, 973.0, 974.0, 976.0, 976.0, 977.0, 977.0, 978.0, 978.0, 978.0, 979.0, 980.0, 980.0, 980.0, 980.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 983.0, 983.0, 983.0, 983.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 984.0, 985.0, 985.0, 985.0, 986.0, 986.0, 986.0, 986.0, 986.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 998.0, 998.0, 998.0, 996.0, 993.0, 992.0, 989.0, 985.0, 973.0, 963.0, 951.0, 928.0, 901.0, 855.0, 813.0, 736.0, 639.0, 550.0, 448.0, 374.0, 264.0, 194.0, 142.0, 116.0, 83.0, 58.0, 36.0, 21.0, 15.0, 11.0, 9.0, 8.0, 5.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 3.0, 5.0, 8.0, 11.0, 12.0, 16.0, 21.0, 38.0, 47.0, 65.0, 92.0, 136.0, 188.0, 258.0, 342.0, 440.0, 509.0, 583.0, 678.0, 757.0, 793.0, 834.0, 859.0, 857.0, 866.0, 862.0, 855.0, 841.0, 825.0, 811.0, 799.0, 789.0, 780.0, 771.0, 763.0, 750.0, 737.0, 723.0, 709.0, 695.0, 687.0, 671.0, 659.0, 646.0, 638.0, 632.0, 619.0, 611.0, 600.0, 591.0, 579.0, 569.0, 560.0, 552.0, 545.0, 536.0, 525.0, 514.0, 509.0, 500.0, 489.0, 485.0, 480.0, 471.0, 464.0, 456.0, 447.0, 434.0, 428.0, 420.0, 413.0, 409.0, 402.0, 393.0, 387.0, 381.0, 379.0, 374.0, 369.0, 361.0, 358.0, 352.0, 342.0, 340.0, 336.0, 328.0, 322.0, 319.0, 316.0, 312.0, 309.0, 300.0, 294.0, 287.0, 286.0, 281.0, 278.0, 274.0, 267.0, 264.0, 258.0, 255.0, 253.0, 250.0, 248.0, 247.0, 244.0, 239.0, 234.0, 232.0, 231.0, 230.0, 225.0, 224.0, 219.0, 218.0, 216.0, 212.0, 208.0, 206.0, 200.0, 199.0, 196.0, 194.0, 192.0, 189.0, 187.0, 182.0, 179.0, 178.0, 177.0, 175.0, 172.0, 169.0, 168.0, 165.0, 162.0, 162.0, 158.0, 157.0, 156.0, 155.0, 154.0, 152.0, 151.0, 150.0, 147.0, 145.0, 144.0, 143.0, 143.0, 141.0, 139.0, 137.0, 136.0, 133.0, 132.0, 131.0, 129.0, 124.0, 120.0, 119.0, 115.0, 111.0, 109.0, 108.0, 107.0, 105.0, 102.0, 99.0, 96.0, 93.0, 92.0, 91.0, 91.0, 90.0, 88.0, 86.0, 85.0, 84.0, 83.0, 80.0, 78.0, 78.0, 77.0, 76.0, 74.0, 74.0, 73.0, 72.0, 72.0, 69.0, 68.0, 68.0, 67.0, 66.0, 65.0, 65.0, 63.0, 62.0, 62.0, 58.0, 57.0, 56.0, 56.0, 52.0, 52.0, 52.0, 52.0, 51.0, 51.0, 49.0, 47.0, 46.0, 46.0, 45.0, 45.0, 45.0, 45.0, 44.0, 44.0, 44.0, 43.0, 43.0, 43.0, 43.0, 43.0, 43.0, 43.0, 42.0, 41.0, 41.0, 40.0, 39.0, 38.0, 38.0, 36.0, 35.0, 35.0, 35.0, 35.0, 34.0, 32.0, 32.0, 31.0, 31.0, 31.0, 29.0, 28.0, 28.0, 27.0, 26.0, 26.0, 26.0, 24.0, 24.0, 24.0, 24.0, 23.0, 23.0, 23.0, 21.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 19.0, 19.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 18.0, 17.0, 16.0, 16.0, 16.0, 16.0, 15.0, 15.0, 15.0, 15.0, 13.0, 13.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 2.0, 2.0, 4.0, 8.0, 9.0, 14.0, 16.0, 25.0, 29.0, 34.0, 40.0, 46.0, 53.0, 63.0, 69.0, 77.0, 94.0, 106.0, 118.0, 131.0, 148.0, 167.0, 185.0, 198.0, 209.0, 218.0, 227.0, 236.0, 249.0, 263.0, 277.0, 291.0, 305.0, 313.0, 329.0, 341.0, 354.0, 362.0, 368.0, 381.0, 389.0, 400.0, 409.0, 421.0, 431.0, 440.0, 448.0, 455.0, 464.0, 475.0, 486.0, 491.0, 500.0, 511.0, 515.0, 520.0, 529.0, 536.0, 544.0, 553.0, 566.0, 572.0, 580.0, 587.0, 591.0, 598.0, 607.0, 613.0, 619.0, 621.0, 626.0, 631.0, 639.0, 642.0, 648.0, 658.0, 660.0, 664.0, 672.0, 678.0, 681.0, 684.0, 688.0, 691.0, 700.0, 706.0, 713.0, 714.0, 719.0, 722.0, 726.0, 733.0, 736.0, 742.0, 745.0, 747.0, 750.0, 752.0, 753.0, 756.0, 761.0, 766.0, 768.0, 769.0, 770.0, 775.0, 776.0, 781.0, 782.0, 784.0, 788.0, 792.0, 794.0, 800.0, 801.0, 804.0, 806.0, 808.0, 811.0, 813.0, 818.0, 821.0, 822.0, 823.0, 825.0, 828.0, 831.0, 832.0, 835.0, 838.0, 838.0, 842.0, 843.0, 844.0, 845.0, 846.0, 848.0, 849.0, 850.0, 853.0, 855.0, 856.0, 857.0, 857.0, 859.0, 861.0, 863.0, 864.0, 867.0, 868.0, 869.0, 871.0, 876.0, 880.0, 881.0, 885.0, 889.0, 891.0, 892.0, 893.0, 895.0, 898.0, 901.0, 904.0, 907.0, 908.0, 909.0, 909.0, 910.0, 912.0, 914.0, 915.0, 916.0, 917.0, 920.0, 922.0, 922.0, 923.0, 924.0, 926.0, 926.0, 927.0, 928.0, 928.0, 931.0, 932.0, 932.0, 933.0, 934.0, 935.0, 935.0, 937.0, 938.0, 938.0, 942.0, 943.0, 944.0, 944.0, 948.0, 948.0, 948.0, 948.0, 949.0, 949.0, 951.0, 953.0, 954.0, 954.0, 955.0, 955.0, 955.0, 955.0, 956.0, 956.0, 956.0, 957.0, 957.0, 957.0, 957.0, 957.0, 957.0, 957.0, 958.0, 959.0, 959.0, 960.0, 961.0, 962.0, 962.0, 964.0, 965.0, 965.0, 965.0, 965.0, 966.0, 968.0, 968.0, 969.0, 969.0, 969.0, 971.0, 972.0, 972.0, 973.0, 974.0, 974.0, 974.0, 976.0, 976.0, 976.0, 976.0, 977.0, 977.0, 977.0, 979.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 980.0, 981.0, 981.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 982.0, 983.0, 984.0, 984.0, 984.0, 984.0, 985.0, 985.0, 985.0, 985.0, 987.0, 987.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 991.0, 993.0, 993.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 998.0, 998.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 997.0, 995.0, 992.0, 989.0, 987.0, 983.0, 978.0, 960.0, 951.0, 931.0, 900.0, 855.0, 798.0, 726.0, 633.0, 531.0, 457.0, 377.0, 276.0, 190.0, 144.0, 97.0, 64.0, 49.0, 28.0, 20.0, 14.0, 11.0, 8.0, 4.0, 3.0, 2.0, 2.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}, {"legendgroup": "Infected", "line": {"color": "#1f77b4"}, "mode": "lines", "name": "Infected", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [1.0, 1.0, 1.0, 5.0, 7.0, 12.0, 14.0, 17.0, 23.0, 32.0, 49.0, 76.0, 118.0, 153.0, 216.0, 278.0, 359.0, 444.0, 516.0, 600.0, 670.0, 731.0, 774.0, 796.0, 811.0, 823.0, 822.0, 822.0, 816.0, 807.0, 790.0, 785.0, 769.0, 758.0, 750.0, 733.0, 724.0, 709.0, 703.0, 687.0, 673.0, 666.0, 654.0, 645.0, 635.0, 629.0, 623.0, 615.0, 596.0, 593.0, 579.0, 570.0, 561.0, 551.0, 541.0, 531.0, 520.0, 512.0, 500.0, 489.0, 480.0, 473.0, 468.0, 462.0, 456.0, 453.0, 442.0, 439.0, 431.0, 421.0, 412.0, 406.0, 400.0, 394.0, 387.0, 382.0, 374.0, 372.0, 363.0, 361.0, 356.0, 353.0, 349.0, 344.0, 339.0, 335.0, 328.0, 324.0, 323.0, 319.0, 312.0, 308.0, 305.0, 296.0, 287.0, 284.0, 281.0, 279.0, 276.0, 273.0, 269.0, 266.0, 262.0, 259.0, 256.0, 254.0, 248.0, 241.0, 240.0, 237.0, 234.0, 228.0, 226.0, 217.0, 213.0, 210.0, 206.0, 205.0, 198.0, 197.0, 197.0, 195.0, 190.0, 186.0, 186.0, 183.0, 180.0, 178.0, 175.0, 174.0, 170.0, 165.0, 164.0, 162.0, 160.0, 157.0, 155.0, 149.0, 148.0, 146.0, 144.0, 143.0, 142.0, 139.0, 137.0, 131.0, 127.0, 125.0, 121.0, 119.0, 119.0, 118.0, 115.0, 114.0, 112.0, 112.0, 112.0, 112.0, 112.0, 109.0, 108.0, 106.0, 102.0, 100.0, 99.0, 95.0, 93.0, 90.0, 89.0, 88.0, 85.0, 82.0, 81.0, 81.0, 79.0, 77.0, 77.0, 77.0, 77.0, 76.0, 74.0, 73.0, 71.0, 70.0, 69.0, 68.0, 68.0, 66.0, 65.0, 65.0, 65.0, 65.0, 65.0, 64.0, 62.0, 61.0, 61.0, 61.0, 60.0, 60.0, 59.0, 58.0, 58.0, 56.0, 55.0, 55.0, 55.0, 55.0, 54.0, 53.0, 52.0, 52.0, 52.0, 52.0, 52.0, 50.0, 50.0, 50.0, 50.0, 50.0, 48.0, 47.0, 45.0, 44.0, 44.0, 44.0, 44.0, 44.0, 44.0, 44.0, 42.0, 42.0, 42.0, 41.0, 41.0, 39.0, 39.0, 39.0, 39.0, 38.0, 37.0, 36.0, 34.0, 33.0, 33.0, 33.0, 31.0, 31.0, 30.0, 30.0, 30.0, 30.0, 30.0, 29.0, 25.0, 25.0, 25.0, 24.0, 24.0, 24.0, 24.0, 22.0, 22.0, 22.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 21.0, 20.0, 20.0, 20.0, 19.0, 19.0, 18.0, 18.0, 17.0, 17.0, 17.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 14.0, 13.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 8.0, 8.0, 8.0, 8.0, 8.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], "type": "scatter"}, {"legendgroup": "Recovered", "line": {"color": "#ff7f0e"}, "mode": "lines", "name": "Recovered", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 4.0, 5.0, 6.0, 9.0, 14.0, 19.0, 32.0, 40.0, 48.0, 62.0, 80.0, 95.0, 110.0, 123.0, 137.0, 149.0, 157.0, 168.0, 181.0, 200.0, 209.0, 227.0, 238.0, 248.0, 265.0, 275.0, 290.0, 296.0, 312.0, 327.0, 334.0, 346.0, 355.0, 365.0, 371.0, 377.0, 385.0, 404.0, 407.0, 421.0, 430.0, 439.0, 449.0, 459.0, 469.0, 480.0, 488.0, 500.0, 511.0, 520.0, 527.0, 532.0, 538.0, 544.0, 547.0, 558.0, 561.0, 569.0, 579.0, 588.0, 594.0, 600.0, 606.0, 613.0, 618.0, 626.0, 628.0, 637.0, 639.0, 644.0, 647.0, 651.0, 656.0, 661.0, 665.0, 672.0, 676.0, 677.0, 681.0, 688.0, 692.0, 695.0, 704.0, 713.0, 716.0, 719.0, 721.0, 724.0, 727.0, 731.0, 734.0, 738.0, 741.0, 744.0, 746.0, 752.0, 759.0, 760.0, 763.0, 766.0, 772.0, 774.0, 783.0, 787.0, 790.0, 794.0, 795.0, 802.0, 803.0, 803.0, 805.0, 810.0, 814.0, 814.0, 817.0, 820.0, 822.0, 825.0, 826.0, 830.0, 835.0, 836.0, 838.0, 840.0, 843.0, 845.0, 851.0, 852.0, 854.0, 856.0, 857.0, 858.0, 861.0, 863.0, 869.0, 873.0, 875.0, 879.0, 881.0, 881.0, 882.0, 885.0, 886.0, 888.0, 888.0, 888.0, 888.0, 888.0, 891.0, 892.0, 894.0, 898.0, 900.0, 901.0, 905.0, 907.0, 910.0, 911.0, 912.0, 915.0, 918.0, 919.0, 919.0, 921.0, 923.0, 923.0, 923.0, 923.0, 924.0, 926.0, 927.0, 929.0, 930.0, 931.0, 932.0, 932.0, 934.0, 935.0, 935.0, 935.0, 935.0, 935.0, 936.0, 938.0, 939.0, 939.0, 939.0, 940.0, 940.0, 941.0, 942.0, 942.0, 944.0, 945.0, 945.0, 945.0, 945.0, 946.0, 947.0, 948.0, 948.0, 948.0, 948.0, 948.0, 950.0, 950.0, 950.0, 950.0, 950.0, 952.0, 953.0, 955.0, 956.0, 956.0, 956.0, 956.0, 956.0, 956.0, 956.0, 958.0, 958.0, 958.0, 959.0, 959.0, 961.0, 961.0, 961.0, 961.0, 962.0, 963.0, 964.0, 966.0, 967.0, 967.0, 967.0, 969.0, 969.0, 970.0, 970.0, 970.0, 970.0, 970.0, 971.0, 975.0, 975.0, 975.0, 976.0, 976.0, 976.0, 976.0, 978.0, 978.0, 978.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 979.0, 980.0, 980.0, 980.0, 981.0, 981.0, 982.0, 982.0, 983.0, 983.0, 983.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 986.0, 987.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 988.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 989.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 990.0, 992.0, 992.0, 992.0, 992.0, 992.0, 993.0, 993.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 994.0, 995.0, 995.0, 995.0, 995.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 996.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 997.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0, 998.0], "type": "scatter"}, {"legendgroup": "Susceptible", "line": {"color": "#2ca02c"}, "mode": "lines", "name": "Susceptible", "showlegend": false, "x": [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, 5.05, 5.1, 5.15, 5.2, 5.25, 5.3, 5.35, 5.4, 5.45, 5.5, 5.55, 5.6, 5.65, 5.7, 5.75, 5.8, 5.85, 5.9, 5.95, 6.0, 6.05, 6.1, 6.15, 6.2, 6.25, 6.3, 6.35, 6.4, 6.45, 6.5, 6.55, 6.6, 6.65, 6.7, 6.75, 6.8, 6.85, 6.9, 6.95, 7.0, 7.05, 7.1, 7.15, 7.2, 7.25, 7.3, 7.35, 7.4, 7.45, 7.5, 7.55, 7.6, 7.65, 7.7, 7.75, 7.8, 7.85, 7.9, 7.95, 8.0, 8.05, 8.1, 8.15, 8.2, 8.25, 8.3, 8.35, 8.4, 8.45, 8.5, 8.55, 8.6, 8.65, 8.7, 8.75, 8.8, 8.85, 8.9, 8.95, 9.0, 9.05, 9.1, 9.15, 9.2, 9.25, 9.3, 9.35, 9.4, 9.45, 9.5, 9.55, 9.6, 9.65, 9.7, 9.75, 9.8, 9.85, 9.9, 9.95, 10.0, 10.05, 10.1, 10.15, 10.2, 10.25, 10.3, 10.35, 10.4, 10.45, 10.5, 10.55, 10.6, 10.65, 10.7, 10.75, 10.8, 10.85, 10.9, 10.95, 11.0, 11.05, 11.1, 11.15, 11.2, 11.25, 11.3, 11.35, 11.4, 11.45, 11.5, 11.55, 11.6, 11.65, 11.7, 11.75, 11.8, 11.85, 11.9, 11.95, 12.0, 12.05, 12.1, 12.15, 12.2, 12.25, 12.3, 12.35, 12.4, 12.45, 12.5, 12.55, 12.6, 12.65, 12.7, 12.75, 12.8, 12.85, 12.9, 12.95, 13.0, 13.05, 13.1, 13.15, 13.2, 13.25, 13.3, 13.35, 13.4, 13.45, 13.5, 13.55, 13.6, 13.65, 13.7, 13.75, 13.8, 13.85, 13.9, 13.95, 14.0, 14.05, 14.1, 14.15, 14.2, 14.25, 14.3, 14.35, 14.4, 14.45, 14.5, 14.55, 14.6, 14.65, 14.7, 14.75, 14.8, 14.85, 14.9, 14.95, 15.0, 15.05, 15.1, 15.15, 15.2, 15.25, 15.3, 15.35, 15.4, 15.45, 15.5, 15.55, 15.6, 15.65, 15.7, 15.75, 15.8, 15.85, 15.9, 15.95, 16.0, 16.05, 16.1, 16.15, 16.2, 16.25, 16.3, 16.35, 16.4, 16.45, 16.5, 16.55, 16.6, 16.65, 16.7, 16.75, 16.8, 16.85, 16.9, 16.95, 17.0, 17.05, 17.1, 17.15, 17.2, 17.25, 17.3, 17.35, 17.4, 17.45, 17.5, 17.55, 17.6, 17.65, 17.7, 17.75, 17.8, 17.85, 17.9, 17.95, 18.0, 18.05, 18.1, 18.15, 18.2, 18.25, 18.3, 18.35, 18.4, 18.45, 18.5, 18.55, 18.6, 18.65, 18.7, 18.75, 18.8, 18.85, 18.9, 18.95, 19.0, 19.05, 19.1, 19.15, 19.2, 19.25, 19.3, 19.35, 19.4, 19.45, 19.5, 19.55, 19.6, 19.65, 19.7, 19.75, 19.8, 19.85, 19.9, 19.95, 20.0], "y": [999.0, 999.0, 999.0, 995.0, 993.0, 987.0, 985.0, 982.0, 976.0, 967.0, 950.0, 920.0, 877.0, 841.0, 775.0, 708.0, 622.0, 524.0, 444.0, 352.0, 268.0, 189.0, 131.0, 94.0, 66.0, 40.0, 29.0, 21.0, 16.0, 12.0, 10.0, 6.0, 4.0, 4.0, 2.0, 2.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "type": "scatter"}], "layout": {"showlegend": true, "title": {"text": ""}, "xaxis": {"title": {"text": "Time "}}, "yaxis": {"title": {"text": "Species Population"}}}, "config": {"responsive": true}}}
\ No newline at end of file
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv0.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv0.csv
new file mode 100644
index 0000000000..fe7e9f8a81
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv0.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,3.0,0.0,997.0
+0.1,8.0,0.0,992.0
+0.15,12.0,0.0,988.0
+0.2,19.0,1.0,980.0
+0.25,30.0,1.0,969.0
+0.3,40.0,1.0,959.0
+0.35,60.0,3.0,937.0
+0.4,81.0,4.0,915.0
+0.45,118.0,5.0,877.0
+0.5,158.0,9.0,833.0
+0.55,214.0,11.0,775.0
+0.6,294.0,16.0,690.0
+0.65,389.0,20.0,591.0
+0.7,488.0,26.0,486.0
+0.75,568.0,32.0,400.0
+0.8,667.0,37.0,296.0
+0.85,724.0,45.0,231.0
+0.9,773.0,53.0,174.0
+0.95,811.0,66.0,123.0
+1.0,841.0,76.0,83.0
+1.05,845.0,92.0,63.0
+1.1,849.0,106.0,45.0
+1.15,843.0,125.0,32.0
+1.2,843.0,133.0,24.0
+1.25,842.0,143.0,15.0
+1.3,825.0,162.0,13.0
+1.35,823.0,171.0,6.0
+1.4,810.0,184.0,6.0
+1.45,792.0,203.0,5.0
+1.5,789.0,209.0,2.0
+1.55,781.0,217.0,2.0
+1.6,765.0,233.0,2.0
+1.65,756.0,242.0,2.0
+1.7,751.0,247.0,2.0
+1.75,739.0,260.0,1.0
+1.8,730.0,270.0,0.0
+1.85,723.0,277.0,0.0
+1.9,708.0,292.0,0.0
+1.95,694.0,306.0,0.0
+2.0,683.0,317.0,0.0
+2.05,671.0,329.0,0.0
+2.1,665.0,335.0,0.0
+2.15,657.0,343.0,0.0
+2.2,644.0,356.0,0.0
+2.25,637.0,363.0,0.0
+2.3,632.0,368.0,0.0
+2.35,625.0,375.0,0.0
+2.4,618.0,382.0,0.0
+2.45,612.0,388.0,0.0
+2.5,601.0,399.0,0.0
+2.55,592.0,408.0,0.0
+2.6,579.0,421.0,0.0
+2.65,573.0,427.0,0.0
+2.7,565.0,435.0,0.0
+2.75,553.0,447.0,0.0
+2.8,544.0,456.0,0.0
+2.85,534.0,466.0,0.0
+2.9,528.0,472.0,0.0
+2.95,525.0,475.0,0.0
+3.0,520.0,480.0,0.0
+3.05,508.0,492.0,0.0
+3.1,495.0,505.0,0.0
+3.15,483.0,517.0,0.0
+3.2,476.0,524.0,0.0
+3.25,465.0,535.0,0.0
+3.3,456.0,544.0,0.0
+3.35,449.0,551.0,0.0
+3.4,443.0,557.0,0.0
+3.45,437.0,563.0,0.0
+3.5,428.0,572.0,0.0
+3.55,423.0,577.0,0.0
+3.6,420.0,580.0,0.0
+3.65,411.0,589.0,0.0
+3.7,406.0,594.0,0.0
+3.75,398.0,602.0,0.0
+3.8,390.0,610.0,0.0
+3.85,383.0,617.0,0.0
+3.9,375.0,625.0,0.0
+3.95,366.0,634.0,0.0
+4.0,359.0,641.0,0.0
+4.05,357.0,643.0,0.0
+4.1,348.0,652.0,0.0
+4.15,344.0,656.0,0.0
+4.2,339.0,661.0,0.0
+4.25,337.0,663.0,0.0
+4.3,334.0,666.0,0.0
+4.35,331.0,669.0,0.0
+4.4,329.0,671.0,0.0
+4.45,322.0,678.0,0.0
+4.5,319.0,681.0,0.0
+4.55,317.0,683.0,0.0
+4.6,314.0,686.0,0.0
+4.65,308.0,692.0,0.0
+4.7,305.0,695.0,0.0
+4.75,302.0,698.0,0.0
+4.8,299.0,701.0,0.0
+4.85,293.0,707.0,0.0
+4.9,290.0,710.0,0.0
+4.95,284.0,716.0,0.0
+5.0,280.0,720.0,0.0
+5.05,272.0,728.0,0.0
+5.1,270.0,730.0,0.0
+5.15,270.0,730.0,0.0
+5.2,265.0,735.0,0.0
+5.25,260.0,740.0,0.0
+5.3,255.0,745.0,0.0
+5.35,253.0,747.0,0.0
+5.4,252.0,748.0,0.0
+5.45,252.0,748.0,0.0
+5.5,248.0,752.0,0.0
+5.55,241.0,759.0,0.0
+5.6,240.0,760.0,0.0
+5.65,238.0,762.0,0.0
+5.7,236.0,764.0,0.0
+5.75,230.0,770.0,0.0
+5.8,225.0,775.0,0.0
+5.85,220.0,780.0,0.0
+5.9,218.0,782.0,0.0
+5.95,216.0,784.0,0.0
+6.0,215.0,785.0,0.0
+6.05,209.0,791.0,0.0
+6.1,208.0,792.0,0.0
+6.15,203.0,797.0,0.0
+6.2,201.0,799.0,0.0
+6.25,200.0,800.0,0.0
+6.3,196.0,804.0,0.0
+6.35,195.0,805.0,0.0
+6.4,192.0,808.0,0.0
+6.45,188.0,812.0,0.0
+6.5,186.0,814.0,0.0
+6.55,183.0,817.0,0.0
+6.6,179.0,821.0,0.0
+6.65,173.0,827.0,0.0
+6.7,170.0,830.0,0.0
+6.75,166.0,834.0,0.0
+6.8,161.0,839.0,0.0
+6.85,159.0,841.0,0.0
+6.9,158.0,842.0,0.0
+6.95,156.0,844.0,0.0
+7.0,154.0,846.0,0.0
+7.05,153.0,847.0,0.0
+7.1,152.0,848.0,0.0
+7.15,151.0,849.0,0.0
+7.2,149.0,851.0,0.0
+7.25,147.0,853.0,0.0
+7.3,144.0,856.0,0.0
+7.35,143.0,857.0,0.0
+7.4,137.0,863.0,0.0
+7.45,136.0,864.0,0.0
+7.5,134.0,866.0,0.0
+7.55,130.0,870.0,0.0
+7.6,127.0,873.0,0.0
+7.65,124.0,876.0,0.0
+7.7,122.0,878.0,0.0
+7.75,120.0,880.0,0.0
+7.8,118.0,882.0,0.0
+7.85,117.0,883.0,0.0
+7.9,116.0,884.0,0.0
+7.95,114.0,886.0,0.0
+8.0,113.0,887.0,0.0
+8.05,112.0,888.0,0.0
+8.1,110.0,890.0,0.0
+8.15,108.0,892.0,0.0
+8.2,107.0,893.0,0.0
+8.25,101.0,899.0,0.0
+8.3,99.0,901.0,0.0
+8.35,99.0,901.0,0.0
+8.4,99.0,901.0,0.0
+8.45,96.0,904.0,0.0
+8.5,94.0,906.0,0.0
+8.55,92.0,908.0,0.0
+8.6,90.0,910.0,0.0
+8.65,90.0,910.0,0.0
+8.7,90.0,910.0,0.0
+8.75,87.0,913.0,0.0
+8.8,86.0,914.0,0.0
+8.85,83.0,917.0,0.0
+8.9,81.0,919.0,0.0
+8.95,80.0,920.0,0.0
+9.0,77.0,923.0,0.0
+9.05,75.0,925.0,0.0
+9.1,74.0,926.0,0.0
+9.15,73.0,927.0,0.0
+9.2,70.0,930.0,0.0
+9.25,70.0,930.0,0.0
+9.3,70.0,930.0,0.0
+9.35,69.0,931.0,0.0
+9.4,69.0,931.0,0.0
+9.45,69.0,931.0,0.0
+9.5,69.0,931.0,0.0
+9.55,68.0,932.0,0.0
+9.6,68.0,932.0,0.0
+9.65,68.0,932.0,0.0
+9.7,67.0,933.0,0.0
+9.75,67.0,933.0,0.0
+9.8,67.0,933.0,0.0
+9.85,66.0,934.0,0.0
+9.9,62.0,938.0,0.0
+9.95,61.0,939.0,0.0
+10.0,60.0,940.0,0.0
+10.05,58.0,942.0,0.0
+10.1,54.0,946.0,0.0
+10.15,52.0,948.0,0.0
+10.2,52.0,948.0,0.0
+10.25,52.0,948.0,0.0
+10.3,52.0,948.0,0.0
+10.35,51.0,949.0,0.0
+10.4,51.0,949.0,0.0
+10.45,50.0,950.0,0.0
+10.5,49.0,951.0,0.0
+10.55,47.0,953.0,0.0
+10.6,47.0,953.0,0.0
+10.65,46.0,954.0,0.0
+10.7,45.0,955.0,0.0
+10.75,44.0,956.0,0.0
+10.8,43.0,957.0,0.0
+10.85,42.0,958.0,0.0
+10.9,41.0,959.0,0.0
+10.95,40.0,960.0,0.0
+11.0,39.0,961.0,0.0
+11.05,39.0,961.0,0.0
+11.1,39.0,961.0,0.0
+11.15,39.0,961.0,0.0
+11.2,39.0,961.0,0.0
+11.25,39.0,961.0,0.0
+11.3,38.0,962.0,0.0
+11.35,37.0,963.0,0.0
+11.4,36.0,964.0,0.0
+11.45,36.0,964.0,0.0
+11.5,36.0,964.0,0.0
+11.55,36.0,964.0,0.0
+11.6,36.0,964.0,0.0
+11.65,35.0,965.0,0.0
+11.7,34.0,966.0,0.0
+11.75,34.0,966.0,0.0
+11.8,33.0,967.0,0.0
+11.85,33.0,967.0,0.0
+11.9,33.0,967.0,0.0
+11.95,31.0,969.0,0.0
+12.0,31.0,969.0,0.0
+12.05,31.0,969.0,0.0
+12.1,30.0,970.0,0.0
+12.15,30.0,970.0,0.0
+12.2,30.0,970.0,0.0
+12.25,30.0,970.0,0.0
+12.3,30.0,970.0,0.0
+12.35,30.0,970.0,0.0
+12.4,29.0,971.0,0.0
+12.45,28.0,972.0,0.0
+12.5,28.0,972.0,0.0
+12.55,28.0,972.0,0.0
+12.6,28.0,972.0,0.0
+12.65,28.0,972.0,0.0
+12.7,28.0,972.0,0.0
+12.75,28.0,972.0,0.0
+12.8,27.0,973.0,0.0
+12.85,27.0,973.0,0.0
+12.9,27.0,973.0,0.0
+12.95,26.0,974.0,0.0
+13.0,26.0,974.0,0.0
+13.05,26.0,974.0,0.0
+13.1,26.0,974.0,0.0
+13.15,26.0,974.0,0.0
+13.2,26.0,974.0,0.0
+13.25,26.0,974.0,0.0
+13.3,25.0,975.0,0.0
+13.35,25.0,975.0,0.0
+13.4,24.0,976.0,0.0
+13.45,24.0,976.0,0.0
+13.5,24.0,976.0,0.0
+13.55,24.0,976.0,0.0
+13.6,22.0,978.0,0.0
+13.65,22.0,978.0,0.0
+13.7,21.0,979.0,0.0
+13.75,21.0,979.0,0.0
+13.8,21.0,979.0,0.0
+13.85,21.0,979.0,0.0
+13.9,21.0,979.0,0.0
+13.95,21.0,979.0,0.0
+14.0,21.0,979.0,0.0
+14.05,20.0,980.0,0.0
+14.1,19.0,981.0,0.0
+14.15,19.0,981.0,0.0
+14.2,19.0,981.0,0.0
+14.25,18.0,982.0,0.0
+14.3,18.0,982.0,0.0
+14.35,18.0,982.0,0.0
+14.4,18.0,982.0,0.0
+14.45,18.0,982.0,0.0
+14.5,18.0,982.0,0.0
+14.55,18.0,982.0,0.0
+14.6,18.0,982.0,0.0
+14.65,18.0,982.0,0.0
+14.7,17.0,983.0,0.0
+14.75,17.0,983.0,0.0
+14.8,16.0,984.0,0.0
+14.85,16.0,984.0,0.0
+14.9,15.0,985.0,0.0
+14.95,15.0,985.0,0.0
+15.0,15.0,985.0,0.0
+15.05,14.0,986.0,0.0
+15.1,14.0,986.0,0.0
+15.15,12.0,988.0,0.0
+15.2,12.0,988.0,0.0
+15.25,12.0,988.0,0.0
+15.3,12.0,988.0,0.0
+15.35,11.0,989.0,0.0
+15.4,10.0,990.0,0.0
+15.45,10.0,990.0,0.0
+15.5,10.0,990.0,0.0
+15.55,10.0,990.0,0.0
+15.6,10.0,990.0,0.0
+15.65,10.0,990.0,0.0
+15.7,10.0,990.0,0.0
+15.75,9.0,991.0,0.0
+15.8,9.0,991.0,0.0
+15.85,9.0,991.0,0.0
+15.9,9.0,991.0,0.0
+15.95,9.0,991.0,0.0
+16.0,9.0,991.0,0.0
+16.05,9.0,991.0,0.0
+16.1,9.0,991.0,0.0
+16.15,9.0,991.0,0.0
+16.2,9.0,991.0,0.0
+16.25,9.0,991.0,0.0
+16.3,9.0,991.0,0.0
+16.35,9.0,991.0,0.0
+16.4,9.0,991.0,0.0
+16.45,9.0,991.0,0.0
+16.5,8.0,992.0,0.0
+16.55,8.0,992.0,0.0
+16.6,8.0,992.0,0.0
+16.65,8.0,992.0,0.0
+16.7,8.0,992.0,0.0
+16.75,8.0,992.0,0.0
+16.8,7.0,993.0,0.0
+16.85,7.0,993.0,0.0
+16.9,7.0,993.0,0.0
+16.95,7.0,993.0,0.0
+17.0,7.0,993.0,0.0
+17.05,7.0,993.0,0.0
+17.1,7.0,993.0,0.0
+17.15,7.0,993.0,0.0
+17.2,7.0,993.0,0.0
+17.25,7.0,993.0,0.0
+17.3,7.0,993.0,0.0
+17.35,7.0,993.0,0.0
+17.4,7.0,993.0,0.0
+17.45,7.0,993.0,0.0
+17.5,7.0,993.0,0.0
+17.55,7.0,993.0,0.0
+17.6,7.0,993.0,0.0
+17.65,7.0,993.0,0.0
+17.7,7.0,993.0,0.0
+17.75,7.0,993.0,0.0
+17.8,7.0,993.0,0.0
+17.85,7.0,993.0,0.0
+17.9,7.0,993.0,0.0
+17.95,7.0,993.0,0.0
+18.0,7.0,993.0,0.0
+18.05,7.0,993.0,0.0
+18.1,7.0,993.0,0.0
+18.15,7.0,993.0,0.0
+18.2,7.0,993.0,0.0
+18.25,7.0,993.0,0.0
+18.3,7.0,993.0,0.0
+18.35,7.0,993.0,0.0
+18.4,6.0,994.0,0.0
+18.45,6.0,994.0,0.0
+18.5,6.0,994.0,0.0
+18.55,6.0,994.0,0.0
+18.6,6.0,994.0,0.0
+18.65,5.0,995.0,0.0
+18.7,5.0,995.0,0.0
+18.75,5.0,995.0,0.0
+18.8,5.0,995.0,0.0
+18.85,5.0,995.0,0.0
+18.9,5.0,995.0,0.0
+18.95,5.0,995.0,0.0
+19.0,5.0,995.0,0.0
+19.05,5.0,995.0,0.0
+19.1,5.0,995.0,0.0
+19.15,5.0,995.0,0.0
+19.2,5.0,995.0,0.0
+19.25,5.0,995.0,0.0
+19.3,5.0,995.0,0.0
+19.35,5.0,995.0,0.0
+19.4,5.0,995.0,0.0
+19.45,5.0,995.0,0.0
+19.5,5.0,995.0,0.0
+19.55,5.0,995.0,0.0
+19.6,5.0,995.0,0.0
+19.65,5.0,995.0,0.0
+19.7,5.0,995.0,0.0
+19.75,5.0,995.0,0.0
+19.8,5.0,995.0,0.0
+19.85,5.0,995.0,0.0
+19.9,5.0,995.0,0.0
+19.95,5.0,995.0,0.0
+20.0,5.0,995.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv1.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv1.csv
new file mode 100644
index 0000000000..c68a31038b
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv1.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,3.0,0.0,997.0
+0.1,3.0,0.0,997.0
+0.15,3.0,0.0,997.0
+0.2,6.0,0.0,994.0
+0.25,12.0,0.0,988.0
+0.3,15.0,0.0,985.0
+0.35,24.0,0.0,976.0
+0.4,41.0,0.0,959.0
+0.45,62.0,0.0,938.0
+0.5,88.0,1.0,911.0
+0.55,134.0,3.0,863.0
+0.6,173.0,6.0,821.0
+0.65,234.0,8.0,758.0
+0.7,302.0,11.0,687.0
+0.75,382.0,19.0,599.0
+0.8,465.0,24.0,511.0
+0.85,578.0,29.0,393.0
+0.9,653.0,38.0,309.0
+0.95,723.0,46.0,231.0
+1.0,762.0,61.0,177.0
+1.05,794.0,71.0,135.0
+1.1,821.0,86.0,93.0
+1.15,821.0,104.0,75.0
+1.2,832.0,114.0,54.0
+1.25,837.0,127.0,36.0
+1.3,832.0,143.0,25.0
+1.35,828.0,154.0,18.0
+1.4,821.0,166.0,13.0
+1.45,816.0,175.0,9.0
+1.5,803.0,189.0,8.0
+1.55,796.0,197.0,7.0
+1.6,783.0,210.0,7.0
+1.65,778.0,219.0,3.0
+1.7,765.0,232.0,3.0
+1.75,748.0,250.0,2.0
+1.8,735.0,265.0,0.0
+1.85,719.0,281.0,0.0
+1.9,706.0,294.0,0.0
+1.95,690.0,310.0,0.0
+2.0,680.0,320.0,0.0
+2.05,673.0,327.0,0.0
+2.1,664.0,336.0,0.0
+2.15,651.0,349.0,0.0
+2.2,640.0,360.0,0.0
+2.25,631.0,369.0,0.0
+2.3,621.0,379.0,0.0
+2.35,615.0,385.0,0.0
+2.4,605.0,395.0,0.0
+2.45,596.0,404.0,0.0
+2.5,588.0,412.0,0.0
+2.55,576.0,424.0,0.0
+2.6,564.0,436.0,0.0
+2.65,557.0,443.0,0.0
+2.7,546.0,454.0,0.0
+2.75,536.0,464.0,0.0
+2.8,524.0,476.0,0.0
+2.85,513.0,487.0,0.0
+2.9,505.0,495.0,0.0
+2.95,499.0,501.0,0.0
+3.0,488.0,512.0,0.0
+3.05,483.0,517.0,0.0
+3.1,475.0,525.0,0.0
+3.15,466.0,534.0,0.0
+3.2,457.0,543.0,0.0
+3.25,451.0,549.0,0.0
+3.3,444.0,556.0,0.0
+3.35,438.0,562.0,0.0
+3.4,433.0,567.0,0.0
+3.45,426.0,574.0,0.0
+3.5,420.0,580.0,0.0
+3.55,418.0,582.0,0.0
+3.6,414.0,586.0,0.0
+3.65,411.0,589.0,0.0
+3.7,407.0,593.0,0.0
+3.75,399.0,601.0,0.0
+3.8,392.0,608.0,0.0
+3.85,387.0,613.0,0.0
+3.9,383.0,617.0,0.0
+3.95,381.0,619.0,0.0
+4.0,374.0,626.0,0.0
+4.05,370.0,630.0,0.0
+4.1,365.0,635.0,0.0
+4.15,352.0,648.0,0.0
+4.2,345.0,655.0,0.0
+4.25,343.0,657.0,0.0
+4.3,341.0,659.0,0.0
+4.35,339.0,661.0,0.0
+4.4,334.0,666.0,0.0
+4.45,331.0,669.0,0.0
+4.5,326.0,674.0,0.0
+4.55,319.0,681.0,0.0
+4.6,313.0,687.0,0.0
+4.65,306.0,694.0,0.0
+4.7,302.0,698.0,0.0
+4.75,300.0,700.0,0.0
+4.8,299.0,701.0,0.0
+4.85,292.0,708.0,0.0
+4.9,290.0,710.0,0.0
+4.95,286.0,714.0,0.0
+5.0,280.0,720.0,0.0
+5.05,277.0,723.0,0.0
+5.1,271.0,729.0,0.0
+5.15,264.0,736.0,0.0
+5.2,257.0,743.0,0.0
+5.25,250.0,750.0,0.0
+5.3,247.0,753.0,0.0
+5.35,245.0,755.0,0.0
+5.4,242.0,758.0,0.0
+5.45,236.0,764.0,0.0
+5.5,232.0,768.0,0.0
+5.55,228.0,772.0,0.0
+5.6,226.0,774.0,0.0
+5.65,221.0,779.0,0.0
+5.7,216.0,784.0,0.0
+5.75,213.0,787.0,0.0
+5.8,209.0,791.0,0.0
+5.85,205.0,795.0,0.0
+5.9,202.0,798.0,0.0
+5.95,201.0,799.0,0.0
+6.0,195.0,805.0,0.0
+6.05,194.0,806.0,0.0
+6.1,190.0,810.0,0.0
+6.15,187.0,813.0,0.0
+6.2,183.0,817.0,0.0
+6.25,181.0,819.0,0.0
+6.3,180.0,820.0,0.0
+6.35,179.0,821.0,0.0
+6.4,177.0,823.0,0.0
+6.45,172.0,828.0,0.0
+6.5,171.0,829.0,0.0
+6.55,168.0,832.0,0.0
+6.6,166.0,834.0,0.0
+6.65,163.0,837.0,0.0
+6.7,161.0,839.0,0.0
+6.75,161.0,839.0,0.0
+6.8,158.0,842.0,0.0
+6.85,156.0,844.0,0.0
+6.9,148.0,852.0,0.0
+6.95,148.0,852.0,0.0
+7.0,147.0,853.0,0.0
+7.05,146.0,854.0,0.0
+7.1,144.0,856.0,0.0
+7.15,142.0,858.0,0.0
+7.2,140.0,860.0,0.0
+7.25,139.0,861.0,0.0
+7.3,135.0,865.0,0.0
+7.35,132.0,868.0,0.0
+7.4,132.0,868.0,0.0
+7.45,131.0,869.0,0.0
+7.5,129.0,871.0,0.0
+7.55,127.0,873.0,0.0
+7.6,122.0,878.0,0.0
+7.65,121.0,879.0,0.0
+7.7,119.0,881.0,0.0
+7.75,117.0,883.0,0.0
+7.8,117.0,883.0,0.0
+7.85,117.0,883.0,0.0
+7.9,115.0,885.0,0.0
+7.95,111.0,889.0,0.0
+8.0,108.0,892.0,0.0
+8.05,107.0,893.0,0.0
+8.1,105.0,895.0,0.0
+8.15,103.0,897.0,0.0
+8.2,102.0,898.0,0.0
+8.25,100.0,900.0,0.0
+8.3,95.0,905.0,0.0
+8.35,95.0,905.0,0.0
+8.4,94.0,906.0,0.0
+8.45,91.0,909.0,0.0
+8.5,90.0,910.0,0.0
+8.55,90.0,910.0,0.0
+8.6,89.0,911.0,0.0
+8.65,89.0,911.0,0.0
+8.7,86.0,914.0,0.0
+8.75,83.0,917.0,0.0
+8.8,81.0,919.0,0.0
+8.85,79.0,921.0,0.0
+8.9,77.0,923.0,0.0
+8.95,76.0,924.0,0.0
+9.0,76.0,924.0,0.0
+9.05,73.0,927.0,0.0
+9.1,70.0,930.0,0.0
+9.15,70.0,930.0,0.0
+9.2,68.0,932.0,0.0
+9.25,68.0,932.0,0.0
+9.3,68.0,932.0,0.0
+9.35,67.0,933.0,0.0
+9.4,66.0,934.0,0.0
+9.45,64.0,936.0,0.0
+9.5,63.0,937.0,0.0
+9.55,62.0,938.0,0.0
+9.6,61.0,939.0,0.0
+9.65,61.0,939.0,0.0
+9.7,61.0,939.0,0.0
+9.75,61.0,939.0,0.0
+9.8,61.0,939.0,0.0
+9.85,58.0,942.0,0.0
+9.9,58.0,942.0,0.0
+9.95,58.0,942.0,0.0
+10.0,58.0,942.0,0.0
+10.05,56.0,944.0,0.0
+10.1,56.0,944.0,0.0
+10.15,56.0,944.0,0.0
+10.2,54.0,946.0,0.0
+10.25,53.0,947.0,0.0
+10.3,53.0,947.0,0.0
+10.35,53.0,947.0,0.0
+10.4,53.0,947.0,0.0
+10.45,52.0,948.0,0.0
+10.5,50.0,950.0,0.0
+10.55,49.0,951.0,0.0
+10.6,47.0,953.0,0.0
+10.65,46.0,954.0,0.0
+10.7,46.0,954.0,0.0
+10.75,45.0,955.0,0.0
+10.8,44.0,956.0,0.0
+10.85,43.0,957.0,0.0
+10.9,43.0,957.0,0.0
+10.95,43.0,957.0,0.0
+11.0,43.0,957.0,0.0
+11.05,43.0,957.0,0.0
+11.1,43.0,957.0,0.0
+11.15,43.0,957.0,0.0
+11.2,43.0,957.0,0.0
+11.25,42.0,958.0,0.0
+11.3,42.0,958.0,0.0
+11.35,41.0,959.0,0.0
+11.4,41.0,959.0,0.0
+11.45,41.0,959.0,0.0
+11.5,41.0,959.0,0.0
+11.55,41.0,959.0,0.0
+11.6,40.0,960.0,0.0
+11.65,39.0,961.0,0.0
+11.7,38.0,962.0,0.0
+11.75,37.0,963.0,0.0
+11.8,36.0,964.0,0.0
+11.85,36.0,964.0,0.0
+11.9,36.0,964.0,0.0
+11.95,36.0,964.0,0.0
+12.0,35.0,965.0,0.0
+12.05,35.0,965.0,0.0
+12.1,33.0,967.0,0.0
+12.15,33.0,967.0,0.0
+12.2,33.0,967.0,0.0
+12.25,33.0,967.0,0.0
+12.3,33.0,967.0,0.0
+12.35,32.0,968.0,0.0
+12.4,31.0,969.0,0.0
+12.45,31.0,969.0,0.0
+12.5,31.0,969.0,0.0
+12.55,30.0,970.0,0.0
+12.6,30.0,970.0,0.0
+12.65,30.0,970.0,0.0
+12.7,30.0,970.0,0.0
+12.75,29.0,971.0,0.0
+12.8,28.0,972.0,0.0
+12.85,28.0,972.0,0.0
+12.9,27.0,973.0,0.0
+12.95,26.0,974.0,0.0
+13.0,25.0,975.0,0.0
+13.05,25.0,975.0,0.0
+13.1,25.0,975.0,0.0
+13.15,24.0,976.0,0.0
+13.2,24.0,976.0,0.0
+13.25,24.0,976.0,0.0
+13.3,23.0,977.0,0.0
+13.35,22.0,978.0,0.0
+13.4,22.0,978.0,0.0
+13.45,21.0,979.0,0.0
+13.5,20.0,980.0,0.0
+13.55,19.0,981.0,0.0
+13.6,19.0,981.0,0.0
+13.65,19.0,981.0,0.0
+13.7,19.0,981.0,0.0
+13.75,19.0,981.0,0.0
+13.8,19.0,981.0,0.0
+13.85,19.0,981.0,0.0
+13.9,18.0,982.0,0.0
+13.95,16.0,984.0,0.0
+14.0,15.0,985.0,0.0
+14.05,15.0,985.0,0.0
+14.1,15.0,985.0,0.0
+14.15,14.0,986.0,0.0
+14.2,14.0,986.0,0.0
+14.25,14.0,986.0,0.0
+14.3,14.0,986.0,0.0
+14.35,13.0,987.0,0.0
+14.4,13.0,987.0,0.0
+14.45,13.0,987.0,0.0
+14.5,12.0,988.0,0.0
+14.55,12.0,988.0,0.0
+14.6,12.0,988.0,0.0
+14.65,12.0,988.0,0.0
+14.7,12.0,988.0,0.0
+14.75,11.0,989.0,0.0
+14.8,11.0,989.0,0.0
+14.85,11.0,989.0,0.0
+14.9,11.0,989.0,0.0
+14.95,11.0,989.0,0.0
+15.0,11.0,989.0,0.0
+15.05,11.0,989.0,0.0
+15.1,11.0,989.0,0.0
+15.15,11.0,989.0,0.0
+15.2,11.0,989.0,0.0
+15.25,11.0,989.0,0.0
+15.3,11.0,989.0,0.0
+15.35,11.0,989.0,0.0
+15.4,11.0,989.0,0.0
+15.45,11.0,989.0,0.0
+15.5,11.0,989.0,0.0
+15.55,11.0,989.0,0.0
+15.6,11.0,989.0,0.0
+15.65,11.0,989.0,0.0
+15.7,11.0,989.0,0.0
+15.75,10.0,990.0,0.0
+15.8,10.0,990.0,0.0
+15.85,10.0,990.0,0.0
+15.9,10.0,990.0,0.0
+15.95,10.0,990.0,0.0
+16.0,10.0,990.0,0.0
+16.05,10.0,990.0,0.0
+16.1,10.0,990.0,0.0
+16.15,10.0,990.0,0.0
+16.2,10.0,990.0,0.0
+16.25,10.0,990.0,0.0
+16.3,10.0,990.0,0.0
+16.35,10.0,990.0,0.0
+16.4,10.0,990.0,0.0
+16.45,10.0,990.0,0.0
+16.5,10.0,990.0,0.0
+16.55,9.0,991.0,0.0
+16.6,9.0,991.0,0.0
+16.65,9.0,991.0,0.0
+16.7,9.0,991.0,0.0
+16.75,9.0,991.0,0.0
+16.8,9.0,991.0,0.0
+16.85,9.0,991.0,0.0
+16.9,9.0,991.0,0.0
+16.95,9.0,991.0,0.0
+17.0,9.0,991.0,0.0
+17.05,9.0,991.0,0.0
+17.1,9.0,991.0,0.0
+17.15,9.0,991.0,0.0
+17.2,9.0,991.0,0.0
+17.25,9.0,991.0,0.0
+17.3,9.0,991.0,0.0
+17.35,9.0,991.0,0.0
+17.4,9.0,991.0,0.0
+17.45,9.0,991.0,0.0
+17.5,8.0,992.0,0.0
+17.55,8.0,992.0,0.0
+17.6,8.0,992.0,0.0
+17.65,8.0,992.0,0.0
+17.7,8.0,992.0,0.0
+17.75,8.0,992.0,0.0
+17.8,7.0,993.0,0.0
+17.85,6.0,994.0,0.0
+17.9,6.0,994.0,0.0
+17.95,6.0,994.0,0.0
+18.0,6.0,994.0,0.0
+18.05,6.0,994.0,0.0
+18.1,6.0,994.0,0.0
+18.15,6.0,994.0,0.0
+18.2,6.0,994.0,0.0
+18.25,6.0,994.0,0.0
+18.3,6.0,994.0,0.0
+18.35,6.0,994.0,0.0
+18.4,6.0,994.0,0.0
+18.45,5.0,995.0,0.0
+18.5,5.0,995.0,0.0
+18.55,5.0,995.0,0.0
+18.6,5.0,995.0,0.0
+18.65,5.0,995.0,0.0
+18.7,5.0,995.0,0.0
+18.75,4.0,996.0,0.0
+18.8,4.0,996.0,0.0
+18.85,4.0,996.0,0.0
+18.9,4.0,996.0,0.0
+18.95,4.0,996.0,0.0
+19.0,4.0,996.0,0.0
+19.05,4.0,996.0,0.0
+19.1,4.0,996.0,0.0
+19.15,4.0,996.0,0.0
+19.2,3.0,997.0,0.0
+19.25,3.0,997.0,0.0
+19.3,3.0,997.0,0.0
+19.35,3.0,997.0,0.0
+19.4,3.0,997.0,0.0
+19.45,3.0,997.0,0.0
+19.5,3.0,997.0,0.0
+19.55,3.0,997.0,0.0
+19.6,3.0,997.0,0.0
+19.65,3.0,997.0,0.0
+19.7,3.0,997.0,0.0
+19.75,3.0,997.0,0.0
+19.8,3.0,997.0,0.0
+19.85,3.0,997.0,0.0
+19.9,3.0,997.0,0.0
+19.95,3.0,997.0,0.0
+20.0,3.0,997.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv10.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv10.csv
new file mode 100644
index 0000000000..f313145d92
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv10.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,1.0,0.0,999.0
+0.2,2.0,0.0,998.0
+0.25,2.0,0.0,998.0
+0.3,2.0,0.0,998.0
+0.35,2.0,0.0,998.0
+0.4,3.0,0.0,997.0
+0.45,3.0,0.0,997.0
+0.5,7.0,0.0,993.0
+0.55,7.0,0.0,993.0
+0.6,9.0,0.0,991.0
+0.65,12.0,0.0,988.0
+0.7,20.0,0.0,980.0
+0.75,26.0,0.0,974.0
+0.8,39.0,0.0,961.0
+0.85,53.0,0.0,947.0
+0.9,68.0,0.0,932.0
+0.95,107.0,3.0,890.0
+1.0,137.0,5.0,858.0
+1.05,203.0,9.0,788.0
+1.1,280.0,9.0,711.0
+1.15,358.0,12.0,630.0
+1.2,433.0,17.0,550.0
+1.25,530.0,24.0,446.0
+1.3,609.0,29.0,362.0
+1.35,693.0,36.0,271.0
+1.4,755.0,45.0,200.0
+1.45,805.0,54.0,141.0
+1.5,840.0,61.0,99.0
+1.55,861.0,75.0,64.0
+1.6,862.0,87.0,51.0
+1.65,854.0,101.0,45.0
+1.7,851.0,114.0,35.0
+1.75,856.0,124.0,20.0
+1.8,851.0,135.0,14.0
+1.85,849.0,141.0,10.0
+1.9,838.0,153.0,9.0
+1.95,829.0,168.0,3.0
+2.0,816.0,181.0,3.0
+2.05,804.0,193.0,3.0
+2.1,793.0,205.0,2.0
+2.15,781.0,217.0,2.0
+2.2,759.0,239.0,2.0
+2.25,750.0,248.0,2.0
+2.3,738.0,261.0,1.0
+2.35,725.0,274.0,1.0
+2.4,717.0,283.0,0.0
+2.45,705.0,295.0,0.0
+2.5,695.0,305.0,0.0
+2.55,684.0,316.0,0.0
+2.6,675.0,325.0,0.0
+2.65,660.0,340.0,0.0
+2.7,647.0,353.0,0.0
+2.75,633.0,367.0,0.0
+2.8,624.0,376.0,0.0
+2.85,615.0,385.0,0.0
+2.9,599.0,401.0,0.0
+2.95,589.0,411.0,0.0
+3.0,584.0,416.0,0.0
+3.05,575.0,425.0,0.0
+3.1,568.0,432.0,0.0
+3.15,559.0,441.0,0.0
+3.2,544.0,456.0,0.0
+3.25,531.0,469.0,0.0
+3.3,525.0,475.0,0.0
+3.35,515.0,485.0,0.0
+3.4,506.0,494.0,0.0
+3.45,498.0,502.0,0.0
+3.5,491.0,509.0,0.0
+3.55,478.0,522.0,0.0
+3.6,470.0,530.0,0.0
+3.65,462.0,538.0,0.0
+3.7,455.0,545.0,0.0
+3.75,447.0,553.0,0.0
+3.8,438.0,562.0,0.0
+3.85,427.0,573.0,0.0
+3.9,420.0,580.0,0.0
+3.95,413.0,587.0,0.0
+4.0,406.0,594.0,0.0
+4.05,402.0,598.0,0.0
+4.1,398.0,602.0,0.0
+4.15,389.0,611.0,0.0
+4.2,383.0,617.0,0.0
+4.25,380.0,620.0,0.0
+4.3,372.0,628.0,0.0
+4.35,367.0,633.0,0.0
+4.4,362.0,638.0,0.0
+4.45,358.0,642.0,0.0
+4.5,351.0,649.0,0.0
+4.55,344.0,656.0,0.0
+4.6,340.0,660.0,0.0
+4.65,333.0,667.0,0.0
+4.7,327.0,673.0,0.0
+4.75,323.0,677.0,0.0
+4.8,319.0,681.0,0.0
+4.85,313.0,687.0,0.0
+4.9,312.0,688.0,0.0
+4.95,307.0,693.0,0.0
+5.0,304.0,696.0,0.0
+5.05,300.0,700.0,0.0
+5.1,297.0,703.0,0.0
+5.15,289.0,711.0,0.0
+5.2,285.0,715.0,0.0
+5.25,282.0,718.0,0.0
+5.3,279.0,721.0,0.0
+5.35,277.0,723.0,0.0
+5.4,268.0,732.0,0.0
+5.45,264.0,736.0,0.0
+5.5,262.0,738.0,0.0
+5.55,257.0,743.0,0.0
+5.6,253.0,747.0,0.0
+5.65,248.0,752.0,0.0
+5.7,248.0,752.0,0.0
+5.75,241.0,759.0,0.0
+5.8,237.0,763.0,0.0
+5.85,232.0,768.0,0.0
+5.9,230.0,770.0,0.0
+5.95,229.0,771.0,0.0
+6.0,225.0,775.0,0.0
+6.05,223.0,777.0,0.0
+6.1,222.0,778.0,0.0
+6.15,221.0,779.0,0.0
+6.2,220.0,780.0,0.0
+6.25,217.0,783.0,0.0
+6.3,216.0,784.0,0.0
+6.35,212.0,788.0,0.0
+6.4,209.0,791.0,0.0
+6.45,206.0,794.0,0.0
+6.5,205.0,795.0,0.0
+6.55,204.0,796.0,0.0
+6.6,201.0,799.0,0.0
+6.65,199.0,801.0,0.0
+6.7,193.0,807.0,0.0
+6.75,193.0,807.0,0.0
+6.8,191.0,809.0,0.0
+6.85,189.0,811.0,0.0
+6.9,187.0,813.0,0.0
+6.95,183.0,817.0,0.0
+7.0,182.0,818.0,0.0
+7.05,179.0,821.0,0.0
+7.1,176.0,824.0,0.0
+7.15,174.0,826.0,0.0
+7.2,170.0,830.0,0.0
+7.25,166.0,834.0,0.0
+7.3,163.0,837.0,0.0
+7.35,160.0,840.0,0.0
+7.4,157.0,843.0,0.0
+7.45,155.0,845.0,0.0
+7.5,155.0,845.0,0.0
+7.55,151.0,849.0,0.0
+7.6,151.0,849.0,0.0
+7.65,148.0,852.0,0.0
+7.7,144.0,856.0,0.0
+7.75,140.0,860.0,0.0
+7.8,137.0,863.0,0.0
+7.85,137.0,863.0,0.0
+7.9,134.0,866.0,0.0
+7.95,133.0,867.0,0.0
+8.0,132.0,868.0,0.0
+8.05,131.0,869.0,0.0
+8.1,130.0,870.0,0.0
+8.15,129.0,871.0,0.0
+8.2,129.0,871.0,0.0
+8.25,126.0,874.0,0.0
+8.3,125.0,875.0,0.0
+8.35,124.0,876.0,0.0
+8.4,124.0,876.0,0.0
+8.45,122.0,878.0,0.0
+8.5,120.0,880.0,0.0
+8.55,117.0,883.0,0.0
+8.6,114.0,886.0,0.0
+8.65,111.0,889.0,0.0
+8.7,110.0,890.0,0.0
+8.75,110.0,890.0,0.0
+8.8,106.0,894.0,0.0
+8.85,106.0,894.0,0.0
+8.9,105.0,895.0,0.0
+8.95,103.0,897.0,0.0
+9.0,102.0,898.0,0.0
+9.05,100.0,900.0,0.0
+9.1,97.0,903.0,0.0
+9.15,96.0,904.0,0.0
+9.2,94.0,906.0,0.0
+9.25,93.0,907.0,0.0
+9.3,91.0,909.0,0.0
+9.35,91.0,909.0,0.0
+9.4,91.0,909.0,0.0
+9.45,90.0,910.0,0.0
+9.5,90.0,910.0,0.0
+9.55,89.0,911.0,0.0
+9.6,87.0,913.0,0.0
+9.65,87.0,913.0,0.0
+9.7,87.0,913.0,0.0
+9.75,85.0,915.0,0.0
+9.8,84.0,916.0,0.0
+9.85,81.0,919.0,0.0
+9.9,80.0,920.0,0.0
+9.95,79.0,921.0,0.0
+10.0,79.0,921.0,0.0
+10.05,78.0,922.0,0.0
+10.1,76.0,924.0,0.0
+10.15,75.0,925.0,0.0
+10.2,74.0,926.0,0.0
+10.25,73.0,927.0,0.0
+10.3,72.0,928.0,0.0
+10.35,71.0,929.0,0.0
+10.4,70.0,930.0,0.0
+10.45,70.0,930.0,0.0
+10.5,69.0,931.0,0.0
+10.55,68.0,932.0,0.0
+10.6,66.0,934.0,0.0
+10.65,65.0,935.0,0.0
+10.7,65.0,935.0,0.0
+10.75,65.0,935.0,0.0
+10.8,64.0,936.0,0.0
+10.85,64.0,936.0,0.0
+10.9,64.0,936.0,0.0
+10.95,64.0,936.0,0.0
+11.0,63.0,937.0,0.0
+11.05,62.0,938.0,0.0
+11.1,61.0,939.0,0.0
+11.15,61.0,939.0,0.0
+11.2,61.0,939.0,0.0
+11.25,60.0,940.0,0.0
+11.3,60.0,940.0,0.0
+11.35,60.0,940.0,0.0
+11.4,58.0,942.0,0.0
+11.45,57.0,943.0,0.0
+11.5,56.0,944.0,0.0
+11.55,55.0,945.0,0.0
+11.6,54.0,946.0,0.0
+11.65,53.0,947.0,0.0
+11.7,53.0,947.0,0.0
+11.75,50.0,950.0,0.0
+11.8,50.0,950.0,0.0
+11.85,49.0,951.0,0.0
+11.9,46.0,954.0,0.0
+11.95,44.0,956.0,0.0
+12.0,44.0,956.0,0.0
+12.05,43.0,957.0,0.0
+12.1,42.0,958.0,0.0
+12.15,42.0,958.0,0.0
+12.2,42.0,958.0,0.0
+12.25,41.0,959.0,0.0
+12.3,41.0,959.0,0.0
+12.35,41.0,959.0,0.0
+12.4,40.0,960.0,0.0
+12.45,38.0,962.0,0.0
+12.5,37.0,963.0,0.0
+12.55,35.0,965.0,0.0
+12.6,33.0,967.0,0.0
+12.65,33.0,967.0,0.0
+12.7,33.0,967.0,0.0
+12.75,33.0,967.0,0.0
+12.8,33.0,967.0,0.0
+12.85,32.0,968.0,0.0
+12.9,32.0,968.0,0.0
+12.95,31.0,969.0,0.0
+13.0,31.0,969.0,0.0
+13.05,30.0,970.0,0.0
+13.1,30.0,970.0,0.0
+13.15,30.0,970.0,0.0
+13.2,29.0,971.0,0.0
+13.25,29.0,971.0,0.0
+13.3,29.0,971.0,0.0
+13.35,28.0,972.0,0.0
+13.4,28.0,972.0,0.0
+13.45,27.0,973.0,0.0
+13.5,26.0,974.0,0.0
+13.55,25.0,975.0,0.0
+13.6,25.0,975.0,0.0
+13.65,23.0,977.0,0.0
+13.7,22.0,978.0,0.0
+13.75,22.0,978.0,0.0
+13.8,22.0,978.0,0.0
+13.85,21.0,979.0,0.0
+13.9,19.0,981.0,0.0
+13.95,19.0,981.0,0.0
+14.0,19.0,981.0,0.0
+14.05,18.0,982.0,0.0
+14.1,18.0,982.0,0.0
+14.15,18.0,982.0,0.0
+14.2,18.0,982.0,0.0
+14.25,18.0,982.0,0.0
+14.3,18.0,982.0,0.0
+14.35,18.0,982.0,0.0
+14.4,18.0,982.0,0.0
+14.45,18.0,982.0,0.0
+14.5,18.0,982.0,0.0
+14.55,18.0,982.0,0.0
+14.6,18.0,982.0,0.0
+14.65,15.0,985.0,0.0
+14.7,15.0,985.0,0.0
+14.75,14.0,986.0,0.0
+14.8,14.0,986.0,0.0
+14.85,14.0,986.0,0.0
+14.9,13.0,987.0,0.0
+14.95,12.0,988.0,0.0
+15.0,12.0,988.0,0.0
+15.05,12.0,988.0,0.0
+15.1,12.0,988.0,0.0
+15.15,12.0,988.0,0.0
+15.2,12.0,988.0,0.0
+15.25,12.0,988.0,0.0
+15.3,12.0,988.0,0.0
+15.35,12.0,988.0,0.0
+15.4,11.0,989.0,0.0
+15.45,11.0,989.0,0.0
+15.5,11.0,989.0,0.0
+15.55,11.0,989.0,0.0
+15.6,11.0,989.0,0.0
+15.65,11.0,989.0,0.0
+15.7,11.0,989.0,0.0
+15.75,11.0,989.0,0.0
+15.8,11.0,989.0,0.0
+15.85,11.0,989.0,0.0
+15.9,11.0,989.0,0.0
+15.95,11.0,989.0,0.0
+16.0,11.0,989.0,0.0
+16.05,11.0,989.0,0.0
+16.1,11.0,989.0,0.0
+16.15,11.0,989.0,0.0
+16.2,11.0,989.0,0.0
+16.25,11.0,989.0,0.0
+16.3,11.0,989.0,0.0
+16.35,11.0,989.0,0.0
+16.4,11.0,989.0,0.0
+16.45,9.0,991.0,0.0
+16.5,9.0,991.0,0.0
+16.55,9.0,991.0,0.0
+16.6,9.0,991.0,0.0
+16.65,9.0,991.0,0.0
+16.7,8.0,992.0,0.0
+16.75,8.0,992.0,0.0
+16.8,8.0,992.0,0.0
+16.85,8.0,992.0,0.0
+16.9,8.0,992.0,0.0
+16.95,8.0,992.0,0.0
+17.0,8.0,992.0,0.0
+17.05,8.0,992.0,0.0
+17.1,8.0,992.0,0.0
+17.15,8.0,992.0,0.0
+17.2,7.0,993.0,0.0
+17.25,7.0,993.0,0.0
+17.3,6.0,994.0,0.0
+17.35,6.0,994.0,0.0
+17.4,6.0,994.0,0.0
+17.45,6.0,994.0,0.0
+17.5,6.0,994.0,0.0
+17.55,6.0,994.0,0.0
+17.6,6.0,994.0,0.0
+17.65,6.0,994.0,0.0
+17.7,6.0,994.0,0.0
+17.75,6.0,994.0,0.0
+17.8,5.0,995.0,0.0
+17.85,5.0,995.0,0.0
+17.9,5.0,995.0,0.0
+17.95,5.0,995.0,0.0
+18.0,4.0,996.0,0.0
+18.05,4.0,996.0,0.0
+18.1,4.0,996.0,0.0
+18.15,3.0,997.0,0.0
+18.2,3.0,997.0,0.0
+18.25,3.0,997.0,0.0
+18.3,3.0,997.0,0.0
+18.35,3.0,997.0,0.0
+18.4,3.0,997.0,0.0
+18.45,3.0,997.0,0.0
+18.5,2.0,998.0,0.0
+18.55,2.0,998.0,0.0
+18.6,2.0,998.0,0.0
+18.65,2.0,998.0,0.0
+18.7,2.0,998.0,0.0
+18.75,2.0,998.0,0.0
+18.8,2.0,998.0,0.0
+18.85,2.0,998.0,0.0
+18.9,1.0,999.0,0.0
+18.95,1.0,999.0,0.0
+19.0,1.0,999.0,0.0
+19.05,1.0,999.0,0.0
+19.1,1.0,999.0,0.0
+19.15,1.0,999.0,0.0
+19.2,1.0,999.0,0.0
+19.25,1.0,999.0,0.0
+19.3,1.0,999.0,0.0
+19.35,1.0,999.0,0.0
+19.4,1.0,999.0,0.0
+19.45,1.0,999.0,0.0
+19.5,1.0,999.0,0.0
+19.55,1.0,999.0,0.0
+19.6,1.0,999.0,0.0
+19.65,1.0,999.0,0.0
+19.7,1.0,999.0,0.0
+19.75,1.0,999.0,0.0
+19.8,1.0,999.0,0.0
+19.85,1.0,999.0,0.0
+19.9,1.0,999.0,0.0
+19.95,1.0,999.0,0.0
+20.0,1.0,999.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv11.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv11.csv
new file mode 100644
index 0000000000..c34fba3a7c
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv11.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,2.0,0.0,998.0
+0.1,2.0,0.0,998.0
+0.15,2.0,0.0,998.0
+0.2,6.0,0.0,994.0
+0.25,8.0,0.0,992.0
+0.3,13.0,0.0,987.0
+0.35,23.0,1.0,976.0
+0.4,34.0,2.0,964.0
+0.45,47.0,2.0,951.0
+0.5,71.0,2.0,927.0
+0.55,100.0,4.0,896.0
+0.6,139.0,4.0,857.0
+0.65,210.0,7.0,783.0
+0.7,281.0,9.0,710.0
+0.75,370.0,14.0,616.0
+0.8,455.0,19.0,526.0
+0.85,548.0,28.0,424.0
+0.9,638.0,35.0,327.0
+0.95,710.0,45.0,245.0
+1.0,755.0,65.0,180.0
+1.05,794.0,76.0,130.0
+1.1,821.0,87.0,92.0
+1.15,844.0,96.0,60.0
+1.2,855.0,109.0,36.0
+1.25,847.0,128.0,25.0
+1.3,841.0,142.0,17.0
+1.35,831.0,156.0,13.0
+1.4,821.0,169.0,10.0
+1.45,814.0,182.0,4.0
+1.5,803.0,194.0,3.0
+1.55,790.0,209.0,1.0
+1.6,779.0,220.0,1.0
+1.65,768.0,231.0,1.0
+1.7,756.0,243.0,1.0
+1.75,740.0,259.0,1.0
+1.8,732.0,268.0,0.0
+1.85,718.0,282.0,0.0
+1.9,703.0,297.0,0.0
+1.95,697.0,303.0,0.0
+2.0,681.0,319.0,0.0
+2.05,673.0,327.0,0.0
+2.1,664.0,336.0,0.0
+2.15,656.0,344.0,0.0
+2.2,644.0,356.0,0.0
+2.25,636.0,364.0,0.0
+2.3,627.0,373.0,0.0
+2.35,621.0,379.0,0.0
+2.4,610.0,390.0,0.0
+2.45,601.0,399.0,0.0
+2.5,593.0,407.0,0.0
+2.55,583.0,417.0,0.0
+2.6,577.0,423.0,0.0
+2.65,571.0,429.0,0.0
+2.7,565.0,435.0,0.0
+2.75,554.0,446.0,0.0
+2.8,544.0,456.0,0.0
+2.85,542.0,458.0,0.0
+2.9,535.0,465.0,0.0
+2.95,527.0,473.0,0.0
+3.0,515.0,485.0,0.0
+3.05,507.0,493.0,0.0
+3.1,494.0,506.0,0.0
+3.15,482.0,518.0,0.0
+3.2,474.0,526.0,0.0
+3.25,471.0,529.0,0.0
+3.3,467.0,533.0,0.0
+3.35,462.0,538.0,0.0
+3.4,454.0,546.0,0.0
+3.45,451.0,549.0,0.0
+3.5,444.0,556.0,0.0
+3.55,439.0,561.0,0.0
+3.6,435.0,565.0,0.0
+3.65,430.0,570.0,0.0
+3.7,425.0,575.0,0.0
+3.75,419.0,581.0,0.0
+3.8,407.0,593.0,0.0
+3.85,402.0,598.0,0.0
+3.9,399.0,601.0,0.0
+3.95,395.0,605.0,0.0
+4.0,392.0,608.0,0.0
+4.05,387.0,613.0,0.0
+4.1,379.0,621.0,0.0
+4.15,374.0,626.0,0.0
+4.2,370.0,630.0,0.0
+4.25,363.0,637.0,0.0
+4.3,357.0,643.0,0.0
+4.35,353.0,647.0,0.0
+4.4,346.0,654.0,0.0
+4.45,343.0,657.0,0.0
+4.5,340.0,660.0,0.0
+4.55,335.0,665.0,0.0
+4.6,330.0,670.0,0.0
+4.65,324.0,676.0,0.0
+4.7,317.0,683.0,0.0
+4.75,314.0,686.0,0.0
+4.8,309.0,691.0,0.0
+4.85,305.0,695.0,0.0
+4.9,299.0,701.0,0.0
+4.95,297.0,703.0,0.0
+5.0,292.0,708.0,0.0
+5.05,290.0,710.0,0.0
+5.1,288.0,712.0,0.0
+5.15,285.0,715.0,0.0
+5.2,281.0,719.0,0.0
+5.25,277.0,723.0,0.0
+5.3,268.0,732.0,0.0
+5.35,265.0,735.0,0.0
+5.4,264.0,736.0,0.0
+5.45,258.0,742.0,0.0
+5.5,256.0,744.0,0.0
+5.55,255.0,745.0,0.0
+5.6,252.0,748.0,0.0
+5.65,249.0,751.0,0.0
+5.7,245.0,755.0,0.0
+5.75,241.0,759.0,0.0
+5.8,238.0,762.0,0.0
+5.85,235.0,765.0,0.0
+5.9,232.0,768.0,0.0
+5.95,229.0,771.0,0.0
+6.0,229.0,771.0,0.0
+6.05,228.0,772.0,0.0
+6.1,225.0,775.0,0.0
+6.15,220.0,780.0,0.0
+6.2,215.0,785.0,0.0
+6.25,212.0,788.0,0.0
+6.3,210.0,790.0,0.0
+6.35,209.0,791.0,0.0
+6.4,206.0,794.0,0.0
+6.45,202.0,798.0,0.0
+6.5,198.0,802.0,0.0
+6.55,196.0,804.0,0.0
+6.6,191.0,809.0,0.0
+6.65,187.0,813.0,0.0
+6.7,184.0,816.0,0.0
+6.75,180.0,820.0,0.0
+6.8,176.0,824.0,0.0
+6.85,170.0,830.0,0.0
+6.9,169.0,831.0,0.0
+6.95,168.0,832.0,0.0
+7.0,165.0,835.0,0.0
+7.05,160.0,840.0,0.0
+7.1,159.0,841.0,0.0
+7.15,154.0,846.0,0.0
+7.2,154.0,846.0,0.0
+7.25,151.0,849.0,0.0
+7.3,148.0,852.0,0.0
+7.35,147.0,853.0,0.0
+7.4,146.0,854.0,0.0
+7.45,142.0,858.0,0.0
+7.5,142.0,858.0,0.0
+7.55,139.0,861.0,0.0
+7.6,138.0,862.0,0.0
+7.65,135.0,865.0,0.0
+7.7,133.0,867.0,0.0
+7.75,130.0,870.0,0.0
+7.8,127.0,873.0,0.0
+7.85,126.0,874.0,0.0
+7.9,125.0,875.0,0.0
+7.95,124.0,876.0,0.0
+8.0,122.0,878.0,0.0
+8.05,122.0,878.0,0.0
+8.1,120.0,880.0,0.0
+8.15,118.0,882.0,0.0
+8.2,118.0,882.0,0.0
+8.25,116.0,884.0,0.0
+8.3,115.0,885.0,0.0
+8.35,114.0,886.0,0.0
+8.4,114.0,886.0,0.0
+8.45,111.0,889.0,0.0
+8.5,109.0,891.0,0.0
+8.55,108.0,892.0,0.0
+8.6,108.0,892.0,0.0
+8.65,106.0,894.0,0.0
+8.7,106.0,894.0,0.0
+8.75,105.0,895.0,0.0
+8.8,103.0,897.0,0.0
+8.85,103.0,897.0,0.0
+8.9,103.0,897.0,0.0
+8.95,103.0,897.0,0.0
+9.0,102.0,898.0,0.0
+9.05,99.0,901.0,0.0
+9.1,97.0,903.0,0.0
+9.15,96.0,904.0,0.0
+9.2,92.0,908.0,0.0
+9.25,92.0,908.0,0.0
+9.3,89.0,911.0,0.0
+9.35,87.0,913.0,0.0
+9.4,82.0,918.0,0.0
+9.45,82.0,918.0,0.0
+9.5,81.0,919.0,0.0
+9.55,79.0,921.0,0.0
+9.6,79.0,921.0,0.0
+9.65,78.0,922.0,0.0
+9.7,77.0,923.0,0.0
+9.75,75.0,925.0,0.0
+9.8,75.0,925.0,0.0
+9.85,74.0,926.0,0.0
+9.9,74.0,926.0,0.0
+9.95,74.0,926.0,0.0
+10.0,73.0,927.0,0.0
+10.05,72.0,928.0,0.0
+10.1,70.0,930.0,0.0
+10.15,70.0,930.0,0.0
+10.2,68.0,932.0,0.0
+10.25,68.0,932.0,0.0
+10.3,68.0,932.0,0.0
+10.35,66.0,934.0,0.0
+10.4,65.0,935.0,0.0
+10.45,62.0,938.0,0.0
+10.5,60.0,940.0,0.0
+10.55,60.0,940.0,0.0
+10.6,60.0,940.0,0.0
+10.65,59.0,941.0,0.0
+10.7,59.0,941.0,0.0
+10.75,59.0,941.0,0.0
+10.8,58.0,942.0,0.0
+10.85,58.0,942.0,0.0
+10.9,58.0,942.0,0.0
+10.95,56.0,944.0,0.0
+11.0,53.0,947.0,0.0
+11.05,52.0,948.0,0.0
+11.1,52.0,948.0,0.0
+11.15,51.0,949.0,0.0
+11.2,49.0,951.0,0.0
+11.25,49.0,951.0,0.0
+11.3,49.0,951.0,0.0
+11.35,49.0,951.0,0.0
+11.4,47.0,953.0,0.0
+11.45,46.0,954.0,0.0
+11.5,45.0,955.0,0.0
+11.55,45.0,955.0,0.0
+11.6,44.0,956.0,0.0
+11.65,44.0,956.0,0.0
+11.7,44.0,956.0,0.0
+11.75,44.0,956.0,0.0
+11.8,44.0,956.0,0.0
+11.85,41.0,959.0,0.0
+11.9,40.0,960.0,0.0
+11.95,40.0,960.0,0.0
+12.0,40.0,960.0,0.0
+12.05,39.0,961.0,0.0
+12.1,39.0,961.0,0.0
+12.15,39.0,961.0,0.0
+12.2,39.0,961.0,0.0
+12.25,39.0,961.0,0.0
+12.3,39.0,961.0,0.0
+12.35,39.0,961.0,0.0
+12.4,37.0,963.0,0.0
+12.45,37.0,963.0,0.0
+12.5,36.0,964.0,0.0
+12.55,34.0,966.0,0.0
+12.6,33.0,967.0,0.0
+12.65,33.0,967.0,0.0
+12.7,33.0,967.0,0.0
+12.75,32.0,968.0,0.0
+12.8,32.0,968.0,0.0
+12.85,31.0,969.0,0.0
+12.9,31.0,969.0,0.0
+12.95,31.0,969.0,0.0
+13.0,31.0,969.0,0.0
+13.05,31.0,969.0,0.0
+13.1,31.0,969.0,0.0
+13.15,31.0,969.0,0.0
+13.2,31.0,969.0,0.0
+13.25,31.0,969.0,0.0
+13.3,31.0,969.0,0.0
+13.35,31.0,969.0,0.0
+13.4,30.0,970.0,0.0
+13.45,28.0,972.0,0.0
+13.5,28.0,972.0,0.0
+13.55,28.0,972.0,0.0
+13.6,28.0,972.0,0.0
+13.65,28.0,972.0,0.0
+13.7,28.0,972.0,0.0
+13.75,28.0,972.0,0.0
+13.8,28.0,972.0,0.0
+13.85,28.0,972.0,0.0
+13.9,26.0,974.0,0.0
+13.95,25.0,975.0,0.0
+14.0,24.0,976.0,0.0
+14.05,24.0,976.0,0.0
+14.1,23.0,977.0,0.0
+14.15,22.0,978.0,0.0
+14.2,22.0,978.0,0.0
+14.25,21.0,979.0,0.0
+14.3,21.0,979.0,0.0
+14.35,21.0,979.0,0.0
+14.4,21.0,979.0,0.0
+14.45,20.0,980.0,0.0
+14.5,20.0,980.0,0.0
+14.55,19.0,981.0,0.0
+14.6,18.0,982.0,0.0
+14.65,18.0,982.0,0.0
+14.7,18.0,982.0,0.0
+14.75,18.0,982.0,0.0
+14.8,18.0,982.0,0.0
+14.85,18.0,982.0,0.0
+14.9,18.0,982.0,0.0
+14.95,18.0,982.0,0.0
+15.0,18.0,982.0,0.0
+15.05,16.0,984.0,0.0
+15.1,14.0,986.0,0.0
+15.15,14.0,986.0,0.0
+15.2,14.0,986.0,0.0
+15.25,13.0,987.0,0.0
+15.3,13.0,987.0,0.0
+15.35,13.0,987.0,0.0
+15.4,13.0,987.0,0.0
+15.45,13.0,987.0,0.0
+15.5,13.0,987.0,0.0
+15.55,12.0,988.0,0.0
+15.6,12.0,988.0,0.0
+15.65,12.0,988.0,0.0
+15.7,12.0,988.0,0.0
+15.75,12.0,988.0,0.0
+15.8,12.0,988.0,0.0
+15.85,12.0,988.0,0.0
+15.9,12.0,988.0,0.0
+15.95,12.0,988.0,0.0
+16.0,12.0,988.0,0.0
+16.05,12.0,988.0,0.0
+16.1,12.0,988.0,0.0
+16.15,12.0,988.0,0.0
+16.2,12.0,988.0,0.0
+16.25,12.0,988.0,0.0
+16.3,12.0,988.0,0.0
+16.35,12.0,988.0,0.0
+16.4,12.0,988.0,0.0
+16.45,12.0,988.0,0.0
+16.5,12.0,988.0,0.0
+16.55,11.0,989.0,0.0
+16.6,11.0,989.0,0.0
+16.65,11.0,989.0,0.0
+16.7,10.0,990.0,0.0
+16.75,10.0,990.0,0.0
+16.8,10.0,990.0,0.0
+16.85,10.0,990.0,0.0
+16.9,10.0,990.0,0.0
+16.95,10.0,990.0,0.0
+17.0,10.0,990.0,0.0
+17.05,8.0,992.0,0.0
+17.1,8.0,992.0,0.0
+17.15,7.0,993.0,0.0
+17.2,7.0,993.0,0.0
+17.25,7.0,993.0,0.0
+17.3,6.0,994.0,0.0
+17.35,6.0,994.0,0.0
+17.4,6.0,994.0,0.0
+17.45,6.0,994.0,0.0
+17.5,6.0,994.0,0.0
+17.55,6.0,994.0,0.0
+17.6,6.0,994.0,0.0
+17.65,6.0,994.0,0.0
+17.7,6.0,994.0,0.0
+17.75,6.0,994.0,0.0
+17.8,6.0,994.0,0.0
+17.85,6.0,994.0,0.0
+17.9,6.0,994.0,0.0
+17.95,6.0,994.0,0.0
+18.0,5.0,995.0,0.0
+18.05,5.0,995.0,0.0
+18.1,5.0,995.0,0.0
+18.15,5.0,995.0,0.0
+18.2,5.0,995.0,0.0
+18.25,5.0,995.0,0.0
+18.3,5.0,995.0,0.0
+18.35,5.0,995.0,0.0
+18.4,5.0,995.0,0.0
+18.45,5.0,995.0,0.0
+18.5,5.0,995.0,0.0
+18.55,5.0,995.0,0.0
+18.6,4.0,996.0,0.0
+18.65,4.0,996.0,0.0
+18.7,4.0,996.0,0.0
+18.75,4.0,996.0,0.0
+18.8,4.0,996.0,0.0
+18.85,4.0,996.0,0.0
+18.9,4.0,996.0,0.0
+18.95,3.0,997.0,0.0
+19.0,3.0,997.0,0.0
+19.05,3.0,997.0,0.0
+19.1,3.0,997.0,0.0
+19.15,3.0,997.0,0.0
+19.2,3.0,997.0,0.0
+19.25,3.0,997.0,0.0
+19.3,3.0,997.0,0.0
+19.35,3.0,997.0,0.0
+19.4,3.0,997.0,0.0
+19.45,3.0,997.0,0.0
+19.5,3.0,997.0,0.0
+19.55,3.0,997.0,0.0
+19.6,3.0,997.0,0.0
+19.65,3.0,997.0,0.0
+19.7,3.0,997.0,0.0
+19.75,3.0,997.0,0.0
+19.8,3.0,997.0,0.0
+19.85,3.0,997.0,0.0
+19.9,3.0,997.0,0.0
+19.95,3.0,997.0,0.0
+20.0,3.0,997.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv12.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv12.csv
new file mode 100644
index 0000000000..3ec76cebd0
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv12.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,3.0,0.0,997.0
+0.1,3.0,0.0,997.0
+0.15,3.0,0.0,997.0
+0.2,5.0,0.0,995.0
+0.25,5.0,0.0,995.0
+0.3,6.0,0.0,994.0
+0.35,8.0,0.0,992.0
+0.4,14.0,0.0,986.0
+0.45,23.0,0.0,977.0
+0.5,31.0,0.0,969.0
+0.55,47.0,0.0,953.0
+0.6,67.0,2.0,931.0
+0.65,108.0,4.0,888.0
+0.7,162.0,5.0,833.0
+0.75,210.0,9.0,781.0
+0.8,273.0,12.0,715.0
+0.85,368.0,14.0,618.0
+0.9,461.0,23.0,516.0
+0.95,553.0,33.0,414.0
+1.0,641.0,45.0,314.0
+1.05,713.0,51.0,236.0
+1.1,772.0,59.0,169.0
+1.15,809.0,69.0,122.0
+1.2,833.0,86.0,81.0
+1.25,850.0,92.0,58.0
+1.3,855.0,106.0,39.0
+1.35,854.0,122.0,24.0
+1.4,848.0,134.0,18.0
+1.45,839.0,147.0,14.0
+1.5,828.0,160.0,12.0
+1.55,820.0,172.0,8.0
+1.6,809.0,184.0,7.0
+1.65,804.0,192.0,4.0
+1.7,787.0,210.0,3.0
+1.75,779.0,218.0,3.0
+1.8,766.0,231.0,3.0
+1.85,750.0,247.0,3.0
+1.9,741.0,258.0,1.0
+1.95,735.0,264.0,1.0
+2.0,728.0,272.0,0.0
+2.05,713.0,287.0,0.0
+2.1,694.0,306.0,0.0
+2.15,681.0,319.0,0.0
+2.2,670.0,330.0,0.0
+2.25,658.0,342.0,0.0
+2.3,647.0,353.0,0.0
+2.35,631.0,369.0,0.0
+2.4,624.0,376.0,0.0
+2.45,615.0,385.0,0.0
+2.5,608.0,392.0,0.0
+2.55,599.0,401.0,0.0
+2.6,593.0,407.0,0.0
+2.65,580.0,420.0,0.0
+2.7,577.0,423.0,0.0
+2.75,570.0,430.0,0.0
+2.8,562.0,438.0,0.0
+2.85,553.0,447.0,0.0
+2.9,546.0,454.0,0.0
+2.95,539.0,461.0,0.0
+3.0,533.0,467.0,0.0
+3.05,528.0,472.0,0.0
+3.1,518.0,482.0,0.0
+3.15,513.0,487.0,0.0
+3.2,504.0,496.0,0.0
+3.25,498.0,502.0,0.0
+3.3,492.0,508.0,0.0
+3.35,484.0,516.0,0.0
+3.4,472.0,528.0,0.0
+3.45,464.0,536.0,0.0
+3.5,457.0,543.0,0.0
+3.55,451.0,549.0,0.0
+3.6,442.0,558.0,0.0
+3.65,432.0,568.0,0.0
+3.7,426.0,574.0,0.0
+3.75,421.0,579.0,0.0
+3.8,416.0,584.0,0.0
+3.85,414.0,586.0,0.0
+3.9,411.0,589.0,0.0
+3.95,403.0,597.0,0.0
+4.0,398.0,602.0,0.0
+4.05,389.0,611.0,0.0
+4.1,385.0,615.0,0.0
+4.15,376.0,624.0,0.0
+4.2,370.0,630.0,0.0
+4.25,365.0,635.0,0.0
+4.3,356.0,644.0,0.0
+4.35,351.0,649.0,0.0
+4.4,347.0,653.0,0.0
+4.45,343.0,657.0,0.0
+4.5,337.0,663.0,0.0
+4.55,330.0,670.0,0.0
+4.6,326.0,674.0,0.0
+4.65,320.0,680.0,0.0
+4.7,315.0,685.0,0.0
+4.75,310.0,690.0,0.0
+4.8,306.0,694.0,0.0
+4.85,303.0,697.0,0.0
+4.9,299.0,701.0,0.0
+4.95,293.0,707.0,0.0
+5.0,289.0,711.0,0.0
+5.05,282.0,718.0,0.0
+5.1,279.0,721.0,0.0
+5.15,277.0,723.0,0.0
+5.2,275.0,725.0,0.0
+5.25,272.0,728.0,0.0
+5.3,268.0,732.0,0.0
+5.35,264.0,736.0,0.0
+5.4,258.0,742.0,0.0
+5.45,256.0,744.0,0.0
+5.5,251.0,749.0,0.0
+5.55,247.0,753.0,0.0
+5.6,243.0,757.0,0.0
+5.65,241.0,759.0,0.0
+5.7,239.0,761.0,0.0
+5.75,234.0,766.0,0.0
+5.8,231.0,769.0,0.0
+5.85,228.0,772.0,0.0
+5.9,225.0,775.0,0.0
+5.95,218.0,782.0,0.0
+6.0,215.0,785.0,0.0
+6.05,214.0,786.0,0.0
+6.1,210.0,790.0,0.0
+6.15,204.0,796.0,0.0
+6.2,202.0,798.0,0.0
+6.25,200.0,800.0,0.0
+6.3,197.0,803.0,0.0
+6.35,195.0,805.0,0.0
+6.4,192.0,808.0,0.0
+6.45,190.0,810.0,0.0
+6.5,189.0,811.0,0.0
+6.55,186.0,814.0,0.0
+6.6,183.0,817.0,0.0
+6.65,179.0,821.0,0.0
+6.7,175.0,825.0,0.0
+6.75,174.0,826.0,0.0
+6.8,173.0,827.0,0.0
+6.85,170.0,830.0,0.0
+6.9,167.0,833.0,0.0
+6.95,167.0,833.0,0.0
+7.0,164.0,836.0,0.0
+7.05,163.0,837.0,0.0
+7.1,160.0,840.0,0.0
+7.15,156.0,844.0,0.0
+7.2,155.0,845.0,0.0
+7.25,151.0,849.0,0.0
+7.3,149.0,851.0,0.0
+7.35,147.0,853.0,0.0
+7.4,146.0,854.0,0.0
+7.45,143.0,857.0,0.0
+7.5,142.0,858.0,0.0
+7.55,138.0,862.0,0.0
+7.6,136.0,864.0,0.0
+7.65,136.0,864.0,0.0
+7.7,134.0,866.0,0.0
+7.75,132.0,868.0,0.0
+7.8,128.0,872.0,0.0
+7.85,127.0,873.0,0.0
+7.9,127.0,873.0,0.0
+7.95,125.0,875.0,0.0
+8.0,125.0,875.0,0.0
+8.05,124.0,876.0,0.0
+8.1,121.0,879.0,0.0
+8.15,120.0,880.0,0.0
+8.2,118.0,882.0,0.0
+8.25,117.0,883.0,0.0
+8.3,116.0,884.0,0.0
+8.35,114.0,886.0,0.0
+8.4,112.0,888.0,0.0
+8.45,112.0,888.0,0.0
+8.5,108.0,892.0,0.0
+8.55,108.0,892.0,0.0
+8.6,105.0,895.0,0.0
+8.65,102.0,898.0,0.0
+8.7,102.0,898.0,0.0
+8.75,98.0,902.0,0.0
+8.8,97.0,903.0,0.0
+8.85,95.0,905.0,0.0
+8.9,95.0,905.0,0.0
+8.95,94.0,906.0,0.0
+9.0,89.0,911.0,0.0
+9.05,89.0,911.0,0.0
+9.1,89.0,911.0,0.0
+9.15,88.0,912.0,0.0
+9.2,88.0,912.0,0.0
+9.25,86.0,914.0,0.0
+9.3,86.0,914.0,0.0
+9.35,85.0,915.0,0.0
+9.4,83.0,917.0,0.0
+9.45,79.0,921.0,0.0
+9.5,79.0,921.0,0.0
+9.55,79.0,921.0,0.0
+9.6,78.0,922.0,0.0
+9.65,72.0,928.0,0.0
+9.7,71.0,929.0,0.0
+9.75,69.0,931.0,0.0
+9.8,68.0,932.0,0.0
+9.85,67.0,933.0,0.0
+9.9,67.0,933.0,0.0
+9.95,67.0,933.0,0.0
+10.0,67.0,933.0,0.0
+10.05,66.0,934.0,0.0
+10.1,66.0,934.0,0.0
+10.15,64.0,936.0,0.0
+10.2,61.0,939.0,0.0
+10.25,61.0,939.0,0.0
+10.3,61.0,939.0,0.0
+10.35,60.0,940.0,0.0
+10.4,57.0,943.0,0.0
+10.45,56.0,944.0,0.0
+10.5,56.0,944.0,0.0
+10.55,55.0,945.0,0.0
+10.6,54.0,946.0,0.0
+10.65,53.0,947.0,0.0
+10.7,50.0,950.0,0.0
+10.75,46.0,954.0,0.0
+10.8,44.0,956.0,0.0
+10.85,43.0,957.0,0.0
+10.9,42.0,958.0,0.0
+10.95,41.0,959.0,0.0
+11.0,41.0,959.0,0.0
+11.05,41.0,959.0,0.0
+11.1,41.0,959.0,0.0
+11.15,41.0,959.0,0.0
+11.2,40.0,960.0,0.0
+11.25,40.0,960.0,0.0
+11.3,39.0,961.0,0.0
+11.35,39.0,961.0,0.0
+11.4,38.0,962.0,0.0
+11.45,38.0,962.0,0.0
+11.5,38.0,962.0,0.0
+11.55,38.0,962.0,0.0
+11.6,36.0,964.0,0.0
+11.65,36.0,964.0,0.0
+11.7,36.0,964.0,0.0
+11.75,35.0,965.0,0.0
+11.8,35.0,965.0,0.0
+11.85,35.0,965.0,0.0
+11.9,35.0,965.0,0.0
+11.95,35.0,965.0,0.0
+12.0,35.0,965.0,0.0
+12.05,35.0,965.0,0.0
+12.1,35.0,965.0,0.0
+12.15,34.0,966.0,0.0
+12.2,34.0,966.0,0.0
+12.25,34.0,966.0,0.0
+12.3,33.0,967.0,0.0
+12.35,33.0,967.0,0.0
+12.4,33.0,967.0,0.0
+12.45,33.0,967.0,0.0
+12.5,33.0,967.0,0.0
+12.55,33.0,967.0,0.0
+12.6,33.0,967.0,0.0
+12.65,33.0,967.0,0.0
+12.7,32.0,968.0,0.0
+12.75,32.0,968.0,0.0
+12.8,30.0,970.0,0.0
+12.85,30.0,970.0,0.0
+12.9,30.0,970.0,0.0
+12.95,30.0,970.0,0.0
+13.0,30.0,970.0,0.0
+13.05,30.0,970.0,0.0
+13.1,29.0,971.0,0.0
+13.15,29.0,971.0,0.0
+13.2,29.0,971.0,0.0
+13.25,28.0,972.0,0.0
+13.3,28.0,972.0,0.0
+13.35,28.0,972.0,0.0
+13.4,28.0,972.0,0.0
+13.45,27.0,973.0,0.0
+13.5,26.0,974.0,0.0
+13.55,26.0,974.0,0.0
+13.6,26.0,974.0,0.0
+13.65,26.0,974.0,0.0
+13.7,26.0,974.0,0.0
+13.75,26.0,974.0,0.0
+13.8,26.0,974.0,0.0
+13.85,26.0,974.0,0.0
+13.9,26.0,974.0,0.0
+13.95,25.0,975.0,0.0
+14.0,25.0,975.0,0.0
+14.05,25.0,975.0,0.0
+14.1,24.0,976.0,0.0
+14.15,24.0,976.0,0.0
+14.2,24.0,976.0,0.0
+14.25,24.0,976.0,0.0
+14.3,24.0,976.0,0.0
+14.35,22.0,978.0,0.0
+14.4,22.0,978.0,0.0
+14.45,22.0,978.0,0.0
+14.5,21.0,979.0,0.0
+14.55,21.0,979.0,0.0
+14.6,21.0,979.0,0.0
+14.65,21.0,979.0,0.0
+14.7,21.0,979.0,0.0
+14.75,21.0,979.0,0.0
+14.8,21.0,979.0,0.0
+14.85,21.0,979.0,0.0
+14.9,21.0,979.0,0.0
+14.95,21.0,979.0,0.0
+15.0,21.0,979.0,0.0
+15.05,21.0,979.0,0.0
+15.1,21.0,979.0,0.0
+15.15,21.0,979.0,0.0
+15.2,20.0,980.0,0.0
+15.25,20.0,980.0,0.0
+15.3,20.0,980.0,0.0
+15.35,19.0,981.0,0.0
+15.4,18.0,982.0,0.0
+15.45,18.0,982.0,0.0
+15.5,18.0,982.0,0.0
+15.55,18.0,982.0,0.0
+15.6,18.0,982.0,0.0
+15.65,18.0,982.0,0.0
+15.7,18.0,982.0,0.0
+15.75,18.0,982.0,0.0
+15.8,17.0,983.0,0.0
+15.85,17.0,983.0,0.0
+15.9,17.0,983.0,0.0
+15.95,17.0,983.0,0.0
+16.0,16.0,984.0,0.0
+16.05,14.0,986.0,0.0
+16.1,14.0,986.0,0.0
+16.15,13.0,987.0,0.0
+16.2,13.0,987.0,0.0
+16.25,13.0,987.0,0.0
+16.3,12.0,988.0,0.0
+16.35,12.0,988.0,0.0
+16.4,12.0,988.0,0.0
+16.45,12.0,988.0,0.0
+16.5,12.0,988.0,0.0
+16.55,11.0,989.0,0.0
+16.6,11.0,989.0,0.0
+16.65,11.0,989.0,0.0
+16.7,11.0,989.0,0.0
+16.75,11.0,989.0,0.0
+16.8,11.0,989.0,0.0
+16.85,10.0,990.0,0.0
+16.9,10.0,990.0,0.0
+16.95,10.0,990.0,0.0
+17.0,10.0,990.0,0.0
+17.05,10.0,990.0,0.0
+17.1,10.0,990.0,0.0
+17.15,10.0,990.0,0.0
+17.2,10.0,990.0,0.0
+17.25,10.0,990.0,0.0
+17.3,10.0,990.0,0.0
+17.35,10.0,990.0,0.0
+17.4,10.0,990.0,0.0
+17.45,9.0,991.0,0.0
+17.5,9.0,991.0,0.0
+17.55,9.0,991.0,0.0
+17.6,9.0,991.0,0.0
+17.65,9.0,991.0,0.0
+17.7,9.0,991.0,0.0
+17.75,9.0,991.0,0.0
+17.8,8.0,992.0,0.0
+17.85,8.0,992.0,0.0
+17.9,8.0,992.0,0.0
+17.95,8.0,992.0,0.0
+18.0,8.0,992.0,0.0
+18.05,8.0,992.0,0.0
+18.1,8.0,992.0,0.0
+18.15,8.0,992.0,0.0
+18.2,8.0,992.0,0.0
+18.25,8.0,992.0,0.0
+18.3,8.0,992.0,0.0
+18.35,8.0,992.0,0.0
+18.4,8.0,992.0,0.0
+18.45,8.0,992.0,0.0
+18.5,8.0,992.0,0.0
+18.55,8.0,992.0,0.0
+18.6,8.0,992.0,0.0
+18.65,8.0,992.0,0.0
+18.7,8.0,992.0,0.0
+18.75,8.0,992.0,0.0
+18.8,8.0,992.0,0.0
+18.85,6.0,994.0,0.0
+18.9,6.0,994.0,0.0
+18.95,6.0,994.0,0.0
+19.0,6.0,994.0,0.0
+19.05,6.0,994.0,0.0
+19.1,6.0,994.0,0.0
+19.15,6.0,994.0,0.0
+19.2,6.0,994.0,0.0
+19.25,6.0,994.0,0.0
+19.3,6.0,994.0,0.0
+19.35,6.0,994.0,0.0
+19.4,6.0,994.0,0.0
+19.45,6.0,994.0,0.0
+19.5,6.0,994.0,0.0
+19.55,5.0,995.0,0.0
+19.6,5.0,995.0,0.0
+19.65,5.0,995.0,0.0
+19.7,5.0,995.0,0.0
+19.75,5.0,995.0,0.0
+19.8,5.0,995.0,0.0
+19.85,5.0,995.0,0.0
+19.9,5.0,995.0,0.0
+19.95,5.0,995.0,0.0
+20.0,5.0,995.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv13.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv13.csv
new file mode 100644
index 0000000000..fd68bf6983
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv13.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,2.0,0.0,998.0
+0.15,3.0,0.0,997.0
+0.2,6.0,0.0,994.0
+0.25,7.0,0.0,993.0
+0.3,9.0,0.0,991.0
+0.35,12.0,0.0,988.0
+0.4,20.0,0.0,980.0
+0.45,35.0,0.0,965.0
+0.5,55.0,1.0,944.0
+0.55,78.0,2.0,920.0
+0.6,106.0,5.0,889.0
+0.65,150.0,7.0,843.0
+0.7,196.0,13.0,791.0
+0.75,268.0,13.0,719.0
+0.8,356.0,19.0,625.0
+0.85,438.0,27.0,535.0
+0.9,530.0,37.0,433.0
+0.95,609.0,47.0,344.0
+1.0,672.0,61.0,267.0
+1.05,744.0,73.0,183.0
+1.1,768.0,87.0,145.0
+1.15,800.0,95.0,105.0
+1.2,823.0,100.0,77.0
+1.25,843.0,106.0,51.0
+1.3,848.0,118.0,34.0
+1.35,850.0,127.0,23.0
+1.4,845.0,140.0,15.0
+1.45,842.0,147.0,11.0
+1.5,829.0,162.0,9.0
+1.55,812.0,179.0,9.0
+1.6,802.0,191.0,7.0
+1.65,789.0,205.0,6.0
+1.7,776.0,221.0,3.0
+1.75,763.0,234.0,3.0
+1.8,748.0,249.0,3.0
+1.85,730.0,268.0,2.0
+1.9,716.0,284.0,0.0
+1.95,704.0,296.0,0.0
+2.0,696.0,304.0,0.0
+2.05,687.0,313.0,0.0
+2.1,670.0,330.0,0.0
+2.15,659.0,341.0,0.0
+2.2,653.0,347.0,0.0
+2.25,645.0,355.0,0.0
+2.3,639.0,361.0,0.0
+2.35,633.0,367.0,0.0
+2.4,620.0,380.0,0.0
+2.45,613.0,387.0,0.0
+2.5,606.0,394.0,0.0
+2.55,599.0,401.0,0.0
+2.6,585.0,415.0,0.0
+2.65,581.0,419.0,0.0
+2.7,578.0,422.0,0.0
+2.75,573.0,427.0,0.0
+2.8,562.0,438.0,0.0
+2.85,556.0,444.0,0.0
+2.9,546.0,454.0,0.0
+2.95,540.0,460.0,0.0
+3.0,536.0,464.0,0.0
+3.05,528.0,472.0,0.0
+3.1,520.0,480.0,0.0
+3.15,509.0,491.0,0.0
+3.2,499.0,501.0,0.0
+3.25,492.0,508.0,0.0
+3.3,485.0,515.0,0.0
+3.35,476.0,524.0,0.0
+3.4,471.0,529.0,0.0
+3.45,466.0,534.0,0.0
+3.5,461.0,539.0,0.0
+3.55,458.0,542.0,0.0
+3.6,445.0,555.0,0.0
+3.65,435.0,565.0,0.0
+3.7,426.0,574.0,0.0
+3.75,422.0,578.0,0.0
+3.8,413.0,587.0,0.0
+3.85,409.0,591.0,0.0
+3.9,399.0,601.0,0.0
+3.95,391.0,609.0,0.0
+4.0,385.0,615.0,0.0
+4.05,381.0,619.0,0.0
+4.1,374.0,626.0,0.0
+4.15,369.0,631.0,0.0
+4.2,364.0,636.0,0.0
+4.25,356.0,644.0,0.0
+4.3,349.0,651.0,0.0
+4.35,342.0,658.0,0.0
+4.4,339.0,661.0,0.0
+4.45,337.0,663.0,0.0
+4.5,330.0,670.0,0.0
+4.55,322.0,678.0,0.0
+4.6,316.0,684.0,0.0
+4.65,309.0,691.0,0.0
+4.7,309.0,691.0,0.0
+4.75,303.0,697.0,0.0
+4.8,299.0,701.0,0.0
+4.85,287.0,713.0,0.0
+4.9,283.0,717.0,0.0
+4.95,277.0,723.0,0.0
+5.0,271.0,729.0,0.0
+5.05,268.0,732.0,0.0
+5.1,264.0,736.0,0.0
+5.15,262.0,738.0,0.0
+5.2,261.0,739.0,0.0
+5.25,257.0,743.0,0.0
+5.3,257.0,743.0,0.0
+5.35,255.0,745.0,0.0
+5.4,254.0,746.0,0.0
+5.45,248.0,752.0,0.0
+5.5,242.0,758.0,0.0
+5.55,237.0,763.0,0.0
+5.6,233.0,767.0,0.0
+5.65,231.0,769.0,0.0
+5.7,228.0,772.0,0.0
+5.75,223.0,777.0,0.0
+5.8,221.0,779.0,0.0
+5.85,216.0,784.0,0.0
+5.9,214.0,786.0,0.0
+5.95,208.0,792.0,0.0
+6.0,206.0,794.0,0.0
+6.05,204.0,796.0,0.0
+6.1,202.0,798.0,0.0
+6.15,201.0,799.0,0.0
+6.2,200.0,800.0,0.0
+6.25,198.0,802.0,0.0
+6.3,195.0,805.0,0.0
+6.35,194.0,806.0,0.0
+6.4,191.0,809.0,0.0
+6.45,185.0,815.0,0.0
+6.5,184.0,816.0,0.0
+6.55,180.0,820.0,0.0
+6.6,176.0,824.0,0.0
+6.65,176.0,824.0,0.0
+6.7,175.0,825.0,0.0
+6.75,172.0,828.0,0.0
+6.8,171.0,829.0,0.0
+6.85,171.0,829.0,0.0
+6.9,170.0,830.0,0.0
+6.95,168.0,832.0,0.0
+7.0,164.0,836.0,0.0
+7.05,162.0,838.0,0.0
+7.1,162.0,838.0,0.0
+7.15,160.0,840.0,0.0
+7.2,158.0,842.0,0.0
+7.25,157.0,843.0,0.0
+7.3,156.0,844.0,0.0
+7.35,156.0,844.0,0.0
+7.4,154.0,846.0,0.0
+7.45,152.0,848.0,0.0
+7.5,151.0,849.0,0.0
+7.55,149.0,851.0,0.0
+7.6,147.0,853.0,0.0
+7.65,146.0,854.0,0.0
+7.7,145.0,855.0,0.0
+7.75,144.0,856.0,0.0
+7.8,144.0,856.0,0.0
+7.85,141.0,859.0,0.0
+7.9,137.0,863.0,0.0
+7.95,136.0,864.0,0.0
+8.0,133.0,867.0,0.0
+8.05,128.0,872.0,0.0
+8.1,126.0,874.0,0.0
+8.15,125.0,875.0,0.0
+8.2,123.0,877.0,0.0
+8.25,123.0,877.0,0.0
+8.3,122.0,878.0,0.0
+8.35,120.0,880.0,0.0
+8.4,119.0,881.0,0.0
+8.45,117.0,883.0,0.0
+8.5,117.0,883.0,0.0
+8.55,114.0,886.0,0.0
+8.6,113.0,887.0,0.0
+8.65,111.0,889.0,0.0
+8.7,110.0,890.0,0.0
+8.75,108.0,892.0,0.0
+8.8,105.0,895.0,0.0
+8.85,104.0,896.0,0.0
+8.9,104.0,896.0,0.0
+8.95,104.0,896.0,0.0
+9.0,101.0,899.0,0.0
+9.05,99.0,901.0,0.0
+9.1,99.0,901.0,0.0
+9.15,97.0,903.0,0.0
+9.2,96.0,904.0,0.0
+9.25,94.0,906.0,0.0
+9.3,94.0,906.0,0.0
+9.35,93.0,907.0,0.0
+9.4,92.0,908.0,0.0
+9.45,89.0,911.0,0.0
+9.5,88.0,912.0,0.0
+9.55,87.0,913.0,0.0
+9.6,87.0,913.0,0.0
+9.65,85.0,915.0,0.0
+9.7,84.0,916.0,0.0
+9.75,84.0,916.0,0.0
+9.8,81.0,919.0,0.0
+9.85,79.0,921.0,0.0
+9.9,76.0,924.0,0.0
+9.95,76.0,924.0,0.0
+10.0,76.0,924.0,0.0
+10.05,75.0,925.0,0.0
+10.1,74.0,926.0,0.0
+10.15,73.0,927.0,0.0
+10.2,71.0,929.0,0.0
+10.25,71.0,929.0,0.0
+10.3,71.0,929.0,0.0
+10.35,67.0,933.0,0.0
+10.4,64.0,936.0,0.0
+10.45,64.0,936.0,0.0
+10.5,63.0,937.0,0.0
+10.55,62.0,938.0,0.0
+10.6,62.0,938.0,0.0
+10.65,61.0,939.0,0.0
+10.7,59.0,941.0,0.0
+10.75,57.0,943.0,0.0
+10.8,56.0,944.0,0.0
+10.85,54.0,946.0,0.0
+10.9,54.0,946.0,0.0
+10.95,54.0,946.0,0.0
+11.0,54.0,946.0,0.0
+11.05,53.0,947.0,0.0
+11.1,53.0,947.0,0.0
+11.15,52.0,948.0,0.0
+11.2,52.0,948.0,0.0
+11.25,51.0,949.0,0.0
+11.3,48.0,952.0,0.0
+11.35,48.0,952.0,0.0
+11.4,47.0,953.0,0.0
+11.45,45.0,955.0,0.0
+11.5,45.0,955.0,0.0
+11.55,44.0,956.0,0.0
+11.6,44.0,956.0,0.0
+11.65,43.0,957.0,0.0
+11.7,43.0,957.0,0.0
+11.75,43.0,957.0,0.0
+11.8,43.0,957.0,0.0
+11.85,42.0,958.0,0.0
+11.9,41.0,959.0,0.0
+11.95,40.0,960.0,0.0
+12.0,40.0,960.0,0.0
+12.05,40.0,960.0,0.0
+12.1,40.0,960.0,0.0
+12.15,40.0,960.0,0.0
+12.2,40.0,960.0,0.0
+12.25,39.0,961.0,0.0
+12.3,38.0,962.0,0.0
+12.35,37.0,963.0,0.0
+12.4,36.0,964.0,0.0
+12.45,35.0,965.0,0.0
+12.5,35.0,965.0,0.0
+12.55,35.0,965.0,0.0
+12.6,35.0,965.0,0.0
+12.65,34.0,966.0,0.0
+12.7,33.0,967.0,0.0
+12.75,33.0,967.0,0.0
+12.8,31.0,969.0,0.0
+12.85,31.0,969.0,0.0
+12.9,30.0,970.0,0.0
+12.95,30.0,970.0,0.0
+13.0,30.0,970.0,0.0
+13.05,30.0,970.0,0.0
+13.1,30.0,970.0,0.0
+13.15,30.0,970.0,0.0
+13.2,30.0,970.0,0.0
+13.25,30.0,970.0,0.0
+13.3,30.0,970.0,0.0
+13.35,30.0,970.0,0.0
+13.4,29.0,971.0,0.0
+13.45,28.0,972.0,0.0
+13.5,28.0,972.0,0.0
+13.55,28.0,972.0,0.0
+13.6,27.0,973.0,0.0
+13.65,26.0,974.0,0.0
+13.7,25.0,975.0,0.0
+13.75,25.0,975.0,0.0
+13.8,25.0,975.0,0.0
+13.85,24.0,976.0,0.0
+13.9,24.0,976.0,0.0
+13.95,23.0,977.0,0.0
+14.0,23.0,977.0,0.0
+14.05,23.0,977.0,0.0
+14.1,23.0,977.0,0.0
+14.15,22.0,978.0,0.0
+14.2,22.0,978.0,0.0
+14.25,21.0,979.0,0.0
+14.3,21.0,979.0,0.0
+14.35,20.0,980.0,0.0
+14.4,19.0,981.0,0.0
+14.45,19.0,981.0,0.0
+14.5,19.0,981.0,0.0
+14.55,19.0,981.0,0.0
+14.6,18.0,982.0,0.0
+14.65,17.0,983.0,0.0
+14.7,17.0,983.0,0.0
+14.75,17.0,983.0,0.0
+14.8,17.0,983.0,0.0
+14.85,17.0,983.0,0.0
+14.9,16.0,984.0,0.0
+14.95,16.0,984.0,0.0
+15.0,16.0,984.0,0.0
+15.05,15.0,985.0,0.0
+15.1,15.0,985.0,0.0
+15.15,15.0,985.0,0.0
+15.2,14.0,986.0,0.0
+15.25,14.0,986.0,0.0
+15.3,13.0,987.0,0.0
+15.35,12.0,988.0,0.0
+15.4,12.0,988.0,0.0
+15.45,12.0,988.0,0.0
+15.5,12.0,988.0,0.0
+15.55,12.0,988.0,0.0
+15.6,12.0,988.0,0.0
+15.65,11.0,989.0,0.0
+15.7,11.0,989.0,0.0
+15.75,11.0,989.0,0.0
+15.8,11.0,989.0,0.0
+15.85,11.0,989.0,0.0
+15.9,11.0,989.0,0.0
+15.95,11.0,989.0,0.0
+16.0,11.0,989.0,0.0
+16.05,11.0,989.0,0.0
+16.1,11.0,989.0,0.0
+16.15,11.0,989.0,0.0
+16.2,11.0,989.0,0.0
+16.25,11.0,989.0,0.0
+16.3,11.0,989.0,0.0
+16.35,11.0,989.0,0.0
+16.4,11.0,989.0,0.0
+16.45,11.0,989.0,0.0
+16.5,11.0,989.0,0.0
+16.55,10.0,990.0,0.0
+16.6,10.0,990.0,0.0
+16.65,10.0,990.0,0.0
+16.7,10.0,990.0,0.0
+16.75,9.0,991.0,0.0
+16.8,9.0,991.0,0.0
+16.85,9.0,991.0,0.0
+16.9,9.0,991.0,0.0
+16.95,8.0,992.0,0.0
+17.0,8.0,992.0,0.0
+17.05,8.0,992.0,0.0
+17.1,8.0,992.0,0.0
+17.15,8.0,992.0,0.0
+17.2,8.0,992.0,0.0
+17.25,7.0,993.0,0.0
+17.3,7.0,993.0,0.0
+17.35,7.0,993.0,0.0
+17.4,7.0,993.0,0.0
+17.45,7.0,993.0,0.0
+17.5,7.0,993.0,0.0
+17.55,7.0,993.0,0.0
+17.6,7.0,993.0,0.0
+17.65,7.0,993.0,0.0
+17.7,7.0,993.0,0.0
+17.75,7.0,993.0,0.0
+17.8,7.0,993.0,0.0
+17.85,7.0,993.0,0.0
+17.9,7.0,993.0,0.0
+17.95,7.0,993.0,0.0
+18.0,7.0,993.0,0.0
+18.05,7.0,993.0,0.0
+18.1,7.0,993.0,0.0
+18.15,6.0,994.0,0.0
+18.2,6.0,994.0,0.0
+18.25,6.0,994.0,0.0
+18.3,6.0,994.0,0.0
+18.35,6.0,994.0,0.0
+18.4,6.0,994.0,0.0
+18.45,6.0,994.0,0.0
+18.5,6.0,994.0,0.0
+18.55,5.0,995.0,0.0
+18.6,5.0,995.0,0.0
+18.65,5.0,995.0,0.0
+18.7,5.0,995.0,0.0
+18.75,5.0,995.0,0.0
+18.8,5.0,995.0,0.0
+18.85,4.0,996.0,0.0
+18.9,4.0,996.0,0.0
+18.95,4.0,996.0,0.0
+19.0,4.0,996.0,0.0
+19.05,4.0,996.0,0.0
+19.1,4.0,996.0,0.0
+19.15,4.0,996.0,0.0
+19.2,4.0,996.0,0.0
+19.25,4.0,996.0,0.0
+19.3,4.0,996.0,0.0
+19.35,4.0,996.0,0.0
+19.4,4.0,996.0,0.0
+19.45,4.0,996.0,0.0
+19.5,4.0,996.0,0.0
+19.55,4.0,996.0,0.0
+19.6,4.0,996.0,0.0
+19.65,3.0,997.0,0.0
+19.7,3.0,997.0,0.0
+19.75,3.0,997.0,0.0
+19.8,3.0,997.0,0.0
+19.85,3.0,997.0,0.0
+19.9,3.0,997.0,0.0
+19.95,3.0,997.0,0.0
+20.0,3.0,997.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv14.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv14.csv
new file mode 100644
index 0000000000..286d0f6bfd
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv14.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,5.0,0.0,995.0
+0.2,7.0,0.0,993.0
+0.25,9.0,0.0,991.0
+0.3,12.0,0.0,988.0
+0.35,23.0,0.0,977.0
+0.4,33.0,0.0,967.0
+0.45,59.0,1.0,940.0
+0.5,81.0,1.0,918.0
+0.55,138.0,1.0,861.0
+0.6,191.0,3.0,806.0
+0.65,261.0,6.0,733.0
+0.7,366.0,10.0,624.0
+0.75,466.0,18.0,516.0
+0.8,578.0,22.0,400.0
+0.85,657.0,34.0,309.0
+0.9,731.0,38.0,231.0
+0.95,773.0,46.0,181.0
+1.0,804.0,54.0,142.0
+1.05,827.0,68.0,105.0
+1.1,844.0,81.0,75.0
+1.15,857.0,91.0,52.0
+1.2,850.0,115.0,35.0
+1.25,851.0,125.0,24.0
+1.3,842.0,141.0,17.0
+1.35,835.0,152.0,13.0
+1.4,825.0,165.0,10.0
+1.45,816.0,178.0,6.0
+1.5,812.0,186.0,2.0
+1.55,794.0,205.0,1.0
+1.6,778.0,221.0,1.0
+1.65,769.0,230.0,1.0
+1.7,753.0,246.0,1.0
+1.75,743.0,257.0,0.0
+1.8,732.0,268.0,0.0
+1.85,718.0,282.0,0.0
+1.9,704.0,296.0,0.0
+1.95,696.0,304.0,0.0
+2.0,690.0,310.0,0.0
+2.05,686.0,314.0,0.0
+2.1,678.0,322.0,0.0
+2.15,663.0,337.0,0.0
+2.2,648.0,352.0,0.0
+2.25,639.0,361.0,0.0
+2.3,626.0,374.0,0.0
+2.35,620.0,380.0,0.0
+2.4,607.0,393.0,0.0
+2.45,599.0,401.0,0.0
+2.5,590.0,410.0,0.0
+2.55,583.0,417.0,0.0
+2.6,576.0,424.0,0.0
+2.65,565.0,435.0,0.0
+2.7,556.0,444.0,0.0
+2.75,545.0,455.0,0.0
+2.8,541.0,459.0,0.0
+2.85,530.0,470.0,0.0
+2.9,523.0,477.0,0.0
+2.95,517.0,483.0,0.0
+3.0,511.0,489.0,0.0
+3.05,504.0,496.0,0.0
+3.1,494.0,506.0,0.0
+3.15,485.0,515.0,0.0
+3.2,480.0,520.0,0.0
+3.25,471.0,529.0,0.0
+3.3,468.0,532.0,0.0
+3.35,462.0,538.0,0.0
+3.4,456.0,544.0,0.0
+3.45,451.0,549.0,0.0
+3.5,448.0,552.0,0.0
+3.55,441.0,559.0,0.0
+3.6,431.0,569.0,0.0
+3.65,426.0,574.0,0.0
+3.7,417.0,583.0,0.0
+3.75,404.0,596.0,0.0
+3.8,393.0,607.0,0.0
+3.85,389.0,611.0,0.0
+3.9,386.0,614.0,0.0
+3.95,381.0,619.0,0.0
+4.0,373.0,627.0,0.0
+4.05,367.0,633.0,0.0
+4.1,364.0,636.0,0.0
+4.15,355.0,645.0,0.0
+4.2,351.0,649.0,0.0
+4.25,349.0,651.0,0.0
+4.3,344.0,656.0,0.0
+4.35,336.0,664.0,0.0
+4.4,331.0,669.0,0.0
+4.45,327.0,673.0,0.0
+4.5,324.0,676.0,0.0
+4.55,313.0,687.0,0.0
+4.6,309.0,691.0,0.0
+4.65,304.0,696.0,0.0
+4.7,297.0,703.0,0.0
+4.75,294.0,706.0,0.0
+4.8,288.0,712.0,0.0
+4.85,283.0,717.0,0.0
+4.9,279.0,721.0,0.0
+4.95,275.0,725.0,0.0
+5.0,273.0,727.0,0.0
+5.05,266.0,734.0,0.0
+5.1,263.0,737.0,0.0
+5.15,260.0,740.0,0.0
+5.2,257.0,743.0,0.0
+5.25,253.0,747.0,0.0
+5.3,248.0,752.0,0.0
+5.35,247.0,753.0,0.0
+5.4,245.0,755.0,0.0
+5.45,243.0,757.0,0.0
+5.5,242.0,758.0,0.0
+5.55,237.0,763.0,0.0
+5.6,233.0,767.0,0.0
+5.65,232.0,768.0,0.0
+5.7,232.0,768.0,0.0
+5.75,227.0,773.0,0.0
+5.8,226.0,774.0,0.0
+5.85,220.0,780.0,0.0
+5.9,220.0,780.0,0.0
+5.95,217.0,783.0,0.0
+6.0,214.0,786.0,0.0
+6.05,208.0,792.0,0.0
+6.1,205.0,795.0,0.0
+6.15,203.0,797.0,0.0
+6.2,201.0,799.0,0.0
+6.25,201.0,799.0,0.0
+6.3,199.0,801.0,0.0
+6.35,195.0,805.0,0.0
+6.4,192.0,808.0,0.0
+6.45,189.0,811.0,0.0
+6.5,188.0,812.0,0.0
+6.55,183.0,817.0,0.0
+6.6,179.0,821.0,0.0
+6.65,176.0,824.0,0.0
+6.7,174.0,826.0,0.0
+6.75,171.0,829.0,0.0
+6.8,170.0,830.0,0.0
+6.85,170.0,830.0,0.0
+6.9,166.0,834.0,0.0
+6.95,165.0,835.0,0.0
+7.0,163.0,837.0,0.0
+7.05,159.0,841.0,0.0
+7.1,157.0,843.0,0.0
+7.15,155.0,845.0,0.0
+7.2,150.0,850.0,0.0
+7.25,146.0,854.0,0.0
+7.3,142.0,858.0,0.0
+7.35,137.0,863.0,0.0
+7.4,133.0,867.0,0.0
+7.45,130.0,870.0,0.0
+7.5,130.0,870.0,0.0
+7.55,128.0,872.0,0.0
+7.6,127.0,873.0,0.0
+7.65,123.0,877.0,0.0
+7.7,121.0,879.0,0.0
+7.75,120.0,880.0,0.0
+7.8,117.0,883.0,0.0
+7.85,116.0,884.0,0.0
+7.9,116.0,884.0,0.0
+7.95,113.0,887.0,0.0
+8.0,113.0,887.0,0.0
+8.05,113.0,887.0,0.0
+8.1,111.0,889.0,0.0
+8.15,110.0,890.0,0.0
+8.2,108.0,892.0,0.0
+8.25,105.0,895.0,0.0
+8.3,104.0,896.0,0.0
+8.35,103.0,897.0,0.0
+8.4,102.0,898.0,0.0
+8.45,96.0,904.0,0.0
+8.5,93.0,907.0,0.0
+8.55,92.0,908.0,0.0
+8.6,90.0,910.0,0.0
+8.65,90.0,910.0,0.0
+8.7,90.0,910.0,0.0
+8.75,90.0,910.0,0.0
+8.8,86.0,914.0,0.0
+8.85,86.0,914.0,0.0
+8.9,86.0,914.0,0.0
+8.95,85.0,915.0,0.0
+9.0,84.0,916.0,0.0
+9.05,84.0,916.0,0.0
+9.1,82.0,918.0,0.0
+9.15,81.0,919.0,0.0
+9.2,79.0,921.0,0.0
+9.25,77.0,923.0,0.0
+9.3,76.0,924.0,0.0
+9.35,76.0,924.0,0.0
+9.4,76.0,924.0,0.0
+9.45,74.0,926.0,0.0
+9.5,74.0,926.0,0.0
+9.55,73.0,927.0,0.0
+9.6,72.0,928.0,0.0
+9.65,70.0,930.0,0.0
+9.7,69.0,931.0,0.0
+9.75,68.0,932.0,0.0
+9.8,68.0,932.0,0.0
+9.85,65.0,935.0,0.0
+9.9,64.0,936.0,0.0
+9.95,64.0,936.0,0.0
+10.0,62.0,938.0,0.0
+10.05,61.0,939.0,0.0
+10.1,61.0,939.0,0.0
+10.15,61.0,939.0,0.0
+10.2,59.0,941.0,0.0
+10.25,57.0,943.0,0.0
+10.3,57.0,943.0,0.0
+10.35,56.0,944.0,0.0
+10.4,56.0,944.0,0.0
+10.45,55.0,945.0,0.0
+10.5,55.0,945.0,0.0
+10.55,53.0,947.0,0.0
+10.6,52.0,948.0,0.0
+10.65,51.0,949.0,0.0
+10.7,51.0,949.0,0.0
+10.75,49.0,951.0,0.0
+10.8,49.0,951.0,0.0
+10.85,48.0,952.0,0.0
+10.9,47.0,953.0,0.0
+10.95,46.0,954.0,0.0
+11.0,46.0,954.0,0.0
+11.05,46.0,954.0,0.0
+11.1,46.0,954.0,0.0
+11.15,45.0,955.0,0.0
+11.2,45.0,955.0,0.0
+11.25,44.0,956.0,0.0
+11.3,44.0,956.0,0.0
+11.35,42.0,958.0,0.0
+11.4,41.0,959.0,0.0
+11.45,40.0,960.0,0.0
+11.5,40.0,960.0,0.0
+11.55,39.0,961.0,0.0
+11.6,38.0,962.0,0.0
+11.65,38.0,962.0,0.0
+11.7,38.0,962.0,0.0
+11.75,38.0,962.0,0.0
+11.8,38.0,962.0,0.0
+11.85,38.0,962.0,0.0
+11.9,38.0,962.0,0.0
+11.95,38.0,962.0,0.0
+12.0,38.0,962.0,0.0
+12.05,38.0,962.0,0.0
+12.1,37.0,963.0,0.0
+12.15,35.0,965.0,0.0
+12.2,35.0,965.0,0.0
+12.25,34.0,966.0,0.0
+12.3,34.0,966.0,0.0
+12.35,34.0,966.0,0.0
+12.4,34.0,966.0,0.0
+12.45,34.0,966.0,0.0
+12.5,34.0,966.0,0.0
+12.55,33.0,967.0,0.0
+12.6,33.0,967.0,0.0
+12.65,33.0,967.0,0.0
+12.7,33.0,967.0,0.0
+12.75,32.0,968.0,0.0
+12.8,32.0,968.0,0.0
+12.85,32.0,968.0,0.0
+12.9,32.0,968.0,0.0
+12.95,32.0,968.0,0.0
+13.0,32.0,968.0,0.0
+13.05,31.0,969.0,0.0
+13.1,30.0,970.0,0.0
+13.15,29.0,971.0,0.0
+13.2,28.0,972.0,0.0
+13.25,28.0,972.0,0.0
+13.3,27.0,973.0,0.0
+13.35,26.0,974.0,0.0
+13.4,26.0,974.0,0.0
+13.45,26.0,974.0,0.0
+13.5,25.0,975.0,0.0
+13.55,25.0,975.0,0.0
+13.6,25.0,975.0,0.0
+13.65,25.0,975.0,0.0
+13.7,25.0,975.0,0.0
+13.75,25.0,975.0,0.0
+13.8,25.0,975.0,0.0
+13.85,25.0,975.0,0.0
+13.9,25.0,975.0,0.0
+13.95,24.0,976.0,0.0
+14.0,23.0,977.0,0.0
+14.05,23.0,977.0,0.0
+14.1,22.0,978.0,0.0
+14.15,22.0,978.0,0.0
+14.2,21.0,979.0,0.0
+14.25,21.0,979.0,0.0
+14.3,21.0,979.0,0.0
+14.35,21.0,979.0,0.0
+14.4,21.0,979.0,0.0
+14.45,21.0,979.0,0.0
+14.5,21.0,979.0,0.0
+14.55,21.0,979.0,0.0
+14.6,21.0,979.0,0.0
+14.65,21.0,979.0,0.0
+14.7,21.0,979.0,0.0
+14.75,20.0,980.0,0.0
+14.8,20.0,980.0,0.0
+14.85,20.0,980.0,0.0
+14.9,19.0,981.0,0.0
+14.95,19.0,981.0,0.0
+15.0,19.0,981.0,0.0
+15.05,19.0,981.0,0.0
+15.1,19.0,981.0,0.0
+15.15,19.0,981.0,0.0
+15.2,19.0,981.0,0.0
+15.25,19.0,981.0,0.0
+15.3,19.0,981.0,0.0
+15.35,19.0,981.0,0.0
+15.4,19.0,981.0,0.0
+15.45,18.0,982.0,0.0
+15.5,18.0,982.0,0.0
+15.55,18.0,982.0,0.0
+15.6,18.0,982.0,0.0
+15.65,18.0,982.0,0.0
+15.7,18.0,982.0,0.0
+15.75,17.0,983.0,0.0
+15.8,17.0,983.0,0.0
+15.85,17.0,983.0,0.0
+15.9,16.0,984.0,0.0
+15.95,16.0,984.0,0.0
+16.0,16.0,984.0,0.0
+16.05,16.0,984.0,0.0
+16.1,14.0,986.0,0.0
+16.15,13.0,987.0,0.0
+16.2,13.0,987.0,0.0
+16.25,13.0,987.0,0.0
+16.3,13.0,987.0,0.0
+16.35,13.0,987.0,0.0
+16.4,13.0,987.0,0.0
+16.45,13.0,987.0,0.0
+16.5,13.0,987.0,0.0
+16.55,13.0,987.0,0.0
+16.6,13.0,987.0,0.0
+16.65,13.0,987.0,0.0
+16.7,13.0,987.0,0.0
+16.75,13.0,987.0,0.0
+16.8,12.0,988.0,0.0
+16.85,11.0,989.0,0.0
+16.9,11.0,989.0,0.0
+16.95,11.0,989.0,0.0
+17.0,11.0,989.0,0.0
+17.05,11.0,989.0,0.0
+17.1,10.0,990.0,0.0
+17.15,9.0,991.0,0.0
+17.2,9.0,991.0,0.0
+17.25,9.0,991.0,0.0
+17.3,9.0,991.0,0.0
+17.35,9.0,991.0,0.0
+17.4,9.0,991.0,0.0
+17.45,9.0,991.0,0.0
+17.5,9.0,991.0,0.0
+17.55,9.0,991.0,0.0
+17.6,9.0,991.0,0.0
+17.65,9.0,991.0,0.0
+17.7,9.0,991.0,0.0
+17.75,9.0,991.0,0.0
+17.8,9.0,991.0,0.0
+17.85,8.0,992.0,0.0
+17.9,8.0,992.0,0.0
+17.95,8.0,992.0,0.0
+18.0,8.0,992.0,0.0
+18.05,8.0,992.0,0.0
+18.1,8.0,992.0,0.0
+18.15,8.0,992.0,0.0
+18.2,7.0,993.0,0.0
+18.25,7.0,993.0,0.0
+18.3,7.0,993.0,0.0
+18.35,6.0,994.0,0.0
+18.4,6.0,994.0,0.0
+18.45,6.0,994.0,0.0
+18.5,5.0,995.0,0.0
+18.55,5.0,995.0,0.0
+18.6,5.0,995.0,0.0
+18.65,5.0,995.0,0.0
+18.7,5.0,995.0,0.0
+18.75,5.0,995.0,0.0
+18.8,5.0,995.0,0.0
+18.85,5.0,995.0,0.0
+18.9,5.0,995.0,0.0
+18.95,5.0,995.0,0.0
+19.0,5.0,995.0,0.0
+19.05,5.0,995.0,0.0
+19.1,5.0,995.0,0.0
+19.15,5.0,995.0,0.0
+19.2,5.0,995.0,0.0
+19.25,5.0,995.0,0.0
+19.3,5.0,995.0,0.0
+19.35,5.0,995.0,0.0
+19.4,5.0,995.0,0.0
+19.45,5.0,995.0,0.0
+19.5,5.0,995.0,0.0
+19.55,5.0,995.0,0.0
+19.6,5.0,995.0,0.0
+19.65,5.0,995.0,0.0
+19.7,4.0,996.0,0.0
+19.75,4.0,996.0,0.0
+19.8,4.0,996.0,0.0
+19.85,4.0,996.0,0.0
+19.9,4.0,996.0,0.0
+19.95,3.0,997.0,0.0
+20.0,3.0,997.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv15.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv15.csv
new file mode 100644
index 0000000000..bf2046570f
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv15.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,1.0,0.0,999.0
+0.2,2.0,0.0,998.0
+0.25,2.0,0.0,998.0
+0.3,2.0,0.0,998.0
+0.35,2.0,0.0,998.0
+0.4,2.0,0.0,998.0
+0.45,2.0,0.0,998.0
+0.5,2.0,0.0,998.0
+0.55,4.0,0.0,996.0
+0.6,6.0,0.0,994.0
+0.65,11.0,0.0,989.0
+0.7,17.0,0.0,983.0
+0.75,26.0,1.0,973.0
+0.8,34.0,2.0,964.0
+0.85,50.0,3.0,947.0
+0.9,72.0,3.0,925.0
+0.95,105.0,4.0,891.0
+1.0,163.0,5.0,832.0
+1.05,220.0,8.0,772.0
+1.1,286.0,14.0,700.0
+1.15,365.0,18.0,617.0
+1.2,461.0,22.0,517.0
+1.25,560.0,27.0,413.0
+1.3,653.0,32.0,315.0
+1.35,720.0,39.0,241.0
+1.4,766.0,52.0,182.0
+1.45,798.0,65.0,137.0
+1.5,832.0,74.0,94.0
+1.55,851.0,85.0,64.0
+1.6,862.0,96.0,42.0
+1.65,872.0,105.0,23.0
+1.7,865.0,118.0,17.0
+1.75,863.0,129.0,8.0
+1.8,854.0,140.0,6.0
+1.85,849.0,149.0,2.0
+1.9,840.0,158.0,2.0
+1.95,828.0,171.0,1.0
+2.0,819.0,180.0,1.0
+2.05,808.0,191.0,1.0
+2.1,795.0,204.0,1.0
+2.15,782.0,217.0,1.0
+2.2,770.0,229.0,1.0
+2.25,756.0,243.0,1.0
+2.3,747.0,252.0,1.0
+2.35,730.0,269.0,1.0
+2.4,721.0,278.0,1.0
+2.45,709.0,290.0,1.0
+2.5,700.0,299.0,1.0
+2.55,688.0,312.0,0.0
+2.6,677.0,323.0,0.0
+2.65,670.0,330.0,0.0
+2.7,661.0,339.0,0.0
+2.75,651.0,349.0,0.0
+2.8,642.0,358.0,0.0
+2.85,634.0,366.0,0.0
+2.9,622.0,378.0,0.0
+2.95,613.0,387.0,0.0
+3.0,604.0,396.0,0.0
+3.05,597.0,403.0,0.0
+3.1,589.0,411.0,0.0
+3.15,580.0,420.0,0.0
+3.2,569.0,431.0,0.0
+3.25,558.0,442.0,0.0
+3.3,549.0,451.0,0.0
+3.35,539.0,461.0,0.0
+3.4,533.0,467.0,0.0
+3.45,526.0,474.0,0.0
+3.5,520.0,480.0,0.0
+3.55,510.0,490.0,0.0
+3.6,501.0,499.0,0.0
+3.65,496.0,504.0,0.0
+3.7,494.0,506.0,0.0
+3.75,483.0,517.0,0.0
+3.8,476.0,524.0,0.0
+3.85,462.0,538.0,0.0
+3.9,454.0,546.0,0.0
+3.95,448.0,552.0,0.0
+4.0,442.0,558.0,0.0
+4.05,437.0,563.0,0.0
+4.1,429.0,571.0,0.0
+4.15,421.0,579.0,0.0
+4.2,418.0,582.0,0.0
+4.25,414.0,586.0,0.0
+4.3,411.0,589.0,0.0
+4.35,410.0,590.0,0.0
+4.4,407.0,593.0,0.0
+4.45,400.0,600.0,0.0
+4.5,394.0,606.0,0.0
+4.55,389.0,611.0,0.0
+4.6,384.0,616.0,0.0
+4.65,379.0,621.0,0.0
+4.7,373.0,627.0,0.0
+4.75,365.0,635.0,0.0
+4.8,357.0,643.0,0.0
+4.85,349.0,651.0,0.0
+4.9,343.0,657.0,0.0
+4.95,339.0,661.0,0.0
+5.0,331.0,669.0,0.0
+5.05,327.0,673.0,0.0
+5.1,321.0,679.0,0.0
+5.15,315.0,685.0,0.0
+5.2,310.0,690.0,0.0
+5.25,307.0,693.0,0.0
+5.3,307.0,693.0,0.0
+5.35,301.0,699.0,0.0
+5.4,296.0,704.0,0.0
+5.45,293.0,707.0,0.0
+5.5,287.0,713.0,0.0
+5.55,283.0,717.0,0.0
+5.6,279.0,721.0,0.0
+5.65,278.0,722.0,0.0
+5.7,273.0,727.0,0.0
+5.75,272.0,728.0,0.0
+5.8,269.0,731.0,0.0
+5.85,264.0,736.0,0.0
+5.9,261.0,739.0,0.0
+5.95,256.0,744.0,0.0
+6.0,254.0,746.0,0.0
+6.05,251.0,749.0,0.0
+6.1,249.0,751.0,0.0
+6.15,244.0,756.0,0.0
+6.2,241.0,759.0,0.0
+6.25,235.0,765.0,0.0
+6.3,233.0,767.0,0.0
+6.35,228.0,772.0,0.0
+6.4,226.0,774.0,0.0
+6.45,221.0,779.0,0.0
+6.5,219.0,781.0,0.0
+6.55,215.0,785.0,0.0
+6.6,214.0,786.0,0.0
+6.65,213.0,787.0,0.0
+6.7,211.0,789.0,0.0
+6.75,209.0,791.0,0.0
+6.8,207.0,793.0,0.0
+6.85,204.0,796.0,0.0
+6.9,199.0,801.0,0.0
+6.95,194.0,806.0,0.0
+7.0,192.0,808.0,0.0
+7.05,188.0,812.0,0.0
+7.1,188.0,812.0,0.0
+7.15,187.0,813.0,0.0
+7.2,183.0,817.0,0.0
+7.25,182.0,818.0,0.0
+7.3,180.0,820.0,0.0
+7.35,179.0,821.0,0.0
+7.4,176.0,824.0,0.0
+7.45,174.0,826.0,0.0
+7.5,172.0,828.0,0.0
+7.55,169.0,831.0,0.0
+7.6,165.0,835.0,0.0
+7.65,162.0,838.0,0.0
+7.7,159.0,841.0,0.0
+7.75,158.0,842.0,0.0
+7.8,155.0,845.0,0.0
+7.85,151.0,849.0,0.0
+7.9,148.0,852.0,0.0
+7.95,146.0,854.0,0.0
+8.0,143.0,857.0,0.0
+8.05,143.0,857.0,0.0
+8.1,143.0,857.0,0.0
+8.15,143.0,857.0,0.0
+8.2,138.0,862.0,0.0
+8.25,135.0,865.0,0.0
+8.3,133.0,867.0,0.0
+8.35,133.0,867.0,0.0
+8.4,132.0,868.0,0.0
+8.45,129.0,871.0,0.0
+8.5,129.0,871.0,0.0
+8.55,127.0,873.0,0.0
+8.6,124.0,876.0,0.0
+8.65,124.0,876.0,0.0
+8.7,124.0,876.0,0.0
+8.75,123.0,877.0,0.0
+8.8,120.0,880.0,0.0
+8.85,120.0,880.0,0.0
+8.9,119.0,881.0,0.0
+8.95,118.0,882.0,0.0
+9.0,113.0,887.0,0.0
+9.05,110.0,890.0,0.0
+9.1,107.0,893.0,0.0
+9.15,104.0,896.0,0.0
+9.2,101.0,899.0,0.0
+9.25,100.0,900.0,0.0
+9.3,98.0,902.0,0.0
+9.35,95.0,905.0,0.0
+9.4,93.0,907.0,0.0
+9.45,91.0,909.0,0.0
+9.5,89.0,911.0,0.0
+9.55,89.0,911.0,0.0
+9.6,86.0,914.0,0.0
+9.65,85.0,915.0,0.0
+9.7,82.0,918.0,0.0
+9.75,81.0,919.0,0.0
+9.8,80.0,920.0,0.0
+9.85,80.0,920.0,0.0
+9.9,79.0,921.0,0.0
+9.95,78.0,922.0,0.0
+10.0,77.0,923.0,0.0
+10.05,77.0,923.0,0.0
+10.1,75.0,925.0,0.0
+10.15,75.0,925.0,0.0
+10.2,75.0,925.0,0.0
+10.25,75.0,925.0,0.0
+10.3,73.0,927.0,0.0
+10.35,73.0,927.0,0.0
+10.4,73.0,927.0,0.0
+10.45,72.0,928.0,0.0
+10.5,70.0,930.0,0.0
+10.55,69.0,931.0,0.0
+10.6,68.0,932.0,0.0
+10.65,67.0,933.0,0.0
+10.7,66.0,934.0,0.0
+10.75,66.0,934.0,0.0
+10.8,66.0,934.0,0.0
+10.85,65.0,935.0,0.0
+10.9,64.0,936.0,0.0
+10.95,62.0,938.0,0.0
+11.0,61.0,939.0,0.0
+11.05,61.0,939.0,0.0
+11.1,61.0,939.0,0.0
+11.15,60.0,940.0,0.0
+11.2,60.0,940.0,0.0
+11.25,59.0,941.0,0.0
+11.3,56.0,944.0,0.0
+11.35,54.0,946.0,0.0
+11.4,52.0,948.0,0.0
+11.45,50.0,950.0,0.0
+11.5,48.0,952.0,0.0
+11.55,47.0,953.0,0.0
+11.6,47.0,953.0,0.0
+11.65,45.0,955.0,0.0
+11.7,41.0,959.0,0.0
+11.75,39.0,961.0,0.0
+11.8,38.0,962.0,0.0
+11.85,38.0,962.0,0.0
+11.9,38.0,962.0,0.0
+11.95,38.0,962.0,0.0
+12.0,37.0,963.0,0.0
+12.05,36.0,964.0,0.0
+12.1,35.0,965.0,0.0
+12.15,33.0,967.0,0.0
+12.2,33.0,967.0,0.0
+12.25,33.0,967.0,0.0
+12.3,33.0,967.0,0.0
+12.35,33.0,967.0,0.0
+12.4,32.0,968.0,0.0
+12.45,31.0,969.0,0.0
+12.5,31.0,969.0,0.0
+12.55,31.0,969.0,0.0
+12.6,31.0,969.0,0.0
+12.65,31.0,969.0,0.0
+12.7,31.0,969.0,0.0
+12.75,31.0,969.0,0.0
+12.8,31.0,969.0,0.0
+12.85,31.0,969.0,0.0
+12.9,30.0,970.0,0.0
+12.95,30.0,970.0,0.0
+13.0,30.0,970.0,0.0
+13.05,29.0,971.0,0.0
+13.1,28.0,972.0,0.0
+13.15,28.0,972.0,0.0
+13.2,28.0,972.0,0.0
+13.25,27.0,973.0,0.0
+13.3,27.0,973.0,0.0
+13.35,26.0,974.0,0.0
+13.4,26.0,974.0,0.0
+13.45,26.0,974.0,0.0
+13.5,26.0,974.0,0.0
+13.55,24.0,976.0,0.0
+13.6,23.0,977.0,0.0
+13.65,23.0,977.0,0.0
+13.7,22.0,978.0,0.0
+13.75,22.0,978.0,0.0
+13.8,22.0,978.0,0.0
+13.85,21.0,979.0,0.0
+13.9,21.0,979.0,0.0
+13.95,21.0,979.0,0.0
+14.0,21.0,979.0,0.0
+14.05,19.0,981.0,0.0
+14.1,19.0,981.0,0.0
+14.15,19.0,981.0,0.0
+14.2,19.0,981.0,0.0
+14.25,18.0,982.0,0.0
+14.3,17.0,983.0,0.0
+14.35,17.0,983.0,0.0
+14.4,16.0,984.0,0.0
+14.45,16.0,984.0,0.0
+14.5,16.0,984.0,0.0
+14.55,16.0,984.0,0.0
+14.6,16.0,984.0,0.0
+14.65,16.0,984.0,0.0
+14.7,16.0,984.0,0.0
+14.75,15.0,985.0,0.0
+14.8,15.0,985.0,0.0
+14.85,15.0,985.0,0.0
+14.9,15.0,985.0,0.0
+14.95,15.0,985.0,0.0
+15.0,15.0,985.0,0.0
+15.05,15.0,985.0,0.0
+15.1,15.0,985.0,0.0
+15.15,15.0,985.0,0.0
+15.2,15.0,985.0,0.0
+15.25,14.0,986.0,0.0
+15.3,13.0,987.0,0.0
+15.35,13.0,987.0,0.0
+15.4,13.0,987.0,0.0
+15.45,13.0,987.0,0.0
+15.5,13.0,987.0,0.0
+15.55,13.0,987.0,0.0
+15.6,13.0,987.0,0.0
+15.65,13.0,987.0,0.0
+15.7,13.0,987.0,0.0
+15.75,13.0,987.0,0.0
+15.8,13.0,987.0,0.0
+15.85,13.0,987.0,0.0
+15.9,13.0,987.0,0.0
+15.95,13.0,987.0,0.0
+16.0,13.0,987.0,0.0
+16.05,13.0,987.0,0.0
+16.1,13.0,987.0,0.0
+16.15,13.0,987.0,0.0
+16.2,12.0,988.0,0.0
+16.25,12.0,988.0,0.0
+16.3,12.0,988.0,0.0
+16.35,12.0,988.0,0.0
+16.4,11.0,989.0,0.0
+16.45,11.0,989.0,0.0
+16.5,11.0,989.0,0.0
+16.55,11.0,989.0,0.0
+16.6,11.0,989.0,0.0
+16.65,9.0,991.0,0.0
+16.7,9.0,991.0,0.0
+16.75,9.0,991.0,0.0
+16.8,9.0,991.0,0.0
+16.85,9.0,991.0,0.0
+16.9,9.0,991.0,0.0
+16.95,9.0,991.0,0.0
+17.0,9.0,991.0,0.0
+17.05,9.0,991.0,0.0
+17.1,9.0,991.0,0.0
+17.15,9.0,991.0,0.0
+17.2,9.0,991.0,0.0
+17.25,9.0,991.0,0.0
+17.3,8.0,992.0,0.0
+17.35,8.0,992.0,0.0
+17.4,8.0,992.0,0.0
+17.45,8.0,992.0,0.0
+17.5,8.0,992.0,0.0
+17.55,8.0,992.0,0.0
+17.6,8.0,992.0,0.0
+17.65,8.0,992.0,0.0
+17.7,8.0,992.0,0.0
+17.75,8.0,992.0,0.0
+17.8,8.0,992.0,0.0
+17.85,8.0,992.0,0.0
+17.9,7.0,993.0,0.0
+17.95,7.0,993.0,0.0
+18.0,7.0,993.0,0.0
+18.05,7.0,993.0,0.0
+18.1,7.0,993.0,0.0
+18.15,7.0,993.0,0.0
+18.2,7.0,993.0,0.0
+18.25,7.0,993.0,0.0
+18.3,7.0,993.0,0.0
+18.35,6.0,994.0,0.0
+18.4,6.0,994.0,0.0
+18.45,6.0,994.0,0.0
+18.5,6.0,994.0,0.0
+18.55,6.0,994.0,0.0
+18.6,6.0,994.0,0.0
+18.65,6.0,994.0,0.0
+18.7,6.0,994.0,0.0
+18.75,6.0,994.0,0.0
+18.8,6.0,994.0,0.0
+18.85,6.0,994.0,0.0
+18.9,6.0,994.0,0.0
+18.95,6.0,994.0,0.0
+19.0,6.0,994.0,0.0
+19.05,6.0,994.0,0.0
+19.1,6.0,994.0,0.0
+19.15,6.0,994.0,0.0
+19.2,6.0,994.0,0.0
+19.25,6.0,994.0,0.0
+19.3,6.0,994.0,0.0
+19.35,6.0,994.0,0.0
+19.4,6.0,994.0,0.0
+19.45,6.0,994.0,0.0
+19.5,6.0,994.0,0.0
+19.55,6.0,994.0,0.0
+19.6,6.0,994.0,0.0
+19.65,6.0,994.0,0.0
+19.7,6.0,994.0,0.0
+19.75,5.0,995.0,0.0
+19.8,5.0,995.0,0.0
+19.85,5.0,995.0,0.0
+19.9,5.0,995.0,0.0
+19.95,5.0,995.0,0.0
+20.0,4.0,996.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv16.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv16.csv
new file mode 100644
index 0000000000..f6a84ec311
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv16.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,2.0,0.0,998.0
+0.1,3.0,0.0,997.0
+0.15,3.0,0.0,997.0
+0.2,5.0,1.0,994.0
+0.25,5.0,2.0,993.0
+0.3,7.0,2.0,991.0
+0.35,10.0,2.0,988.0
+0.4,12.0,2.0,986.0
+0.45,15.0,2.0,983.0
+0.5,19.0,2.0,979.0
+0.55,28.0,2.0,970.0
+0.6,34.0,4.0,962.0
+0.65,50.0,4.0,946.0
+0.7,67.0,5.0,928.0
+0.75,96.0,7.0,897.0
+0.8,130.0,7.0,863.0
+0.85,178.0,10.0,812.0
+0.9,246.0,14.0,740.0
+0.95,322.0,18.0,660.0
+1.0,399.0,25.0,576.0
+1.05,478.0,34.0,488.0
+1.1,561.0,43.0,396.0
+1.15,649.0,46.0,305.0
+1.2,723.0,56.0,221.0
+1.25,776.0,70.0,154.0
+1.3,810.0,80.0,110.0
+1.35,830.0,97.0,73.0
+1.4,842.0,107.0,51.0
+1.45,843.0,122.0,35.0
+1.5,844.0,131.0,25.0
+1.55,835.0,146.0,19.0
+1.6,829.0,157.0,14.0
+1.65,818.0,170.0,12.0
+1.7,809.0,179.0,12.0
+1.75,798.0,197.0,5.0
+1.8,793.0,203.0,4.0
+1.85,784.0,213.0,3.0
+1.9,773.0,224.0,3.0
+1.95,767.0,231.0,2.0
+2.0,757.0,242.0,1.0
+2.05,750.0,249.0,1.0
+2.1,743.0,256.0,1.0
+2.15,729.0,270.0,1.0
+2.2,721.0,278.0,1.0
+2.25,704.0,295.0,1.0
+2.3,694.0,306.0,0.0
+2.35,682.0,318.0,0.0
+2.4,668.0,332.0,0.0
+2.45,657.0,343.0,0.0
+2.5,646.0,354.0,0.0
+2.55,633.0,367.0,0.0
+2.6,625.0,375.0,0.0
+2.65,618.0,382.0,0.0
+2.7,610.0,390.0,0.0
+2.75,601.0,399.0,0.0
+2.8,593.0,407.0,0.0
+2.85,586.0,414.0,0.0
+2.9,577.0,423.0,0.0
+2.95,563.0,437.0,0.0
+3.0,553.0,447.0,0.0
+3.05,547.0,453.0,0.0
+3.1,534.0,466.0,0.0
+3.15,524.0,476.0,0.0
+3.2,517.0,483.0,0.0
+3.25,506.0,494.0,0.0
+3.3,501.0,499.0,0.0
+3.35,496.0,504.0,0.0
+3.4,489.0,511.0,0.0
+3.45,481.0,519.0,0.0
+3.5,474.0,526.0,0.0
+3.55,467.0,533.0,0.0
+3.6,460.0,540.0,0.0
+3.65,456.0,544.0,0.0
+3.7,453.0,547.0,0.0
+3.75,446.0,554.0,0.0
+3.8,440.0,560.0,0.0
+3.85,429.0,571.0,0.0
+3.9,424.0,576.0,0.0
+3.95,417.0,583.0,0.0
+4.0,413.0,587.0,0.0
+4.05,409.0,591.0,0.0
+4.1,403.0,597.0,0.0
+4.15,400.0,600.0,0.0
+4.2,397.0,603.0,0.0
+4.25,390.0,610.0,0.0
+4.3,382.0,618.0,0.0
+4.35,376.0,624.0,0.0
+4.4,370.0,630.0,0.0
+4.45,365.0,635.0,0.0
+4.5,363.0,637.0,0.0
+4.55,357.0,643.0,0.0
+4.6,349.0,651.0,0.0
+4.65,348.0,652.0,0.0
+4.7,345.0,655.0,0.0
+4.75,336.0,664.0,0.0
+4.8,335.0,665.0,0.0
+4.85,326.0,674.0,0.0
+4.9,317.0,683.0,0.0
+4.95,308.0,692.0,0.0
+5.0,301.0,699.0,0.0
+5.05,296.0,704.0,0.0
+5.1,291.0,709.0,0.0
+5.15,284.0,716.0,0.0
+5.2,282.0,718.0,0.0
+5.25,275.0,725.0,0.0
+5.3,275.0,725.0,0.0
+5.35,271.0,729.0,0.0
+5.4,267.0,733.0,0.0
+5.45,265.0,735.0,0.0
+5.5,257.0,743.0,0.0
+5.55,252.0,748.0,0.0
+5.6,246.0,754.0,0.0
+5.65,241.0,759.0,0.0
+5.7,236.0,764.0,0.0
+5.75,228.0,772.0,0.0
+5.8,226.0,774.0,0.0
+5.85,223.0,777.0,0.0
+5.9,221.0,779.0,0.0
+5.95,216.0,784.0,0.0
+6.0,214.0,786.0,0.0
+6.05,211.0,789.0,0.0
+6.1,207.0,793.0,0.0
+6.15,203.0,797.0,0.0
+6.2,203.0,797.0,0.0
+6.25,200.0,800.0,0.0
+6.3,200.0,800.0,0.0
+6.35,197.0,803.0,0.0
+6.4,193.0,807.0,0.0
+6.45,191.0,809.0,0.0
+6.5,190.0,810.0,0.0
+6.55,189.0,811.0,0.0
+6.6,189.0,811.0,0.0
+6.65,186.0,814.0,0.0
+6.7,184.0,816.0,0.0
+6.75,180.0,820.0,0.0
+6.8,180.0,820.0,0.0
+6.85,178.0,822.0,0.0
+6.9,172.0,828.0,0.0
+6.95,167.0,833.0,0.0
+7.0,163.0,837.0,0.0
+7.05,160.0,840.0,0.0
+7.1,159.0,841.0,0.0
+7.15,156.0,844.0,0.0
+7.2,151.0,849.0,0.0
+7.25,148.0,852.0,0.0
+7.3,146.0,854.0,0.0
+7.35,144.0,856.0,0.0
+7.4,142.0,858.0,0.0
+7.45,140.0,860.0,0.0
+7.5,137.0,863.0,0.0
+7.55,137.0,863.0,0.0
+7.6,136.0,864.0,0.0
+7.65,134.0,866.0,0.0
+7.7,134.0,866.0,0.0
+7.75,131.0,869.0,0.0
+7.8,130.0,870.0,0.0
+7.85,129.0,871.0,0.0
+7.9,128.0,872.0,0.0
+7.95,128.0,872.0,0.0
+8.0,125.0,875.0,0.0
+8.05,124.0,876.0,0.0
+8.1,123.0,877.0,0.0
+8.15,121.0,879.0,0.0
+8.2,120.0,880.0,0.0
+8.25,118.0,882.0,0.0
+8.3,116.0,884.0,0.0
+8.35,115.0,885.0,0.0
+8.4,114.0,886.0,0.0
+8.45,110.0,890.0,0.0
+8.5,108.0,892.0,0.0
+8.55,105.0,895.0,0.0
+8.6,101.0,899.0,0.0
+8.65,100.0,900.0,0.0
+8.7,100.0,900.0,0.0
+8.75,100.0,900.0,0.0
+8.8,96.0,904.0,0.0
+8.85,95.0,905.0,0.0
+8.9,95.0,905.0,0.0
+8.95,94.0,906.0,0.0
+9.0,90.0,910.0,0.0
+9.05,84.0,916.0,0.0
+9.1,83.0,917.0,0.0
+9.15,80.0,920.0,0.0
+9.2,79.0,921.0,0.0
+9.25,78.0,922.0,0.0
+9.3,76.0,924.0,0.0
+9.35,74.0,926.0,0.0
+9.4,74.0,926.0,0.0
+9.45,73.0,927.0,0.0
+9.5,71.0,929.0,0.0
+9.55,71.0,929.0,0.0
+9.6,71.0,929.0,0.0
+9.65,70.0,930.0,0.0
+9.7,70.0,930.0,0.0
+9.75,68.0,932.0,0.0
+9.8,65.0,935.0,0.0
+9.85,63.0,937.0,0.0
+9.9,63.0,937.0,0.0
+9.95,60.0,940.0,0.0
+10.0,59.0,941.0,0.0
+10.05,58.0,942.0,0.0
+10.1,58.0,942.0,0.0
+10.15,58.0,942.0,0.0
+10.2,57.0,943.0,0.0
+10.25,56.0,944.0,0.0
+10.3,56.0,944.0,0.0
+10.35,56.0,944.0,0.0
+10.4,55.0,945.0,0.0
+10.45,54.0,946.0,0.0
+10.5,54.0,946.0,0.0
+10.55,54.0,946.0,0.0
+10.6,54.0,946.0,0.0
+10.65,53.0,947.0,0.0
+10.7,53.0,947.0,0.0
+10.75,52.0,948.0,0.0
+10.8,52.0,948.0,0.0
+10.85,50.0,950.0,0.0
+10.9,50.0,950.0,0.0
+10.95,50.0,950.0,0.0
+11.0,50.0,950.0,0.0
+11.05,49.0,951.0,0.0
+11.1,47.0,953.0,0.0
+11.15,45.0,955.0,0.0
+11.2,45.0,955.0,0.0
+11.25,44.0,956.0,0.0
+11.3,44.0,956.0,0.0
+11.35,44.0,956.0,0.0
+11.4,44.0,956.0,0.0
+11.45,44.0,956.0,0.0
+11.5,44.0,956.0,0.0
+11.55,44.0,956.0,0.0
+11.6,43.0,957.0,0.0
+11.65,42.0,958.0,0.0
+11.7,41.0,959.0,0.0
+11.75,41.0,959.0,0.0
+11.8,40.0,960.0,0.0
+11.85,38.0,962.0,0.0
+11.9,37.0,963.0,0.0
+11.95,37.0,963.0,0.0
+12.0,37.0,963.0,0.0
+12.05,35.0,965.0,0.0
+12.1,34.0,966.0,0.0
+12.15,34.0,966.0,0.0
+12.2,34.0,966.0,0.0
+12.25,33.0,967.0,0.0
+12.3,33.0,967.0,0.0
+12.35,32.0,968.0,0.0
+12.4,32.0,968.0,0.0
+12.45,32.0,968.0,0.0
+12.5,32.0,968.0,0.0
+12.55,32.0,968.0,0.0
+12.6,32.0,968.0,0.0
+12.65,32.0,968.0,0.0
+12.7,32.0,968.0,0.0
+12.75,32.0,968.0,0.0
+12.8,32.0,968.0,0.0
+12.85,32.0,968.0,0.0
+12.9,32.0,968.0,0.0
+12.95,32.0,968.0,0.0
+13.0,32.0,968.0,0.0
+13.05,30.0,970.0,0.0
+13.1,28.0,972.0,0.0
+13.15,28.0,972.0,0.0
+13.2,28.0,972.0,0.0
+13.25,25.0,975.0,0.0
+13.3,25.0,975.0,0.0
+13.35,24.0,976.0,0.0
+13.4,24.0,976.0,0.0
+13.45,24.0,976.0,0.0
+13.5,23.0,977.0,0.0
+13.55,23.0,977.0,0.0
+13.6,22.0,978.0,0.0
+13.65,20.0,980.0,0.0
+13.7,18.0,982.0,0.0
+13.75,17.0,983.0,0.0
+13.8,15.0,985.0,0.0
+13.85,15.0,985.0,0.0
+13.9,15.0,985.0,0.0
+13.95,14.0,986.0,0.0
+14.0,14.0,986.0,0.0
+14.05,14.0,986.0,0.0
+14.1,14.0,986.0,0.0
+14.15,14.0,986.0,0.0
+14.2,14.0,986.0,0.0
+14.25,14.0,986.0,0.0
+14.3,14.0,986.0,0.0
+14.35,14.0,986.0,0.0
+14.4,14.0,986.0,0.0
+14.45,13.0,987.0,0.0
+14.5,13.0,987.0,0.0
+14.55,12.0,988.0,0.0
+14.6,12.0,988.0,0.0
+14.65,11.0,989.0,0.0
+14.7,11.0,989.0,0.0
+14.75,11.0,989.0,0.0
+14.8,11.0,989.0,0.0
+14.85,11.0,989.0,0.0
+14.9,11.0,989.0,0.0
+14.95,10.0,990.0,0.0
+15.0,10.0,990.0,0.0
+15.05,10.0,990.0,0.0
+15.1,10.0,990.0,0.0
+15.15,10.0,990.0,0.0
+15.2,10.0,990.0,0.0
+15.25,10.0,990.0,0.0
+15.3,10.0,990.0,0.0
+15.35,10.0,990.0,0.0
+15.4,10.0,990.0,0.0
+15.45,10.0,990.0,0.0
+15.5,10.0,990.0,0.0
+15.55,10.0,990.0,0.0
+15.6,10.0,990.0,0.0
+15.65,10.0,990.0,0.0
+15.7,10.0,990.0,0.0
+15.75,10.0,990.0,0.0
+15.8,10.0,990.0,0.0
+15.85,10.0,990.0,0.0
+15.9,10.0,990.0,0.0
+15.95,10.0,990.0,0.0
+16.0,10.0,990.0,0.0
+16.05,10.0,990.0,0.0
+16.1,10.0,990.0,0.0
+16.15,9.0,991.0,0.0
+16.2,9.0,991.0,0.0
+16.25,9.0,991.0,0.0
+16.3,9.0,991.0,0.0
+16.35,9.0,991.0,0.0
+16.4,9.0,991.0,0.0
+16.45,8.0,992.0,0.0
+16.5,8.0,992.0,0.0
+16.55,8.0,992.0,0.0
+16.6,8.0,992.0,0.0
+16.65,8.0,992.0,0.0
+16.7,8.0,992.0,0.0
+16.75,8.0,992.0,0.0
+16.8,8.0,992.0,0.0
+16.85,8.0,992.0,0.0
+16.9,8.0,992.0,0.0
+16.95,8.0,992.0,0.0
+17.0,8.0,992.0,0.0
+17.05,8.0,992.0,0.0
+17.1,8.0,992.0,0.0
+17.15,8.0,992.0,0.0
+17.2,8.0,992.0,0.0
+17.25,8.0,992.0,0.0
+17.3,7.0,993.0,0.0
+17.35,7.0,993.0,0.0
+17.4,7.0,993.0,0.0
+17.45,7.0,993.0,0.0
+17.5,7.0,993.0,0.0
+17.55,7.0,993.0,0.0
+17.6,7.0,993.0,0.0
+17.65,7.0,993.0,0.0
+17.7,7.0,993.0,0.0
+17.75,7.0,993.0,0.0
+17.8,6.0,994.0,0.0
+17.85,6.0,994.0,0.0
+17.9,6.0,994.0,0.0
+17.95,6.0,994.0,0.0
+18.0,6.0,994.0,0.0
+18.05,6.0,994.0,0.0
+18.1,6.0,994.0,0.0
+18.15,6.0,994.0,0.0
+18.2,6.0,994.0,0.0
+18.25,6.0,994.0,0.0
+18.3,6.0,994.0,0.0
+18.35,6.0,994.0,0.0
+18.4,5.0,995.0,0.0
+18.45,5.0,995.0,0.0
+18.5,5.0,995.0,0.0
+18.55,5.0,995.0,0.0
+18.6,5.0,995.0,0.0
+18.65,5.0,995.0,0.0
+18.7,5.0,995.0,0.0
+18.75,5.0,995.0,0.0
+18.8,5.0,995.0,0.0
+18.85,5.0,995.0,0.0
+18.9,5.0,995.0,0.0
+18.95,5.0,995.0,0.0
+19.0,5.0,995.0,0.0
+19.05,5.0,995.0,0.0
+19.1,5.0,995.0,0.0
+19.15,5.0,995.0,0.0
+19.2,5.0,995.0,0.0
+19.25,5.0,995.0,0.0
+19.3,5.0,995.0,0.0
+19.35,4.0,996.0,0.0
+19.4,4.0,996.0,0.0
+19.45,4.0,996.0,0.0
+19.5,4.0,996.0,0.0
+19.55,4.0,996.0,0.0
+19.6,4.0,996.0,0.0
+19.65,4.0,996.0,0.0
+19.7,4.0,996.0,0.0
+19.75,4.0,996.0,0.0
+19.8,4.0,996.0,0.0
+19.85,4.0,996.0,0.0
+19.9,4.0,996.0,0.0
+19.95,4.0,996.0,0.0
+20.0,4.0,996.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv17.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv17.csv
new file mode 100644
index 0000000000..6f90a35e0f
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv17.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,2.0,0.0,998.0
+0.1,2.0,0.0,998.0
+0.15,2.0,0.0,998.0
+0.2,4.0,0.0,996.0
+0.25,7.0,0.0,993.0
+0.3,8.0,0.0,992.0
+0.35,11.0,0.0,989.0
+0.4,15.0,0.0,985.0
+0.45,26.0,1.0,973.0
+0.5,35.0,2.0,963.0
+0.55,47.0,2.0,951.0
+0.6,68.0,4.0,928.0
+0.65,94.0,5.0,901.0
+0.7,139.0,6.0,855.0
+0.75,180.0,7.0,813.0
+0.8,255.0,9.0,736.0
+0.85,348.0,13.0,639.0
+0.9,429.0,21.0,550.0
+0.95,523.0,29.0,448.0
+1.0,584.0,42.0,374.0
+1.05,686.0,50.0,264.0
+1.1,741.0,65.0,194.0
+1.15,785.0,73.0,142.0
+1.2,800.0,84.0,116.0
+1.25,821.0,96.0,83.0
+1.3,830.0,112.0,58.0
+1.35,839.0,125.0,36.0
+1.4,841.0,138.0,21.0
+1.45,840.0,145.0,15.0
+1.5,829.0,160.0,11.0
+1.55,824.0,167.0,9.0
+1.6,812.0,180.0,8.0
+1.65,803.0,192.0,5.0
+1.7,793.0,205.0,2.0
+1.75,781.0,219.0,0.0
+1.8,767.0,233.0,0.0
+1.85,756.0,244.0,0.0
+1.9,745.0,255.0,0.0
+1.95,736.0,264.0,0.0
+2.0,730.0,270.0,0.0
+2.05,719.0,281.0,0.0
+2.1,711.0,289.0,0.0
+2.15,700.0,300.0,0.0
+2.2,691.0,309.0,0.0
+2.25,677.0,323.0,0.0
+2.3,669.0,331.0,0.0
+2.35,662.0,338.0,0.0
+2.4,652.0,348.0,0.0
+2.45,644.0,356.0,0.0
+2.5,634.0,366.0,0.0
+2.55,626.0,374.0,0.0
+2.6,618.0,382.0,0.0
+2.65,608.0,392.0,0.0
+2.7,598.0,402.0,0.0
+2.75,587.0,413.0,0.0
+2.8,582.0,418.0,0.0
+2.85,569.0,431.0,0.0
+2.9,557.0,443.0,0.0
+2.95,548.0,452.0,0.0
+3.0,535.0,465.0,0.0
+3.05,529.0,471.0,0.0
+3.1,526.0,474.0,0.0
+3.15,520.0,480.0,0.0
+3.2,512.0,488.0,0.0
+3.25,502.0,498.0,0.0
+3.3,492.0,508.0,0.0
+3.35,484.0,516.0,0.0
+3.4,475.0,525.0,0.0
+3.45,468.0,532.0,0.0
+3.5,459.0,541.0,0.0
+3.55,451.0,549.0,0.0
+3.6,444.0,556.0,0.0
+3.65,438.0,562.0,0.0
+3.7,428.0,572.0,0.0
+3.75,424.0,576.0,0.0
+3.8,419.0,581.0,0.0
+3.85,412.0,588.0,0.0
+3.9,406.0,594.0,0.0
+3.95,404.0,596.0,0.0
+4.0,400.0,600.0,0.0
+4.05,395.0,605.0,0.0
+4.1,394.0,606.0,0.0
+4.15,388.0,612.0,0.0
+4.2,386.0,614.0,0.0
+4.25,381.0,619.0,0.0
+4.3,375.0,625.0,0.0
+4.35,370.0,630.0,0.0
+4.4,361.0,639.0,0.0
+4.45,353.0,647.0,0.0
+4.5,349.0,651.0,0.0
+4.55,346.0,654.0,0.0
+4.6,343.0,657.0,0.0
+4.65,338.0,662.0,0.0
+4.7,333.0,667.0,0.0
+4.75,330.0,670.0,0.0
+4.8,325.0,675.0,0.0
+4.85,324.0,676.0,0.0
+4.9,322.0,678.0,0.0
+4.95,321.0,679.0,0.0
+5.0,318.0,682.0,0.0
+5.05,314.0,686.0,0.0
+5.1,311.0,689.0,0.0
+5.15,304.0,696.0,0.0
+5.2,300.0,700.0,0.0
+5.25,294.0,706.0,0.0
+5.3,288.0,712.0,0.0
+5.35,284.0,716.0,0.0
+5.4,280.0,720.0,0.0
+5.45,274.0,726.0,0.0
+5.5,273.0,727.0,0.0
+5.55,271.0,729.0,0.0
+5.6,268.0,732.0,0.0
+5.65,263.0,737.0,0.0
+5.7,259.0,741.0,0.0
+5.75,254.0,746.0,0.0
+5.8,249.0,751.0,0.0
+5.85,245.0,755.0,0.0
+5.9,241.0,759.0,0.0
+5.95,237.0,763.0,0.0
+6.0,236.0,764.0,0.0
+6.05,235.0,765.0,0.0
+6.1,230.0,770.0,0.0
+6.15,229.0,771.0,0.0
+6.2,228.0,772.0,0.0
+6.25,226.0,774.0,0.0
+6.3,220.0,780.0,0.0
+6.35,215.0,785.0,0.0
+6.4,214.0,786.0,0.0
+6.45,209.0,791.0,0.0
+6.5,207.0,793.0,0.0
+6.55,201.0,799.0,0.0
+6.6,200.0,800.0,0.0
+6.65,197.0,803.0,0.0
+6.7,189.0,811.0,0.0
+6.75,186.0,814.0,0.0
+6.8,182.0,818.0,0.0
+6.85,179.0,821.0,0.0
+6.9,178.0,822.0,0.0
+6.95,174.0,826.0,0.0
+7.0,171.0,829.0,0.0
+7.05,168.0,832.0,0.0
+7.1,167.0,833.0,0.0
+7.15,166.0,834.0,0.0
+7.2,166.0,834.0,0.0
+7.25,164.0,836.0,0.0
+7.3,163.0,837.0,0.0
+7.35,158.0,842.0,0.0
+7.4,156.0,844.0,0.0
+7.45,153.0,847.0,0.0
+7.5,149.0,851.0,0.0
+7.55,146.0,854.0,0.0
+7.6,144.0,856.0,0.0
+7.65,143.0,857.0,0.0
+7.7,143.0,857.0,0.0
+7.75,141.0,859.0,0.0
+7.8,141.0,859.0,0.0
+7.85,137.0,863.0,0.0
+7.9,135.0,865.0,0.0
+7.95,133.0,867.0,0.0
+8.0,132.0,868.0,0.0
+8.05,130.0,870.0,0.0
+8.1,130.0,870.0,0.0
+8.15,129.0,871.0,0.0
+8.2,128.0,872.0,0.0
+8.25,126.0,874.0,0.0
+8.3,125.0,875.0,0.0
+8.35,124.0,876.0,0.0
+8.4,123.0,877.0,0.0
+8.45,120.0,880.0,0.0
+8.5,117.0,883.0,0.0
+8.55,117.0,883.0,0.0
+8.6,116.0,884.0,0.0
+8.65,114.0,886.0,0.0
+8.7,113.0,887.0,0.0
+8.75,111.0,889.0,0.0
+8.8,109.0,891.0,0.0
+8.85,107.0,893.0,0.0
+8.9,104.0,896.0,0.0
+8.95,103.0,897.0,0.0
+9.0,101.0,899.0,0.0
+9.05,100.0,900.0,0.0
+9.1,99.0,901.0,0.0
+9.15,97.0,903.0,0.0
+9.2,97.0,903.0,0.0
+9.25,96.0,904.0,0.0
+9.3,94.0,906.0,0.0
+9.35,94.0,906.0,0.0
+9.4,92.0,908.0,0.0
+9.45,92.0,908.0,0.0
+9.5,90.0,910.0,0.0
+9.55,90.0,910.0,0.0
+9.6,88.0,912.0,0.0
+9.65,87.0,913.0,0.0
+9.7,87.0,913.0,0.0
+9.75,87.0,913.0,0.0
+9.8,87.0,913.0,0.0
+9.85,86.0,914.0,0.0
+9.9,84.0,916.0,0.0
+9.95,83.0,917.0,0.0
+10.0,82.0,918.0,0.0
+10.05,82.0,918.0,0.0
+10.1,81.0,919.0,0.0
+10.15,79.0,921.0,0.0
+10.2,77.0,923.0,0.0
+10.25,73.0,927.0,0.0
+10.3,72.0,928.0,0.0
+10.35,72.0,928.0,0.0
+10.4,71.0,929.0,0.0
+10.45,68.0,932.0,0.0
+10.5,67.0,933.0,0.0
+10.55,67.0,933.0,0.0
+10.6,67.0,933.0,0.0
+10.65,67.0,933.0,0.0
+10.7,65.0,935.0,0.0
+10.75,64.0,936.0,0.0
+10.8,63.0,937.0,0.0
+10.85,61.0,939.0,0.0
+10.9,59.0,941.0,0.0
+10.95,57.0,943.0,0.0
+11.0,57.0,943.0,0.0
+11.05,57.0,943.0,0.0
+11.1,57.0,943.0,0.0
+11.15,55.0,945.0,0.0
+11.2,54.0,946.0,0.0
+11.25,54.0,946.0,0.0
+11.3,52.0,948.0,0.0
+11.35,52.0,948.0,0.0
+11.4,50.0,950.0,0.0
+11.45,48.0,952.0,0.0
+11.5,47.0,953.0,0.0
+11.55,46.0,954.0,0.0
+11.6,46.0,954.0,0.0
+11.65,45.0,955.0,0.0
+11.7,44.0,956.0,0.0
+11.75,44.0,956.0,0.0
+11.8,43.0,957.0,0.0
+11.85,41.0,959.0,0.0
+11.9,41.0,959.0,0.0
+11.95,41.0,959.0,0.0
+12.0,37.0,963.0,0.0
+12.05,37.0,963.0,0.0
+12.1,36.0,964.0,0.0
+12.15,35.0,965.0,0.0
+12.2,34.0,966.0,0.0
+12.25,34.0,966.0,0.0
+12.3,34.0,966.0,0.0
+12.35,34.0,966.0,0.0
+12.4,34.0,966.0,0.0
+12.45,34.0,966.0,0.0
+12.5,33.0,967.0,0.0
+12.55,33.0,967.0,0.0
+12.6,33.0,967.0,0.0
+12.65,32.0,968.0,0.0
+12.7,32.0,968.0,0.0
+12.75,32.0,968.0,0.0
+12.8,32.0,968.0,0.0
+12.85,31.0,969.0,0.0
+12.9,30.0,970.0,0.0
+12.95,30.0,970.0,0.0
+13.0,29.0,971.0,0.0
+13.05,28.0,972.0,0.0
+13.1,28.0,972.0,0.0
+13.15,28.0,972.0,0.0
+13.2,28.0,972.0,0.0
+13.25,27.0,973.0,0.0
+13.3,27.0,973.0,0.0
+13.35,26.0,974.0,0.0
+13.4,24.0,976.0,0.0
+13.45,24.0,976.0,0.0
+13.5,23.0,977.0,0.0
+13.55,23.0,977.0,0.0
+13.6,22.0,978.0,0.0
+13.65,22.0,978.0,0.0
+13.7,22.0,978.0,0.0
+13.75,21.0,979.0,0.0
+13.8,20.0,980.0,0.0
+13.85,20.0,980.0,0.0
+13.9,20.0,980.0,0.0
+13.95,20.0,980.0,0.0
+14.0,18.0,982.0,0.0
+14.05,18.0,982.0,0.0
+14.1,18.0,982.0,0.0
+14.15,18.0,982.0,0.0
+14.2,18.0,982.0,0.0
+14.25,18.0,982.0,0.0
+14.3,18.0,982.0,0.0
+14.35,18.0,982.0,0.0
+14.4,18.0,982.0,0.0
+14.45,18.0,982.0,0.0
+14.5,18.0,982.0,0.0
+14.55,18.0,982.0,0.0
+14.6,18.0,982.0,0.0
+14.65,18.0,982.0,0.0
+14.7,18.0,982.0,0.0
+14.75,18.0,982.0,0.0
+14.8,18.0,982.0,0.0
+14.85,18.0,982.0,0.0
+14.9,18.0,982.0,0.0
+14.95,18.0,982.0,0.0
+15.0,18.0,982.0,0.0
+15.05,18.0,982.0,0.0
+15.1,18.0,982.0,0.0
+15.15,18.0,982.0,0.0
+15.2,17.0,983.0,0.0
+15.25,17.0,983.0,0.0
+15.3,17.0,983.0,0.0
+15.35,17.0,983.0,0.0
+15.4,16.0,984.0,0.0
+15.45,16.0,984.0,0.0
+15.5,16.0,984.0,0.0
+15.55,16.0,984.0,0.0
+15.6,16.0,984.0,0.0
+15.65,16.0,984.0,0.0
+15.7,16.0,984.0,0.0
+15.75,15.0,985.0,0.0
+15.8,15.0,985.0,0.0
+15.85,15.0,985.0,0.0
+15.9,14.0,986.0,0.0
+15.95,14.0,986.0,0.0
+16.0,14.0,986.0,0.0
+16.05,14.0,986.0,0.0
+16.1,14.0,986.0,0.0
+16.15,13.0,987.0,0.0
+16.2,13.0,987.0,0.0
+16.25,13.0,987.0,0.0
+16.3,13.0,987.0,0.0
+16.35,13.0,987.0,0.0
+16.4,13.0,987.0,0.0
+16.45,13.0,987.0,0.0
+16.5,13.0,987.0,0.0
+16.55,13.0,987.0,0.0
+16.6,12.0,988.0,0.0
+16.65,12.0,988.0,0.0
+16.7,12.0,988.0,0.0
+16.75,12.0,988.0,0.0
+16.8,12.0,988.0,0.0
+16.85,11.0,989.0,0.0
+16.9,11.0,989.0,0.0
+16.95,11.0,989.0,0.0
+17.0,11.0,989.0,0.0
+17.05,10.0,990.0,0.0
+17.1,10.0,990.0,0.0
+17.15,10.0,990.0,0.0
+17.2,10.0,990.0,0.0
+17.25,10.0,990.0,0.0
+17.3,9.0,991.0,0.0
+17.35,9.0,991.0,0.0
+17.4,9.0,991.0,0.0
+17.45,9.0,991.0,0.0
+17.5,9.0,991.0,0.0
+17.55,9.0,991.0,0.0
+17.6,9.0,991.0,0.0
+17.65,8.0,992.0,0.0
+17.7,8.0,992.0,0.0
+17.75,8.0,992.0,0.0
+17.8,8.0,992.0,0.0
+17.85,8.0,992.0,0.0
+17.9,8.0,992.0,0.0
+17.95,8.0,992.0,0.0
+18.0,8.0,992.0,0.0
+18.05,8.0,992.0,0.0
+18.1,8.0,992.0,0.0
+18.15,8.0,992.0,0.0
+18.2,8.0,992.0,0.0
+18.25,8.0,992.0,0.0
+18.3,8.0,992.0,0.0
+18.35,8.0,992.0,0.0
+18.4,8.0,992.0,0.0
+18.45,8.0,992.0,0.0
+18.5,7.0,993.0,0.0
+18.55,7.0,993.0,0.0
+18.6,7.0,993.0,0.0
+18.65,7.0,993.0,0.0
+18.7,7.0,993.0,0.0
+18.75,7.0,993.0,0.0
+18.8,7.0,993.0,0.0
+18.85,7.0,993.0,0.0
+18.9,7.0,993.0,0.0
+18.95,7.0,993.0,0.0
+19.0,7.0,993.0,0.0
+19.05,7.0,993.0,0.0
+19.1,7.0,993.0,0.0
+19.15,7.0,993.0,0.0
+19.2,7.0,993.0,0.0
+19.25,7.0,993.0,0.0
+19.3,6.0,994.0,0.0
+19.35,6.0,994.0,0.0
+19.4,6.0,994.0,0.0
+19.45,6.0,994.0,0.0
+19.5,6.0,994.0,0.0
+19.55,6.0,994.0,0.0
+19.6,6.0,994.0,0.0
+19.65,6.0,994.0,0.0
+19.7,6.0,994.0,0.0
+19.75,6.0,994.0,0.0
+19.8,6.0,994.0,0.0
+19.85,6.0,994.0,0.0
+19.9,6.0,994.0,0.0
+19.95,6.0,994.0,0.0
+20.0,6.0,994.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv18.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv18.csv
new file mode 100644
index 0000000000..16e16b3f86
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv18.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,3.0,0.0,997.0
+0.2,5.0,0.0,995.0
+0.25,8.0,0.0,992.0
+0.3,11.0,0.0,989.0
+0.35,12.0,1.0,987.0
+0.4,16.0,1.0,983.0
+0.45,21.0,1.0,978.0
+0.5,38.0,2.0,960.0
+0.55,47.0,2.0,951.0
+0.6,65.0,4.0,931.0
+0.65,92.0,8.0,900.0
+0.7,136.0,9.0,855.0
+0.75,188.0,14.0,798.0
+0.8,258.0,16.0,726.0
+0.85,342.0,25.0,633.0
+0.9,440.0,29.0,531.0
+0.95,509.0,34.0,457.0
+1.0,583.0,40.0,377.0
+1.05,678.0,46.0,276.0
+1.1,757.0,53.0,190.0
+1.15,793.0,63.0,144.0
+1.2,834.0,69.0,97.0
+1.25,859.0,77.0,64.0
+1.3,857.0,94.0,49.0
+1.35,866.0,106.0,28.0
+1.4,862.0,118.0,20.0
+1.45,855.0,131.0,14.0
+1.5,841.0,148.0,11.0
+1.55,825.0,167.0,8.0
+1.6,811.0,185.0,4.0
+1.65,799.0,198.0,3.0
+1.7,789.0,209.0,2.0
+1.75,780.0,218.0,2.0
+1.8,771.0,227.0,2.0
+1.85,763.0,236.0,1.0
+1.9,750.0,249.0,1.0
+1.95,737.0,263.0,0.0
+2.0,723.0,277.0,0.0
+2.05,709.0,291.0,0.0
+2.1,695.0,305.0,0.0
+2.15,687.0,313.0,0.0
+2.2,671.0,329.0,0.0
+2.25,659.0,341.0,0.0
+2.3,646.0,354.0,0.0
+2.35,638.0,362.0,0.0
+2.4,632.0,368.0,0.0
+2.45,619.0,381.0,0.0
+2.5,611.0,389.0,0.0
+2.55,600.0,400.0,0.0
+2.6,591.0,409.0,0.0
+2.65,579.0,421.0,0.0
+2.7,569.0,431.0,0.0
+2.75,560.0,440.0,0.0
+2.8,552.0,448.0,0.0
+2.85,545.0,455.0,0.0
+2.9,536.0,464.0,0.0
+2.95,525.0,475.0,0.0
+3.0,514.0,486.0,0.0
+3.05,509.0,491.0,0.0
+3.1,500.0,500.0,0.0
+3.15,489.0,511.0,0.0
+3.2,485.0,515.0,0.0
+3.25,480.0,520.0,0.0
+3.3,471.0,529.0,0.0
+3.35,464.0,536.0,0.0
+3.4,456.0,544.0,0.0
+3.45,447.0,553.0,0.0
+3.5,434.0,566.0,0.0
+3.55,428.0,572.0,0.0
+3.6,420.0,580.0,0.0
+3.65,413.0,587.0,0.0
+3.7,409.0,591.0,0.0
+3.75,402.0,598.0,0.0
+3.8,393.0,607.0,0.0
+3.85,387.0,613.0,0.0
+3.9,381.0,619.0,0.0
+3.95,379.0,621.0,0.0
+4.0,374.0,626.0,0.0
+4.05,369.0,631.0,0.0
+4.1,361.0,639.0,0.0
+4.15,358.0,642.0,0.0
+4.2,352.0,648.0,0.0
+4.25,342.0,658.0,0.0
+4.3,340.0,660.0,0.0
+4.35,336.0,664.0,0.0
+4.4,328.0,672.0,0.0
+4.45,322.0,678.0,0.0
+4.5,319.0,681.0,0.0
+4.55,316.0,684.0,0.0
+4.6,312.0,688.0,0.0
+4.65,309.0,691.0,0.0
+4.7,300.0,700.0,0.0
+4.75,294.0,706.0,0.0
+4.8,287.0,713.0,0.0
+4.85,286.0,714.0,0.0
+4.9,281.0,719.0,0.0
+4.95,278.0,722.0,0.0
+5.0,274.0,726.0,0.0
+5.05,267.0,733.0,0.0
+5.1,264.0,736.0,0.0
+5.15,258.0,742.0,0.0
+5.2,255.0,745.0,0.0
+5.25,253.0,747.0,0.0
+5.3,250.0,750.0,0.0
+5.35,248.0,752.0,0.0
+5.4,247.0,753.0,0.0
+5.45,244.0,756.0,0.0
+5.5,239.0,761.0,0.0
+5.55,234.0,766.0,0.0
+5.6,232.0,768.0,0.0
+5.65,231.0,769.0,0.0
+5.7,230.0,770.0,0.0
+5.75,225.0,775.0,0.0
+5.8,224.0,776.0,0.0
+5.85,219.0,781.0,0.0
+5.9,218.0,782.0,0.0
+5.95,216.0,784.0,0.0
+6.0,212.0,788.0,0.0
+6.05,208.0,792.0,0.0
+6.1,206.0,794.0,0.0
+6.15,200.0,800.0,0.0
+6.2,199.0,801.0,0.0
+6.25,196.0,804.0,0.0
+6.3,194.0,806.0,0.0
+6.35,192.0,808.0,0.0
+6.4,189.0,811.0,0.0
+6.45,187.0,813.0,0.0
+6.5,182.0,818.0,0.0
+6.55,179.0,821.0,0.0
+6.6,178.0,822.0,0.0
+6.65,177.0,823.0,0.0
+6.7,175.0,825.0,0.0
+6.75,172.0,828.0,0.0
+6.8,169.0,831.0,0.0
+6.85,168.0,832.0,0.0
+6.9,165.0,835.0,0.0
+6.95,162.0,838.0,0.0
+7.0,162.0,838.0,0.0
+7.05,158.0,842.0,0.0
+7.1,157.0,843.0,0.0
+7.15,156.0,844.0,0.0
+7.2,155.0,845.0,0.0
+7.25,154.0,846.0,0.0
+7.3,152.0,848.0,0.0
+7.35,151.0,849.0,0.0
+7.4,150.0,850.0,0.0
+7.45,147.0,853.0,0.0
+7.5,145.0,855.0,0.0
+7.55,144.0,856.0,0.0
+7.6,143.0,857.0,0.0
+7.65,143.0,857.0,0.0
+7.7,141.0,859.0,0.0
+7.75,139.0,861.0,0.0
+7.8,137.0,863.0,0.0
+7.85,136.0,864.0,0.0
+7.9,133.0,867.0,0.0
+7.95,132.0,868.0,0.0
+8.0,131.0,869.0,0.0
+8.05,129.0,871.0,0.0
+8.1,124.0,876.0,0.0
+8.15,120.0,880.0,0.0
+8.2,119.0,881.0,0.0
+8.25,115.0,885.0,0.0
+8.3,111.0,889.0,0.0
+8.35,109.0,891.0,0.0
+8.4,108.0,892.0,0.0
+8.45,107.0,893.0,0.0
+8.5,105.0,895.0,0.0
+8.55,102.0,898.0,0.0
+8.6,99.0,901.0,0.0
+8.65,96.0,904.0,0.0
+8.7,93.0,907.0,0.0
+8.75,92.0,908.0,0.0
+8.8,91.0,909.0,0.0
+8.85,91.0,909.0,0.0
+8.9,90.0,910.0,0.0
+8.95,88.0,912.0,0.0
+9.0,86.0,914.0,0.0
+9.05,85.0,915.0,0.0
+9.1,84.0,916.0,0.0
+9.15,83.0,917.0,0.0
+9.2,80.0,920.0,0.0
+9.25,78.0,922.0,0.0
+9.3,78.0,922.0,0.0
+9.35,77.0,923.0,0.0
+9.4,76.0,924.0,0.0
+9.45,74.0,926.0,0.0
+9.5,74.0,926.0,0.0
+9.55,73.0,927.0,0.0
+9.6,72.0,928.0,0.0
+9.65,72.0,928.0,0.0
+9.7,69.0,931.0,0.0
+9.75,68.0,932.0,0.0
+9.8,68.0,932.0,0.0
+9.85,67.0,933.0,0.0
+9.9,66.0,934.0,0.0
+9.95,65.0,935.0,0.0
+10.0,65.0,935.0,0.0
+10.05,63.0,937.0,0.0
+10.1,62.0,938.0,0.0
+10.15,62.0,938.0,0.0
+10.2,58.0,942.0,0.0
+10.25,57.0,943.0,0.0
+10.3,56.0,944.0,0.0
+10.35,56.0,944.0,0.0
+10.4,52.0,948.0,0.0
+10.45,52.0,948.0,0.0
+10.5,52.0,948.0,0.0
+10.55,52.0,948.0,0.0
+10.6,51.0,949.0,0.0
+10.65,51.0,949.0,0.0
+10.7,49.0,951.0,0.0
+10.75,47.0,953.0,0.0
+10.8,46.0,954.0,0.0
+10.85,46.0,954.0,0.0
+10.9,45.0,955.0,0.0
+10.95,45.0,955.0,0.0
+11.0,45.0,955.0,0.0
+11.05,45.0,955.0,0.0
+11.1,44.0,956.0,0.0
+11.15,44.0,956.0,0.0
+11.2,44.0,956.0,0.0
+11.25,43.0,957.0,0.0
+11.3,43.0,957.0,0.0
+11.35,43.0,957.0,0.0
+11.4,43.0,957.0,0.0
+11.45,43.0,957.0,0.0
+11.5,43.0,957.0,0.0
+11.55,43.0,957.0,0.0
+11.6,42.0,958.0,0.0
+11.65,41.0,959.0,0.0
+11.7,41.0,959.0,0.0
+11.75,40.0,960.0,0.0
+11.8,39.0,961.0,0.0
+11.85,38.0,962.0,0.0
+11.9,38.0,962.0,0.0
+11.95,36.0,964.0,0.0
+12.0,35.0,965.0,0.0
+12.05,35.0,965.0,0.0
+12.1,35.0,965.0,0.0
+12.15,35.0,965.0,0.0
+12.2,34.0,966.0,0.0
+12.25,32.0,968.0,0.0
+12.3,32.0,968.0,0.0
+12.35,31.0,969.0,0.0
+12.4,31.0,969.0,0.0
+12.45,31.0,969.0,0.0
+12.5,29.0,971.0,0.0
+12.55,28.0,972.0,0.0
+12.6,28.0,972.0,0.0
+12.65,27.0,973.0,0.0
+12.7,26.0,974.0,0.0
+12.75,26.0,974.0,0.0
+12.8,26.0,974.0,0.0
+12.85,24.0,976.0,0.0
+12.9,24.0,976.0,0.0
+12.95,24.0,976.0,0.0
+13.0,24.0,976.0,0.0
+13.05,23.0,977.0,0.0
+13.1,23.0,977.0,0.0
+13.15,23.0,977.0,0.0
+13.2,21.0,979.0,0.0
+13.25,20.0,980.0,0.0
+13.3,20.0,980.0,0.0
+13.35,20.0,980.0,0.0
+13.4,20.0,980.0,0.0
+13.45,20.0,980.0,0.0
+13.5,20.0,980.0,0.0
+13.55,20.0,980.0,0.0
+13.6,19.0,981.0,0.0
+13.65,19.0,981.0,0.0
+13.7,18.0,982.0,0.0
+13.75,18.0,982.0,0.0
+13.8,18.0,982.0,0.0
+13.85,18.0,982.0,0.0
+13.9,18.0,982.0,0.0
+13.95,18.0,982.0,0.0
+14.0,18.0,982.0,0.0
+14.05,18.0,982.0,0.0
+14.1,18.0,982.0,0.0
+14.15,18.0,982.0,0.0
+14.2,18.0,982.0,0.0
+14.25,18.0,982.0,0.0
+14.3,18.0,982.0,0.0
+14.35,18.0,982.0,0.0
+14.4,18.0,982.0,0.0
+14.45,18.0,982.0,0.0
+14.5,18.0,982.0,0.0
+14.55,18.0,982.0,0.0
+14.6,18.0,982.0,0.0
+14.65,17.0,983.0,0.0
+14.7,16.0,984.0,0.0
+14.75,16.0,984.0,0.0
+14.8,16.0,984.0,0.0
+14.85,16.0,984.0,0.0
+14.9,15.0,985.0,0.0
+14.95,15.0,985.0,0.0
+15.0,15.0,985.0,0.0
+15.05,15.0,985.0,0.0
+15.1,13.0,987.0,0.0
+15.15,13.0,987.0,0.0
+15.2,13.0,987.0,0.0
+15.25,12.0,988.0,0.0
+15.3,12.0,988.0,0.0
+15.35,12.0,988.0,0.0
+15.4,12.0,988.0,0.0
+15.45,12.0,988.0,0.0
+15.5,12.0,988.0,0.0
+15.55,9.0,991.0,0.0
+15.6,9.0,991.0,0.0
+15.65,9.0,991.0,0.0
+15.7,9.0,991.0,0.0
+15.75,9.0,991.0,0.0
+15.8,9.0,991.0,0.0
+15.85,9.0,991.0,0.0
+15.9,9.0,991.0,0.0
+15.95,7.0,993.0,0.0
+16.0,7.0,993.0,0.0
+16.05,7.0,993.0,0.0
+16.1,7.0,993.0,0.0
+16.15,6.0,994.0,0.0
+16.2,6.0,994.0,0.0
+16.25,6.0,994.0,0.0
+16.3,6.0,994.0,0.0
+16.35,6.0,994.0,0.0
+16.4,6.0,994.0,0.0
+16.45,6.0,994.0,0.0
+16.5,6.0,994.0,0.0
+16.55,6.0,994.0,0.0
+16.6,6.0,994.0,0.0
+16.65,6.0,994.0,0.0
+16.7,6.0,994.0,0.0
+16.75,6.0,994.0,0.0
+16.8,6.0,994.0,0.0
+16.85,6.0,994.0,0.0
+16.9,6.0,994.0,0.0
+16.95,6.0,994.0,0.0
+17.0,6.0,994.0,0.0
+17.05,5.0,995.0,0.0
+17.1,4.0,996.0,0.0
+17.15,4.0,996.0,0.0
+17.2,4.0,996.0,0.0
+17.25,4.0,996.0,0.0
+17.3,4.0,996.0,0.0
+17.35,3.0,997.0,0.0
+17.4,3.0,997.0,0.0
+17.45,3.0,997.0,0.0
+17.5,3.0,997.0,0.0
+17.55,3.0,997.0,0.0
+17.6,3.0,997.0,0.0
+17.65,3.0,997.0,0.0
+17.7,3.0,997.0,0.0
+17.75,3.0,997.0,0.0
+17.8,3.0,997.0,0.0
+17.85,3.0,997.0,0.0
+17.9,3.0,997.0,0.0
+17.95,3.0,997.0,0.0
+18.0,3.0,997.0,0.0
+18.05,3.0,997.0,0.0
+18.1,3.0,997.0,0.0
+18.15,3.0,997.0,0.0
+18.2,3.0,997.0,0.0
+18.25,3.0,997.0,0.0
+18.3,3.0,997.0,0.0
+18.35,3.0,997.0,0.0
+18.4,3.0,997.0,0.0
+18.45,3.0,997.0,0.0
+18.5,3.0,997.0,0.0
+18.55,3.0,997.0,0.0
+18.6,3.0,997.0,0.0
+18.65,3.0,997.0,0.0
+18.7,3.0,997.0,0.0
+18.75,3.0,997.0,0.0
+18.8,3.0,997.0,0.0
+18.85,3.0,997.0,0.0
+18.9,3.0,997.0,0.0
+18.95,3.0,997.0,0.0
+19.0,3.0,997.0,0.0
+19.05,3.0,997.0,0.0
+19.1,3.0,997.0,0.0
+19.15,3.0,997.0,0.0
+19.2,3.0,997.0,0.0
+19.25,3.0,997.0,0.0
+19.3,3.0,997.0,0.0
+19.35,3.0,997.0,0.0
+19.4,3.0,997.0,0.0
+19.45,3.0,997.0,0.0
+19.5,3.0,997.0,0.0
+19.55,3.0,997.0,0.0
+19.6,3.0,997.0,0.0
+19.65,3.0,997.0,0.0
+19.7,3.0,997.0,0.0
+19.75,3.0,997.0,0.0
+19.8,3.0,997.0,0.0
+19.85,3.0,997.0,0.0
+19.9,3.0,997.0,0.0
+19.95,2.0,998.0,0.0
+20.0,2.0,998.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv19.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv19.csv
new file mode 100644
index 0000000000..67fe14f747
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv19.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,5.0,0.0,995.0
+0.2,7.0,0.0,993.0
+0.25,12.0,1.0,987.0
+0.3,14.0,1.0,985.0
+0.35,17.0,1.0,982.0
+0.4,23.0,1.0,976.0
+0.45,32.0,1.0,967.0
+0.5,49.0,1.0,950.0
+0.55,76.0,4.0,920.0
+0.6,118.0,5.0,877.0
+0.65,153.0,6.0,841.0
+0.7,216.0,9.0,775.0
+0.75,278.0,14.0,708.0
+0.8,359.0,19.0,622.0
+0.85,444.0,32.0,524.0
+0.9,516.0,40.0,444.0
+0.95,600.0,48.0,352.0
+1.0,670.0,62.0,268.0
+1.05,731.0,80.0,189.0
+1.1,774.0,95.0,131.0
+1.15,796.0,110.0,94.0
+1.2,811.0,123.0,66.0
+1.25,823.0,137.0,40.0
+1.3,822.0,149.0,29.0
+1.35,822.0,157.0,21.0
+1.4,816.0,168.0,16.0
+1.45,807.0,181.0,12.0
+1.5,790.0,200.0,10.0
+1.55,785.0,209.0,6.0
+1.6,769.0,227.0,4.0
+1.65,758.0,238.0,4.0
+1.7,750.0,248.0,2.0
+1.75,733.0,265.0,2.0
+1.8,724.0,275.0,1.0
+1.85,709.0,290.0,1.0
+1.9,703.0,296.0,1.0
+1.95,687.0,312.0,1.0
+2.0,673.0,327.0,0.0
+2.05,666.0,334.0,0.0
+2.1,654.0,346.0,0.0
+2.15,645.0,355.0,0.0
+2.2,635.0,365.0,0.0
+2.25,629.0,371.0,0.0
+2.3,623.0,377.0,0.0
+2.35,615.0,385.0,0.0
+2.4,596.0,404.0,0.0
+2.45,593.0,407.0,0.0
+2.5,579.0,421.0,0.0
+2.55,570.0,430.0,0.0
+2.6,561.0,439.0,0.0
+2.65,551.0,449.0,0.0
+2.7,541.0,459.0,0.0
+2.75,531.0,469.0,0.0
+2.8,520.0,480.0,0.0
+2.85,512.0,488.0,0.0
+2.9,500.0,500.0,0.0
+2.95,489.0,511.0,0.0
+3.0,480.0,520.0,0.0
+3.05,473.0,527.0,0.0
+3.1,468.0,532.0,0.0
+3.15,462.0,538.0,0.0
+3.2,456.0,544.0,0.0
+3.25,453.0,547.0,0.0
+3.3,442.0,558.0,0.0
+3.35,439.0,561.0,0.0
+3.4,431.0,569.0,0.0
+3.45,421.0,579.0,0.0
+3.5,412.0,588.0,0.0
+3.55,406.0,594.0,0.0
+3.6,400.0,600.0,0.0
+3.65,394.0,606.0,0.0
+3.7,387.0,613.0,0.0
+3.75,382.0,618.0,0.0
+3.8,374.0,626.0,0.0
+3.85,372.0,628.0,0.0
+3.9,363.0,637.0,0.0
+3.95,361.0,639.0,0.0
+4.0,356.0,644.0,0.0
+4.05,353.0,647.0,0.0
+4.1,349.0,651.0,0.0
+4.15,344.0,656.0,0.0
+4.2,339.0,661.0,0.0
+4.25,335.0,665.0,0.0
+4.3,328.0,672.0,0.0
+4.35,324.0,676.0,0.0
+4.4,323.0,677.0,0.0
+4.45,319.0,681.0,0.0
+4.5,312.0,688.0,0.0
+4.55,308.0,692.0,0.0
+4.6,305.0,695.0,0.0
+4.65,296.0,704.0,0.0
+4.7,287.0,713.0,0.0
+4.75,284.0,716.0,0.0
+4.8,281.0,719.0,0.0
+4.85,279.0,721.0,0.0
+4.9,276.0,724.0,0.0
+4.95,273.0,727.0,0.0
+5.0,269.0,731.0,0.0
+5.05,266.0,734.0,0.0
+5.1,262.0,738.0,0.0
+5.15,259.0,741.0,0.0
+5.2,256.0,744.0,0.0
+5.25,254.0,746.0,0.0
+5.3,248.0,752.0,0.0
+5.35,241.0,759.0,0.0
+5.4,240.0,760.0,0.0
+5.45,237.0,763.0,0.0
+5.5,234.0,766.0,0.0
+5.55,228.0,772.0,0.0
+5.6,226.0,774.0,0.0
+5.65,217.0,783.0,0.0
+5.7,213.0,787.0,0.0
+5.75,210.0,790.0,0.0
+5.8,206.0,794.0,0.0
+5.85,205.0,795.0,0.0
+5.9,198.0,802.0,0.0
+5.95,197.0,803.0,0.0
+6.0,197.0,803.0,0.0
+6.05,195.0,805.0,0.0
+6.1,190.0,810.0,0.0
+6.15,186.0,814.0,0.0
+6.2,186.0,814.0,0.0
+6.25,183.0,817.0,0.0
+6.3,180.0,820.0,0.0
+6.35,178.0,822.0,0.0
+6.4,175.0,825.0,0.0
+6.45,174.0,826.0,0.0
+6.5,170.0,830.0,0.0
+6.55,165.0,835.0,0.0
+6.6,164.0,836.0,0.0
+6.65,162.0,838.0,0.0
+6.7,160.0,840.0,0.0
+6.75,157.0,843.0,0.0
+6.8,155.0,845.0,0.0
+6.85,149.0,851.0,0.0
+6.9,148.0,852.0,0.0
+6.95,146.0,854.0,0.0
+7.0,144.0,856.0,0.0
+7.05,143.0,857.0,0.0
+7.1,142.0,858.0,0.0
+7.15,139.0,861.0,0.0
+7.2,137.0,863.0,0.0
+7.25,131.0,869.0,0.0
+7.3,127.0,873.0,0.0
+7.35,125.0,875.0,0.0
+7.4,121.0,879.0,0.0
+7.45,119.0,881.0,0.0
+7.5,119.0,881.0,0.0
+7.55,118.0,882.0,0.0
+7.6,115.0,885.0,0.0
+7.65,114.0,886.0,0.0
+7.7,112.0,888.0,0.0
+7.75,112.0,888.0,0.0
+7.8,112.0,888.0,0.0
+7.85,112.0,888.0,0.0
+7.9,112.0,888.0,0.0
+7.95,109.0,891.0,0.0
+8.0,108.0,892.0,0.0
+8.05,106.0,894.0,0.0
+8.1,102.0,898.0,0.0
+8.15,100.0,900.0,0.0
+8.2,99.0,901.0,0.0
+8.25,95.0,905.0,0.0
+8.3,93.0,907.0,0.0
+8.35,90.0,910.0,0.0
+8.4,89.0,911.0,0.0
+8.45,88.0,912.0,0.0
+8.5,85.0,915.0,0.0
+8.55,82.0,918.0,0.0
+8.6,81.0,919.0,0.0
+8.65,81.0,919.0,0.0
+8.7,79.0,921.0,0.0
+8.75,77.0,923.0,0.0
+8.8,77.0,923.0,0.0
+8.85,77.0,923.0,0.0
+8.9,77.0,923.0,0.0
+8.95,76.0,924.0,0.0
+9.0,74.0,926.0,0.0
+9.05,73.0,927.0,0.0
+9.1,71.0,929.0,0.0
+9.15,70.0,930.0,0.0
+9.2,69.0,931.0,0.0
+9.25,68.0,932.0,0.0
+9.3,68.0,932.0,0.0
+9.35,66.0,934.0,0.0
+9.4,65.0,935.0,0.0
+9.45,65.0,935.0,0.0
+9.5,65.0,935.0,0.0
+9.55,65.0,935.0,0.0
+9.6,65.0,935.0,0.0
+9.65,64.0,936.0,0.0
+9.7,62.0,938.0,0.0
+9.75,61.0,939.0,0.0
+9.8,61.0,939.0,0.0
+9.85,61.0,939.0,0.0
+9.9,60.0,940.0,0.0
+9.95,60.0,940.0,0.0
+10.0,59.0,941.0,0.0
+10.05,58.0,942.0,0.0
+10.1,58.0,942.0,0.0
+10.15,56.0,944.0,0.0
+10.2,55.0,945.0,0.0
+10.25,55.0,945.0,0.0
+10.3,55.0,945.0,0.0
+10.35,55.0,945.0,0.0
+10.4,54.0,946.0,0.0
+10.45,53.0,947.0,0.0
+10.5,52.0,948.0,0.0
+10.55,52.0,948.0,0.0
+10.6,52.0,948.0,0.0
+10.65,52.0,948.0,0.0
+10.7,52.0,948.0,0.0
+10.75,50.0,950.0,0.0
+10.8,50.0,950.0,0.0
+10.85,50.0,950.0,0.0
+10.9,50.0,950.0,0.0
+10.95,50.0,950.0,0.0
+11.0,48.0,952.0,0.0
+11.05,47.0,953.0,0.0
+11.1,45.0,955.0,0.0
+11.15,44.0,956.0,0.0
+11.2,44.0,956.0,0.0
+11.25,44.0,956.0,0.0
+11.3,44.0,956.0,0.0
+11.35,44.0,956.0,0.0
+11.4,44.0,956.0,0.0
+11.45,44.0,956.0,0.0
+11.5,42.0,958.0,0.0
+11.55,42.0,958.0,0.0
+11.6,42.0,958.0,0.0
+11.65,41.0,959.0,0.0
+11.7,41.0,959.0,0.0
+11.75,39.0,961.0,0.0
+11.8,39.0,961.0,0.0
+11.85,39.0,961.0,0.0
+11.9,39.0,961.0,0.0
+11.95,38.0,962.0,0.0
+12.0,37.0,963.0,0.0
+12.05,36.0,964.0,0.0
+12.1,34.0,966.0,0.0
+12.15,33.0,967.0,0.0
+12.2,33.0,967.0,0.0
+12.25,33.0,967.0,0.0
+12.3,31.0,969.0,0.0
+12.35,31.0,969.0,0.0
+12.4,30.0,970.0,0.0
+12.45,30.0,970.0,0.0
+12.5,30.0,970.0,0.0
+12.55,30.0,970.0,0.0
+12.6,30.0,970.0,0.0
+12.65,29.0,971.0,0.0
+12.7,25.0,975.0,0.0
+12.75,25.0,975.0,0.0
+12.8,25.0,975.0,0.0
+12.85,24.0,976.0,0.0
+12.9,24.0,976.0,0.0
+12.95,24.0,976.0,0.0
+13.0,24.0,976.0,0.0
+13.05,22.0,978.0,0.0
+13.1,22.0,978.0,0.0
+13.15,22.0,978.0,0.0
+13.2,21.0,979.0,0.0
+13.25,21.0,979.0,0.0
+13.3,21.0,979.0,0.0
+13.35,21.0,979.0,0.0
+13.4,21.0,979.0,0.0
+13.45,21.0,979.0,0.0
+13.5,21.0,979.0,0.0
+13.55,21.0,979.0,0.0
+13.6,20.0,980.0,0.0
+13.65,20.0,980.0,0.0
+13.7,20.0,980.0,0.0
+13.75,19.0,981.0,0.0
+13.8,19.0,981.0,0.0
+13.85,18.0,982.0,0.0
+13.9,18.0,982.0,0.0
+13.95,17.0,983.0,0.0
+14.0,17.0,983.0,0.0
+14.05,17.0,983.0,0.0
+14.1,14.0,986.0,0.0
+14.15,14.0,986.0,0.0
+14.2,14.0,986.0,0.0
+14.25,14.0,986.0,0.0
+14.3,14.0,986.0,0.0
+14.35,14.0,986.0,0.0
+14.4,14.0,986.0,0.0
+14.45,13.0,987.0,0.0
+14.5,12.0,988.0,0.0
+14.55,12.0,988.0,0.0
+14.6,12.0,988.0,0.0
+14.65,12.0,988.0,0.0
+14.7,12.0,988.0,0.0
+14.75,12.0,988.0,0.0
+14.8,12.0,988.0,0.0
+14.85,12.0,988.0,0.0
+14.9,12.0,988.0,0.0
+14.95,12.0,988.0,0.0
+15.0,12.0,988.0,0.0
+15.05,12.0,988.0,0.0
+15.1,12.0,988.0,0.0
+15.15,12.0,988.0,0.0
+15.2,12.0,988.0,0.0
+15.25,12.0,988.0,0.0
+15.3,12.0,988.0,0.0
+15.35,12.0,988.0,0.0
+15.4,12.0,988.0,0.0
+15.45,12.0,988.0,0.0
+15.5,12.0,988.0,0.0
+15.55,11.0,989.0,0.0
+15.6,11.0,989.0,0.0
+15.65,11.0,989.0,0.0
+15.7,11.0,989.0,0.0
+15.75,11.0,989.0,0.0
+15.8,11.0,989.0,0.0
+15.85,11.0,989.0,0.0
+15.9,11.0,989.0,0.0
+15.95,11.0,989.0,0.0
+16.0,11.0,989.0,0.0
+16.05,11.0,989.0,0.0
+16.1,11.0,989.0,0.0
+16.15,11.0,989.0,0.0
+16.2,10.0,990.0,0.0
+16.25,10.0,990.0,0.0
+16.3,10.0,990.0,0.0
+16.35,10.0,990.0,0.0
+16.4,10.0,990.0,0.0
+16.45,10.0,990.0,0.0
+16.5,10.0,990.0,0.0
+16.55,10.0,990.0,0.0
+16.6,10.0,990.0,0.0
+16.65,10.0,990.0,0.0
+16.7,10.0,990.0,0.0
+16.75,10.0,990.0,0.0
+16.8,10.0,990.0,0.0
+16.85,10.0,990.0,0.0
+16.9,10.0,990.0,0.0
+16.95,8.0,992.0,0.0
+17.0,8.0,992.0,0.0
+17.05,8.0,992.0,0.0
+17.1,8.0,992.0,0.0
+17.15,8.0,992.0,0.0
+17.2,7.0,993.0,0.0
+17.25,7.0,993.0,0.0
+17.3,6.0,994.0,0.0
+17.35,6.0,994.0,0.0
+17.4,6.0,994.0,0.0
+17.45,6.0,994.0,0.0
+17.5,6.0,994.0,0.0
+17.55,6.0,994.0,0.0
+17.6,6.0,994.0,0.0
+17.65,6.0,994.0,0.0
+17.7,6.0,994.0,0.0
+17.75,5.0,995.0,0.0
+17.8,5.0,995.0,0.0
+17.85,5.0,995.0,0.0
+17.9,5.0,995.0,0.0
+17.95,4.0,996.0,0.0
+18.0,4.0,996.0,0.0
+18.05,4.0,996.0,0.0
+18.1,4.0,996.0,0.0
+18.15,4.0,996.0,0.0
+18.2,4.0,996.0,0.0
+18.25,4.0,996.0,0.0
+18.3,4.0,996.0,0.0
+18.35,4.0,996.0,0.0
+18.4,4.0,996.0,0.0
+18.45,3.0,997.0,0.0
+18.5,3.0,997.0,0.0
+18.55,3.0,997.0,0.0
+18.6,3.0,997.0,0.0
+18.65,3.0,997.0,0.0
+18.7,3.0,997.0,0.0
+18.75,3.0,997.0,0.0
+18.8,3.0,997.0,0.0
+18.85,3.0,997.0,0.0
+18.9,3.0,997.0,0.0
+18.95,3.0,997.0,0.0
+19.0,3.0,997.0,0.0
+19.05,2.0,998.0,0.0
+19.1,2.0,998.0,0.0
+19.15,2.0,998.0,0.0
+19.2,2.0,998.0,0.0
+19.25,2.0,998.0,0.0
+19.3,2.0,998.0,0.0
+19.35,2.0,998.0,0.0
+19.4,2.0,998.0,0.0
+19.45,2.0,998.0,0.0
+19.5,2.0,998.0,0.0
+19.55,2.0,998.0,0.0
+19.6,2.0,998.0,0.0
+19.65,2.0,998.0,0.0
+19.7,2.0,998.0,0.0
+19.75,2.0,998.0,0.0
+19.8,2.0,998.0,0.0
+19.85,2.0,998.0,0.0
+19.9,2.0,998.0,0.0
+19.95,2.0,998.0,0.0
+20.0,2.0,998.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv2.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv2.csv
new file mode 100644
index 0000000000..1fb84cd90c
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv2.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,2.0,0.0,998.0
+0.15,2.0,0.0,998.0
+0.2,2.0,0.0,998.0
+0.25,2.0,0.0,998.0
+0.3,2.0,0.0,998.0
+0.35,1.0,1.0,998.0
+0.4,2.0,1.0,997.0
+0.45,2.0,1.0,997.0
+0.5,3.0,1.0,996.0
+0.55,4.0,1.0,995.0
+0.6,6.0,1.0,993.0
+0.65,6.0,1.0,993.0
+0.7,5.0,2.0,993.0
+0.75,8.0,2.0,990.0
+0.8,13.0,2.0,985.0
+0.85,19.0,2.0,979.0
+0.9,24.0,3.0,973.0
+0.95,34.0,3.0,963.0
+1.0,42.0,3.0,955.0
+1.05,62.0,4.0,934.0
+1.1,98.0,4.0,898.0
+1.15,142.0,7.0,851.0
+1.2,193.0,10.0,797.0
+1.25,268.0,16.0,716.0
+1.3,345.0,20.0,635.0
+1.35,431.0,25.0,544.0
+1.4,515.0,37.0,448.0
+1.45,608.0,45.0,347.0
+1.5,670.0,54.0,276.0
+1.55,733.0,62.0,205.0
+1.6,788.0,68.0,144.0
+1.65,817.0,77.0,106.0
+1.7,830.0,91.0,79.0
+1.75,830.0,111.0,59.0
+1.8,834.0,123.0,43.0
+1.85,823.0,144.0,33.0
+1.9,822.0,156.0,22.0
+1.95,816.0,166.0,18.0
+2.0,804.0,181.0,15.0
+2.05,796.0,193.0,11.0
+2.1,791.0,202.0,7.0
+2.15,782.0,213.0,5.0
+2.2,768.0,228.0,4.0
+2.25,758.0,239.0,3.0
+2.3,745.0,253.0,2.0
+2.35,730.0,268.0,2.0
+2.4,717.0,281.0,2.0
+2.45,703.0,295.0,2.0
+2.5,689.0,309.0,2.0
+2.55,677.0,321.0,2.0
+2.6,669.0,331.0,0.0
+2.65,662.0,338.0,0.0
+2.7,652.0,348.0,0.0
+2.75,642.0,358.0,0.0
+2.8,633.0,367.0,0.0
+2.85,625.0,375.0,0.0
+2.9,612.0,388.0,0.0
+2.95,604.0,396.0,0.0
+3.0,598.0,402.0,0.0
+3.05,586.0,414.0,0.0
+3.1,577.0,423.0,0.0
+3.15,572.0,428.0,0.0
+3.2,561.0,439.0,0.0
+3.25,552.0,448.0,0.0
+3.3,540.0,460.0,0.0
+3.35,536.0,464.0,0.0
+3.4,529.0,471.0,0.0
+3.45,522.0,478.0,0.0
+3.5,516.0,484.0,0.0
+3.55,509.0,491.0,0.0
+3.6,503.0,497.0,0.0
+3.65,497.0,503.0,0.0
+3.7,489.0,511.0,0.0
+3.75,482.0,518.0,0.0
+3.8,474.0,526.0,0.0
+3.85,468.0,532.0,0.0
+3.9,461.0,539.0,0.0
+3.95,455.0,545.0,0.0
+4.0,451.0,549.0,0.0
+4.05,443.0,557.0,0.0
+4.1,440.0,560.0,0.0
+4.15,433.0,567.0,0.0
+4.2,426.0,574.0,0.0
+4.25,423.0,577.0,0.0
+4.3,416.0,584.0,0.0
+4.35,413.0,587.0,0.0
+4.4,410.0,590.0,0.0
+4.45,405.0,595.0,0.0
+4.5,396.0,604.0,0.0
+4.55,386.0,614.0,0.0
+4.6,382.0,618.0,0.0
+4.65,379.0,621.0,0.0
+4.7,373.0,627.0,0.0
+4.75,365.0,635.0,0.0
+4.8,355.0,645.0,0.0
+4.85,352.0,648.0,0.0
+4.9,347.0,653.0,0.0
+4.95,340.0,660.0,0.0
+5.0,336.0,664.0,0.0
+5.05,334.0,666.0,0.0
+5.1,329.0,671.0,0.0
+5.15,322.0,678.0,0.0
+5.2,318.0,682.0,0.0
+5.25,313.0,687.0,0.0
+5.3,310.0,690.0,0.0
+5.35,309.0,691.0,0.0
+5.4,305.0,695.0,0.0
+5.45,301.0,699.0,0.0
+5.5,296.0,704.0,0.0
+5.55,294.0,706.0,0.0
+5.6,290.0,710.0,0.0
+5.65,286.0,714.0,0.0
+5.7,283.0,717.0,0.0
+5.75,277.0,723.0,0.0
+5.8,275.0,725.0,0.0
+5.85,266.0,734.0,0.0
+5.9,261.0,739.0,0.0
+5.95,257.0,743.0,0.0
+6.0,253.0,747.0,0.0
+6.05,249.0,751.0,0.0
+6.1,246.0,754.0,0.0
+6.15,242.0,758.0,0.0
+6.2,236.0,764.0,0.0
+6.25,233.0,767.0,0.0
+6.3,229.0,771.0,0.0
+6.35,227.0,773.0,0.0
+6.4,225.0,775.0,0.0
+6.45,221.0,779.0,0.0
+6.5,216.0,784.0,0.0
+6.55,211.0,789.0,0.0
+6.6,207.0,793.0,0.0
+6.65,197.0,803.0,0.0
+6.7,195.0,805.0,0.0
+6.75,194.0,806.0,0.0
+6.8,189.0,811.0,0.0
+6.85,187.0,813.0,0.0
+6.9,185.0,815.0,0.0
+6.95,185.0,815.0,0.0
+7.0,181.0,819.0,0.0
+7.05,177.0,823.0,0.0
+7.1,176.0,824.0,0.0
+7.15,176.0,824.0,0.0
+7.2,173.0,827.0,0.0
+7.25,169.0,831.0,0.0
+7.3,166.0,834.0,0.0
+7.35,164.0,836.0,0.0
+7.4,162.0,838.0,0.0
+7.45,159.0,841.0,0.0
+7.5,157.0,843.0,0.0
+7.55,153.0,847.0,0.0
+7.6,149.0,851.0,0.0
+7.65,146.0,854.0,0.0
+7.7,145.0,855.0,0.0
+7.75,143.0,857.0,0.0
+7.8,142.0,858.0,0.0
+7.85,138.0,862.0,0.0
+7.9,138.0,862.0,0.0
+7.95,136.0,864.0,0.0
+8.0,136.0,864.0,0.0
+8.05,135.0,865.0,0.0
+8.1,132.0,868.0,0.0
+8.15,131.0,869.0,0.0
+8.2,129.0,871.0,0.0
+8.25,129.0,871.0,0.0
+8.3,129.0,871.0,0.0
+8.35,127.0,873.0,0.0
+8.4,127.0,873.0,0.0
+8.45,124.0,876.0,0.0
+8.5,121.0,879.0,0.0
+8.55,119.0,881.0,0.0
+8.6,117.0,883.0,0.0
+8.65,113.0,887.0,0.0
+8.7,112.0,888.0,0.0
+8.75,108.0,892.0,0.0
+8.8,104.0,896.0,0.0
+8.85,103.0,897.0,0.0
+8.9,101.0,899.0,0.0
+8.95,101.0,899.0,0.0
+9.0,99.0,901.0,0.0
+9.05,94.0,906.0,0.0
+9.1,92.0,908.0,0.0
+9.15,92.0,908.0,0.0
+9.2,90.0,910.0,0.0
+9.25,88.0,912.0,0.0
+9.3,86.0,914.0,0.0
+9.35,86.0,914.0,0.0
+9.4,86.0,914.0,0.0
+9.45,85.0,915.0,0.0
+9.5,83.0,917.0,0.0
+9.55,83.0,917.0,0.0
+9.6,83.0,917.0,0.0
+9.65,82.0,918.0,0.0
+9.7,80.0,920.0,0.0
+9.75,80.0,920.0,0.0
+9.8,79.0,921.0,0.0
+9.85,78.0,922.0,0.0
+9.9,78.0,922.0,0.0
+9.95,75.0,925.0,0.0
+10.0,74.0,926.0,0.0
+10.05,73.0,927.0,0.0
+10.1,72.0,928.0,0.0
+10.15,69.0,931.0,0.0
+10.2,68.0,932.0,0.0
+10.25,68.0,932.0,0.0
+10.3,68.0,932.0,0.0
+10.35,68.0,932.0,0.0
+10.4,67.0,933.0,0.0
+10.45,67.0,933.0,0.0
+10.5,63.0,937.0,0.0
+10.55,61.0,939.0,0.0
+10.6,60.0,940.0,0.0
+10.65,60.0,940.0,0.0
+10.7,59.0,941.0,0.0
+10.75,59.0,941.0,0.0
+10.8,57.0,943.0,0.0
+10.85,54.0,946.0,0.0
+10.9,52.0,948.0,0.0
+10.95,52.0,948.0,0.0
+11.0,52.0,948.0,0.0
+11.05,49.0,951.0,0.0
+11.1,49.0,951.0,0.0
+11.15,49.0,951.0,0.0
+11.2,48.0,952.0,0.0
+11.25,47.0,953.0,0.0
+11.3,46.0,954.0,0.0
+11.35,44.0,956.0,0.0
+11.4,43.0,957.0,0.0
+11.45,42.0,958.0,0.0
+11.5,41.0,959.0,0.0
+11.55,41.0,959.0,0.0
+11.6,41.0,959.0,0.0
+11.65,41.0,959.0,0.0
+11.7,41.0,959.0,0.0
+11.75,40.0,960.0,0.0
+11.8,40.0,960.0,0.0
+11.85,39.0,961.0,0.0
+11.9,38.0,962.0,0.0
+11.95,38.0,962.0,0.0
+12.0,38.0,962.0,0.0
+12.05,36.0,964.0,0.0
+12.1,35.0,965.0,0.0
+12.15,35.0,965.0,0.0
+12.2,35.0,965.0,0.0
+12.25,34.0,966.0,0.0
+12.3,34.0,966.0,0.0
+12.35,34.0,966.0,0.0
+12.4,34.0,966.0,0.0
+12.45,34.0,966.0,0.0
+12.5,33.0,967.0,0.0
+12.55,33.0,967.0,0.0
+12.6,33.0,967.0,0.0
+12.65,33.0,967.0,0.0
+12.7,32.0,968.0,0.0
+12.75,30.0,970.0,0.0
+12.8,28.0,972.0,0.0
+12.85,28.0,972.0,0.0
+12.9,27.0,973.0,0.0
+12.95,27.0,973.0,0.0
+13.0,27.0,973.0,0.0
+13.05,26.0,974.0,0.0
+13.1,26.0,974.0,0.0
+13.15,26.0,974.0,0.0
+13.2,24.0,976.0,0.0
+13.25,24.0,976.0,0.0
+13.3,24.0,976.0,0.0
+13.35,23.0,977.0,0.0
+13.4,23.0,977.0,0.0
+13.45,22.0,978.0,0.0
+13.5,21.0,979.0,0.0
+13.55,21.0,979.0,0.0
+13.6,21.0,979.0,0.0
+13.65,21.0,979.0,0.0
+13.7,21.0,979.0,0.0
+13.75,21.0,979.0,0.0
+13.8,21.0,979.0,0.0
+13.85,21.0,979.0,0.0
+13.9,21.0,979.0,0.0
+13.95,21.0,979.0,0.0
+14.0,21.0,979.0,0.0
+14.05,21.0,979.0,0.0
+14.1,21.0,979.0,0.0
+14.15,20.0,980.0,0.0
+14.2,20.0,980.0,0.0
+14.25,20.0,980.0,0.0
+14.3,20.0,980.0,0.0
+14.35,20.0,980.0,0.0
+14.4,20.0,980.0,0.0
+14.45,20.0,980.0,0.0
+14.5,19.0,981.0,0.0
+14.55,19.0,981.0,0.0
+14.6,19.0,981.0,0.0
+14.65,19.0,981.0,0.0
+14.7,19.0,981.0,0.0
+14.75,19.0,981.0,0.0
+14.8,18.0,982.0,0.0
+14.85,17.0,983.0,0.0
+14.9,17.0,983.0,0.0
+14.95,16.0,984.0,0.0
+15.0,16.0,984.0,0.0
+15.05,15.0,985.0,0.0
+15.1,15.0,985.0,0.0
+15.15,15.0,985.0,0.0
+15.2,15.0,985.0,0.0
+15.25,14.0,986.0,0.0
+15.3,14.0,986.0,0.0
+15.35,14.0,986.0,0.0
+15.4,14.0,986.0,0.0
+15.45,14.0,986.0,0.0
+15.5,14.0,986.0,0.0
+15.55,14.0,986.0,0.0
+15.6,14.0,986.0,0.0
+15.65,14.0,986.0,0.0
+15.7,14.0,986.0,0.0
+15.75,14.0,986.0,0.0
+15.8,14.0,986.0,0.0
+15.85,13.0,987.0,0.0
+15.9,13.0,987.0,0.0
+15.95,13.0,987.0,0.0
+16.0,13.0,987.0,0.0
+16.05,12.0,988.0,0.0
+16.1,12.0,988.0,0.0
+16.15,12.0,988.0,0.0
+16.2,11.0,989.0,0.0
+16.25,11.0,989.0,0.0
+16.3,10.0,990.0,0.0
+16.35,10.0,990.0,0.0
+16.4,9.0,991.0,0.0
+16.45,9.0,991.0,0.0
+16.5,9.0,991.0,0.0
+16.55,9.0,991.0,0.0
+16.6,9.0,991.0,0.0
+16.65,7.0,993.0,0.0
+16.7,7.0,993.0,0.0
+16.75,7.0,993.0,0.0
+16.8,7.0,993.0,0.0
+16.85,7.0,993.0,0.0
+16.9,7.0,993.0,0.0
+16.95,7.0,993.0,0.0
+17.0,7.0,993.0,0.0
+17.05,7.0,993.0,0.0
+17.1,6.0,994.0,0.0
+17.15,6.0,994.0,0.0
+17.2,6.0,994.0,0.0
+17.25,5.0,995.0,0.0
+17.3,5.0,995.0,0.0
+17.35,5.0,995.0,0.0
+17.4,5.0,995.0,0.0
+17.45,5.0,995.0,0.0
+17.5,4.0,996.0,0.0
+17.55,4.0,996.0,0.0
+17.6,4.0,996.0,0.0
+17.65,4.0,996.0,0.0
+17.7,4.0,996.0,0.0
+17.75,4.0,996.0,0.0
+17.8,4.0,996.0,0.0
+17.85,4.0,996.0,0.0
+17.9,4.0,996.0,0.0
+17.95,4.0,996.0,0.0
+18.0,4.0,996.0,0.0
+18.05,4.0,996.0,0.0
+18.1,4.0,996.0,0.0
+18.15,4.0,996.0,0.0
+18.2,4.0,996.0,0.0
+18.25,4.0,996.0,0.0
+18.3,3.0,997.0,0.0
+18.35,3.0,997.0,0.0
+18.4,3.0,997.0,0.0
+18.45,3.0,997.0,0.0
+18.5,3.0,997.0,0.0
+18.55,3.0,997.0,0.0
+18.6,3.0,997.0,0.0
+18.65,3.0,997.0,0.0
+18.7,3.0,997.0,0.0
+18.75,3.0,997.0,0.0
+18.8,3.0,997.0,0.0
+18.85,3.0,997.0,0.0
+18.9,3.0,997.0,0.0
+18.95,3.0,997.0,0.0
+19.0,3.0,997.0,0.0
+19.05,3.0,997.0,0.0
+19.1,3.0,997.0,0.0
+19.15,3.0,997.0,0.0
+19.2,3.0,997.0,0.0
+19.25,3.0,997.0,0.0
+19.3,3.0,997.0,0.0
+19.35,3.0,997.0,0.0
+19.4,3.0,997.0,0.0
+19.45,3.0,997.0,0.0
+19.5,3.0,997.0,0.0
+19.55,3.0,997.0,0.0
+19.6,2.0,998.0,0.0
+19.65,2.0,998.0,0.0
+19.7,2.0,998.0,0.0
+19.75,2.0,998.0,0.0
+19.8,2.0,998.0,0.0
+19.85,2.0,998.0,0.0
+19.9,2.0,998.0,0.0
+19.95,2.0,998.0,0.0
+20.0,2.0,998.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv3.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv3.csv
new file mode 100644
index 0000000000..04ef41bff9
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv3.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,1.0,0.0,999.0
+0.2,3.0,0.0,997.0
+0.25,3.0,0.0,997.0
+0.3,4.0,0.0,996.0
+0.35,8.0,0.0,992.0
+0.4,9.0,0.0,991.0
+0.45,14.0,0.0,986.0
+0.5,27.0,0.0,973.0
+0.55,40.0,0.0,960.0
+0.6,57.0,0.0,943.0
+0.65,77.0,1.0,922.0
+0.7,127.0,1.0,872.0
+0.75,172.0,1.0,827.0
+0.8,234.0,4.0,762.0
+0.85,321.0,6.0,673.0
+0.9,405.0,13.0,582.0
+0.95,494.0,17.0,489.0
+1.0,594.0,23.0,383.0
+1.05,674.0,28.0,298.0
+1.1,736.0,42.0,222.0
+1.15,789.0,51.0,160.0
+1.2,826.0,65.0,109.0
+1.25,839.0,80.0,81.0
+1.3,850.0,87.0,63.0
+1.35,856.0,100.0,44.0
+1.4,866.0,110.0,24.0
+1.45,855.0,130.0,15.0
+1.5,847.0,141.0,12.0
+1.55,842.0,148.0,10.0
+1.6,829.0,165.0,6.0
+1.65,813.0,184.0,3.0
+1.7,804.0,193.0,3.0
+1.75,789.0,208.0,3.0
+1.8,783.0,216.0,1.0
+1.85,772.0,227.0,1.0
+1.9,766.0,233.0,1.0
+1.95,763.0,237.0,0.0
+2.0,751.0,249.0,0.0
+2.05,743.0,257.0,0.0
+2.1,728.0,272.0,0.0
+2.15,719.0,281.0,0.0
+2.2,709.0,291.0,0.0
+2.25,698.0,302.0,0.0
+2.3,684.0,316.0,0.0
+2.35,677.0,323.0,0.0
+2.4,669.0,331.0,0.0
+2.45,660.0,340.0,0.0
+2.5,652.0,348.0,0.0
+2.55,644.0,356.0,0.0
+2.6,626.0,374.0,0.0
+2.65,619.0,381.0,0.0
+2.7,610.0,390.0,0.0
+2.75,604.0,396.0,0.0
+2.8,597.0,403.0,0.0
+2.85,593.0,407.0,0.0
+2.9,580.0,420.0,0.0
+2.95,570.0,430.0,0.0
+3.0,555.0,445.0,0.0
+3.05,540.0,460.0,0.0
+3.1,526.0,474.0,0.0
+3.15,516.0,484.0,0.0
+3.2,509.0,491.0,0.0
+3.25,503.0,497.0,0.0
+3.3,498.0,502.0,0.0
+3.35,488.0,512.0,0.0
+3.4,483.0,517.0,0.0
+3.45,473.0,527.0,0.0
+3.5,465.0,535.0,0.0
+3.55,456.0,544.0,0.0
+3.6,449.0,551.0,0.0
+3.65,445.0,555.0,0.0
+3.7,439.0,561.0,0.0
+3.75,431.0,569.0,0.0
+3.8,424.0,576.0,0.0
+3.85,415.0,585.0,0.0
+3.9,410.0,590.0,0.0
+3.95,407.0,593.0,0.0
+4.0,401.0,599.0,0.0
+4.05,397.0,603.0,0.0
+4.1,385.0,615.0,0.0
+4.15,381.0,619.0,0.0
+4.2,375.0,625.0,0.0
+4.25,371.0,629.0,0.0
+4.3,371.0,629.0,0.0
+4.35,366.0,634.0,0.0
+4.4,359.0,641.0,0.0
+4.45,354.0,646.0,0.0
+4.5,352.0,648.0,0.0
+4.55,345.0,655.0,0.0
+4.6,341.0,659.0,0.0
+4.65,339.0,661.0,0.0
+4.7,331.0,669.0,0.0
+4.75,323.0,677.0,0.0
+4.8,320.0,680.0,0.0
+4.85,315.0,685.0,0.0
+4.9,311.0,689.0,0.0
+4.95,308.0,692.0,0.0
+5.0,302.0,698.0,0.0
+5.05,296.0,704.0,0.0
+5.1,292.0,708.0,0.0
+5.15,290.0,710.0,0.0
+5.2,287.0,713.0,0.0
+5.25,284.0,716.0,0.0
+5.3,281.0,719.0,0.0
+5.35,274.0,726.0,0.0
+5.4,269.0,731.0,0.0
+5.45,263.0,737.0,0.0
+5.5,259.0,741.0,0.0
+5.55,253.0,747.0,0.0
+5.6,250.0,750.0,0.0
+5.65,248.0,752.0,0.0
+5.7,245.0,755.0,0.0
+5.75,242.0,758.0,0.0
+5.8,238.0,762.0,0.0
+5.85,234.0,766.0,0.0
+5.9,233.0,767.0,0.0
+5.95,229.0,771.0,0.0
+6.0,224.0,776.0,0.0
+6.05,220.0,780.0,0.0
+6.1,216.0,784.0,0.0
+6.15,212.0,788.0,0.0
+6.2,205.0,795.0,0.0
+6.25,202.0,798.0,0.0
+6.3,199.0,801.0,0.0
+6.35,197.0,803.0,0.0
+6.4,194.0,806.0,0.0
+6.45,191.0,809.0,0.0
+6.5,187.0,813.0,0.0
+6.55,184.0,816.0,0.0
+6.6,181.0,819.0,0.0
+6.65,179.0,821.0,0.0
+6.7,173.0,827.0,0.0
+6.75,172.0,828.0,0.0
+6.8,170.0,830.0,0.0
+6.85,168.0,832.0,0.0
+6.9,165.0,835.0,0.0
+6.95,165.0,835.0,0.0
+7.0,160.0,840.0,0.0
+7.05,159.0,841.0,0.0
+7.1,157.0,843.0,0.0
+7.15,156.0,844.0,0.0
+7.2,154.0,846.0,0.0
+7.25,153.0,847.0,0.0
+7.3,152.0,848.0,0.0
+7.35,150.0,850.0,0.0
+7.4,147.0,853.0,0.0
+7.45,146.0,854.0,0.0
+7.5,146.0,854.0,0.0
+7.55,145.0,855.0,0.0
+7.6,144.0,856.0,0.0
+7.65,143.0,857.0,0.0
+7.7,142.0,858.0,0.0
+7.75,141.0,859.0,0.0
+7.8,139.0,861.0,0.0
+7.85,137.0,863.0,0.0
+7.9,137.0,863.0,0.0
+7.95,132.0,868.0,0.0
+8.0,129.0,871.0,0.0
+8.05,129.0,871.0,0.0
+8.1,126.0,874.0,0.0
+8.15,124.0,876.0,0.0
+8.2,123.0,877.0,0.0
+8.25,120.0,880.0,0.0
+8.3,120.0,880.0,0.0
+8.35,115.0,885.0,0.0
+8.4,113.0,887.0,0.0
+8.45,113.0,887.0,0.0
+8.5,112.0,888.0,0.0
+8.55,111.0,889.0,0.0
+8.6,108.0,892.0,0.0
+8.65,107.0,893.0,0.0
+8.7,103.0,897.0,0.0
+8.75,101.0,899.0,0.0
+8.8,100.0,900.0,0.0
+8.85,99.0,901.0,0.0
+8.9,97.0,903.0,0.0
+8.95,97.0,903.0,0.0
+9.0,96.0,904.0,0.0
+9.05,91.0,909.0,0.0
+9.1,91.0,909.0,0.0
+9.15,90.0,910.0,0.0
+9.2,90.0,910.0,0.0
+9.25,85.0,915.0,0.0
+9.3,84.0,916.0,0.0
+9.35,84.0,916.0,0.0
+9.4,82.0,918.0,0.0
+9.45,80.0,920.0,0.0
+9.5,79.0,921.0,0.0
+9.55,79.0,921.0,0.0
+9.6,78.0,922.0,0.0
+9.65,78.0,922.0,0.0
+9.7,76.0,924.0,0.0
+9.75,75.0,925.0,0.0
+9.8,74.0,926.0,0.0
+9.85,74.0,926.0,0.0
+9.9,74.0,926.0,0.0
+9.95,73.0,927.0,0.0
+10.0,71.0,929.0,0.0
+10.05,71.0,929.0,0.0
+10.1,71.0,929.0,0.0
+10.15,71.0,929.0,0.0
+10.2,70.0,930.0,0.0
+10.25,70.0,930.0,0.0
+10.3,66.0,934.0,0.0
+10.35,65.0,935.0,0.0
+10.4,65.0,935.0,0.0
+10.45,65.0,935.0,0.0
+10.5,64.0,936.0,0.0
+10.55,64.0,936.0,0.0
+10.6,64.0,936.0,0.0
+10.65,63.0,937.0,0.0
+10.7,62.0,938.0,0.0
+10.75,61.0,939.0,0.0
+10.8,61.0,939.0,0.0
+10.85,60.0,940.0,0.0
+10.9,58.0,942.0,0.0
+10.95,58.0,942.0,0.0
+11.0,58.0,942.0,0.0
+11.05,58.0,942.0,0.0
+11.1,58.0,942.0,0.0
+11.15,57.0,943.0,0.0
+11.2,55.0,945.0,0.0
+11.25,55.0,945.0,0.0
+11.3,52.0,948.0,0.0
+11.35,50.0,950.0,0.0
+11.4,48.0,952.0,0.0
+11.45,48.0,952.0,0.0
+11.5,45.0,955.0,0.0
+11.55,45.0,955.0,0.0
+11.6,45.0,955.0,0.0
+11.65,42.0,958.0,0.0
+11.7,41.0,959.0,0.0
+11.75,40.0,960.0,0.0
+11.8,39.0,961.0,0.0
+11.85,39.0,961.0,0.0
+11.9,39.0,961.0,0.0
+11.95,38.0,962.0,0.0
+12.0,38.0,962.0,0.0
+12.05,37.0,963.0,0.0
+12.1,37.0,963.0,0.0
+12.15,37.0,963.0,0.0
+12.2,37.0,963.0,0.0
+12.25,37.0,963.0,0.0
+12.3,35.0,965.0,0.0
+12.35,34.0,966.0,0.0
+12.4,34.0,966.0,0.0
+12.45,34.0,966.0,0.0
+12.5,34.0,966.0,0.0
+12.55,34.0,966.0,0.0
+12.6,34.0,966.0,0.0
+12.65,34.0,966.0,0.0
+12.7,34.0,966.0,0.0
+12.75,34.0,966.0,0.0
+12.8,33.0,967.0,0.0
+12.85,32.0,968.0,0.0
+12.9,31.0,969.0,0.0
+12.95,30.0,970.0,0.0
+13.0,29.0,971.0,0.0
+13.05,29.0,971.0,0.0
+13.1,29.0,971.0,0.0
+13.15,29.0,971.0,0.0
+13.2,29.0,971.0,0.0
+13.25,29.0,971.0,0.0
+13.3,29.0,971.0,0.0
+13.35,28.0,972.0,0.0
+13.4,28.0,972.0,0.0
+13.45,27.0,973.0,0.0
+13.5,24.0,976.0,0.0
+13.55,24.0,976.0,0.0
+13.6,23.0,977.0,0.0
+13.65,22.0,978.0,0.0
+13.7,22.0,978.0,0.0
+13.75,21.0,979.0,0.0
+13.8,21.0,979.0,0.0
+13.85,21.0,979.0,0.0
+13.9,20.0,980.0,0.0
+13.95,20.0,980.0,0.0
+14.0,19.0,981.0,0.0
+14.05,19.0,981.0,0.0
+14.1,19.0,981.0,0.0
+14.15,19.0,981.0,0.0
+14.2,19.0,981.0,0.0
+14.25,19.0,981.0,0.0
+14.3,19.0,981.0,0.0
+14.35,19.0,981.0,0.0
+14.4,19.0,981.0,0.0
+14.45,19.0,981.0,0.0
+14.5,18.0,982.0,0.0
+14.55,15.0,985.0,0.0
+14.6,15.0,985.0,0.0
+14.65,15.0,985.0,0.0
+14.7,14.0,986.0,0.0
+14.75,14.0,986.0,0.0
+14.8,14.0,986.0,0.0
+14.85,14.0,986.0,0.0
+14.9,14.0,986.0,0.0
+14.95,14.0,986.0,0.0
+15.0,14.0,986.0,0.0
+15.05,14.0,986.0,0.0
+15.1,14.0,986.0,0.0
+15.15,14.0,986.0,0.0
+15.2,14.0,986.0,0.0
+15.25,14.0,986.0,0.0
+15.3,14.0,986.0,0.0
+15.35,14.0,986.0,0.0
+15.4,14.0,986.0,0.0
+15.45,14.0,986.0,0.0
+15.5,14.0,986.0,0.0
+15.55,14.0,986.0,0.0
+15.6,14.0,986.0,0.0
+15.65,14.0,986.0,0.0
+15.7,14.0,986.0,0.0
+15.75,14.0,986.0,0.0
+15.8,14.0,986.0,0.0
+15.85,14.0,986.0,0.0
+15.9,13.0,987.0,0.0
+15.95,13.0,987.0,0.0
+16.0,13.0,987.0,0.0
+16.05,13.0,987.0,0.0
+16.1,13.0,987.0,0.0
+16.15,13.0,987.0,0.0
+16.2,13.0,987.0,0.0
+16.25,13.0,987.0,0.0
+16.3,13.0,987.0,0.0
+16.35,13.0,987.0,0.0
+16.4,12.0,988.0,0.0
+16.45,12.0,988.0,0.0
+16.5,12.0,988.0,0.0
+16.55,12.0,988.0,0.0
+16.6,12.0,988.0,0.0
+16.65,12.0,988.0,0.0
+16.7,12.0,988.0,0.0
+16.75,12.0,988.0,0.0
+16.8,12.0,988.0,0.0
+16.85,11.0,989.0,0.0
+16.9,11.0,989.0,0.0
+16.95,11.0,989.0,0.0
+17.0,11.0,989.0,0.0
+17.05,10.0,990.0,0.0
+17.1,10.0,990.0,0.0
+17.15,10.0,990.0,0.0
+17.2,10.0,990.0,0.0
+17.25,9.0,991.0,0.0
+17.3,9.0,991.0,0.0
+17.35,9.0,991.0,0.0
+17.4,9.0,991.0,0.0
+17.45,8.0,992.0,0.0
+17.5,8.0,992.0,0.0
+17.55,8.0,992.0,0.0
+17.6,8.0,992.0,0.0
+17.65,8.0,992.0,0.0
+17.7,8.0,992.0,0.0
+17.75,8.0,992.0,0.0
+17.8,8.0,992.0,0.0
+17.85,8.0,992.0,0.0
+17.9,8.0,992.0,0.0
+17.95,8.0,992.0,0.0
+18.0,8.0,992.0,0.0
+18.05,8.0,992.0,0.0
+18.1,8.0,992.0,0.0
+18.15,7.0,993.0,0.0
+18.2,7.0,993.0,0.0
+18.25,7.0,993.0,0.0
+18.3,6.0,994.0,0.0
+18.35,6.0,994.0,0.0
+18.4,6.0,994.0,0.0
+18.45,5.0,995.0,0.0
+18.5,5.0,995.0,0.0
+18.55,5.0,995.0,0.0
+18.6,5.0,995.0,0.0
+18.65,5.0,995.0,0.0
+18.7,5.0,995.0,0.0
+18.75,4.0,996.0,0.0
+18.8,4.0,996.0,0.0
+18.85,4.0,996.0,0.0
+18.9,4.0,996.0,0.0
+18.95,4.0,996.0,0.0
+19.0,4.0,996.0,0.0
+19.05,4.0,996.0,0.0
+19.1,4.0,996.0,0.0
+19.15,4.0,996.0,0.0
+19.2,4.0,996.0,0.0
+19.25,4.0,996.0,0.0
+19.3,3.0,997.0,0.0
+19.35,3.0,997.0,0.0
+19.4,3.0,997.0,0.0
+19.45,2.0,998.0,0.0
+19.5,2.0,998.0,0.0
+19.55,2.0,998.0,0.0
+19.6,2.0,998.0,0.0
+19.65,2.0,998.0,0.0
+19.7,2.0,998.0,0.0
+19.75,2.0,998.0,0.0
+19.8,1.0,999.0,0.0
+19.85,0.0,1000.0,0.0
+19.9,0.0,1000.0,0.0
+19.95,0.0,1000.0,0.0
+20.0,0.0,1000.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv4.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv4.csv
new file mode 100644
index 0000000000..81e6ffc0e3
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv4.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,1.0,0.0,999.0
+0.2,2.0,0.0,998.0
+0.25,2.0,0.0,998.0
+0.3,3.0,0.0,997.0
+0.35,5.0,0.0,995.0
+0.4,8.0,0.0,992.0
+0.45,10.0,0.0,990.0
+0.5,11.0,0.0,989.0
+0.55,14.0,0.0,986.0
+0.6,20.0,0.0,980.0
+0.65,30.0,0.0,970.0
+0.7,41.0,0.0,959.0
+0.75,56.0,2.0,942.0
+0.8,73.0,2.0,925.0
+0.85,100.0,5.0,895.0
+0.9,136.0,6.0,858.0
+0.95,195.0,9.0,796.0
+1.0,252.0,12.0,736.0
+1.05,319.0,19.0,662.0
+1.1,408.0,24.0,568.0
+1.15,502.0,32.0,466.0
+1.2,602.0,37.0,361.0
+1.25,674.0,51.0,275.0
+1.3,736.0,58.0,206.0
+1.35,786.0,68.0,146.0
+1.4,804.0,86.0,110.0
+1.45,827.0,101.0,72.0
+1.5,831.0,115.0,54.0
+1.55,829.0,132.0,39.0
+1.6,828.0,147.0,25.0
+1.65,833.0,153.0,14.0
+1.7,825.0,166.0,9.0
+1.75,817.0,179.0,4.0
+1.8,811.0,187.0,2.0
+1.85,802.0,197.0,1.0
+1.9,790.0,209.0,1.0
+1.95,783.0,216.0,1.0
+2.0,774.0,225.0,1.0
+2.05,761.0,238.0,1.0
+2.1,753.0,246.0,1.0
+2.15,743.0,257.0,0.0
+2.2,734.0,266.0,0.0
+2.25,717.0,283.0,0.0
+2.3,711.0,289.0,0.0
+2.35,698.0,302.0,0.0
+2.4,689.0,311.0,0.0
+2.45,680.0,320.0,0.0
+2.5,667.0,333.0,0.0
+2.55,658.0,342.0,0.0
+2.6,646.0,354.0,0.0
+2.65,634.0,366.0,0.0
+2.7,620.0,380.0,0.0
+2.75,609.0,391.0,0.0
+2.8,599.0,401.0,0.0
+2.85,597.0,403.0,0.0
+2.9,588.0,412.0,0.0
+2.95,578.0,422.0,0.0
+3.0,568.0,432.0,0.0
+3.05,555.0,445.0,0.0
+3.1,545.0,455.0,0.0
+3.15,540.0,460.0,0.0
+3.2,531.0,469.0,0.0
+3.25,526.0,474.0,0.0
+3.3,522.0,478.0,0.0
+3.35,511.0,489.0,0.0
+3.4,503.0,497.0,0.0
+3.45,498.0,502.0,0.0
+3.5,493.0,507.0,0.0
+3.55,488.0,512.0,0.0
+3.6,480.0,520.0,0.0
+3.65,472.0,528.0,0.0
+3.7,465.0,535.0,0.0
+3.75,458.0,542.0,0.0
+3.8,448.0,552.0,0.0
+3.85,443.0,557.0,0.0
+3.9,434.0,566.0,0.0
+3.95,425.0,575.0,0.0
+4.0,420.0,580.0,0.0
+4.05,415.0,585.0,0.0
+4.1,406.0,594.0,0.0
+4.15,400.0,600.0,0.0
+4.2,396.0,604.0,0.0
+4.25,388.0,612.0,0.0
+4.3,384.0,616.0,0.0
+4.35,380.0,620.0,0.0
+4.4,373.0,627.0,0.0
+4.45,366.0,634.0,0.0
+4.5,360.0,640.0,0.0
+4.55,351.0,649.0,0.0
+4.6,350.0,650.0,0.0
+4.65,344.0,656.0,0.0
+4.7,341.0,659.0,0.0
+4.75,334.0,666.0,0.0
+4.8,328.0,672.0,0.0
+4.85,322.0,678.0,0.0
+4.9,318.0,682.0,0.0
+4.95,315.0,685.0,0.0
+5.0,307.0,693.0,0.0
+5.05,300.0,700.0,0.0
+5.1,294.0,706.0,0.0
+5.15,293.0,707.0,0.0
+5.2,289.0,711.0,0.0
+5.25,288.0,712.0,0.0
+5.3,284.0,716.0,0.0
+5.35,282.0,718.0,0.0
+5.4,277.0,723.0,0.0
+5.45,272.0,728.0,0.0
+5.5,270.0,730.0,0.0
+5.55,267.0,733.0,0.0
+5.6,262.0,738.0,0.0
+5.65,259.0,741.0,0.0
+5.7,258.0,742.0,0.0
+5.75,253.0,747.0,0.0
+5.8,249.0,751.0,0.0
+5.85,246.0,754.0,0.0
+5.9,241.0,759.0,0.0
+5.95,238.0,762.0,0.0
+6.0,234.0,766.0,0.0
+6.05,229.0,771.0,0.0
+6.1,228.0,772.0,0.0
+6.15,227.0,773.0,0.0
+6.2,224.0,776.0,0.0
+6.25,222.0,778.0,0.0
+6.3,217.0,783.0,0.0
+6.35,212.0,788.0,0.0
+6.4,210.0,790.0,0.0
+6.45,207.0,793.0,0.0
+6.5,205.0,795.0,0.0
+6.55,198.0,802.0,0.0
+6.6,197.0,803.0,0.0
+6.65,195.0,805.0,0.0
+6.7,193.0,807.0,0.0
+6.75,191.0,809.0,0.0
+6.8,189.0,811.0,0.0
+6.85,183.0,817.0,0.0
+6.9,183.0,817.0,0.0
+6.95,182.0,818.0,0.0
+7.0,182.0,818.0,0.0
+7.05,176.0,824.0,0.0
+7.1,175.0,825.0,0.0
+7.15,168.0,832.0,0.0
+7.2,166.0,834.0,0.0
+7.25,165.0,835.0,0.0
+7.3,164.0,836.0,0.0
+7.35,162.0,838.0,0.0
+7.4,159.0,841.0,0.0
+7.45,155.0,845.0,0.0
+7.5,154.0,846.0,0.0
+7.55,150.0,850.0,0.0
+7.6,147.0,853.0,0.0
+7.65,146.0,854.0,0.0
+7.7,143.0,857.0,0.0
+7.75,142.0,858.0,0.0
+7.8,142.0,858.0,0.0
+7.85,141.0,859.0,0.0
+7.9,140.0,860.0,0.0
+7.95,138.0,862.0,0.0
+8.0,138.0,862.0,0.0
+8.05,134.0,866.0,0.0
+8.1,130.0,870.0,0.0
+8.15,128.0,872.0,0.0
+8.2,124.0,876.0,0.0
+8.25,121.0,879.0,0.0
+8.3,119.0,881.0,0.0
+8.35,118.0,882.0,0.0
+8.4,117.0,883.0,0.0
+8.45,116.0,884.0,0.0
+8.5,114.0,886.0,0.0
+8.55,110.0,890.0,0.0
+8.6,110.0,890.0,0.0
+8.65,107.0,893.0,0.0
+8.7,104.0,896.0,0.0
+8.75,103.0,897.0,0.0
+8.8,100.0,900.0,0.0
+8.85,98.0,902.0,0.0
+8.9,98.0,902.0,0.0
+8.95,96.0,904.0,0.0
+9.0,96.0,904.0,0.0
+9.05,93.0,907.0,0.0
+9.1,92.0,908.0,0.0
+9.15,90.0,910.0,0.0
+9.2,90.0,910.0,0.0
+9.25,89.0,911.0,0.0
+9.3,88.0,912.0,0.0
+9.35,86.0,914.0,0.0
+9.4,85.0,915.0,0.0
+9.45,85.0,915.0,0.0
+9.5,84.0,916.0,0.0
+9.55,82.0,918.0,0.0
+9.6,79.0,921.0,0.0
+9.65,78.0,922.0,0.0
+9.7,77.0,923.0,0.0
+9.75,77.0,923.0,0.0
+9.8,75.0,925.0,0.0
+9.85,75.0,925.0,0.0
+9.9,75.0,925.0,0.0
+9.95,74.0,926.0,0.0
+10.0,70.0,930.0,0.0
+10.05,68.0,932.0,0.0
+10.1,66.0,934.0,0.0
+10.15,65.0,935.0,0.0
+10.2,63.0,937.0,0.0
+10.25,63.0,937.0,0.0
+10.3,60.0,940.0,0.0
+10.35,60.0,940.0,0.0
+10.4,60.0,940.0,0.0
+10.45,58.0,942.0,0.0
+10.5,58.0,942.0,0.0
+10.55,58.0,942.0,0.0
+10.6,56.0,944.0,0.0
+10.65,56.0,944.0,0.0
+10.7,56.0,944.0,0.0
+10.75,55.0,945.0,0.0
+10.8,55.0,945.0,0.0
+10.85,54.0,946.0,0.0
+10.9,52.0,948.0,0.0
+10.95,52.0,948.0,0.0
+11.0,52.0,948.0,0.0
+11.05,49.0,951.0,0.0
+11.1,49.0,951.0,0.0
+11.15,49.0,951.0,0.0
+11.2,48.0,952.0,0.0
+11.25,48.0,952.0,0.0
+11.3,47.0,953.0,0.0
+11.35,44.0,956.0,0.0
+11.4,44.0,956.0,0.0
+11.45,42.0,958.0,0.0
+11.5,40.0,960.0,0.0
+11.55,39.0,961.0,0.0
+11.6,39.0,961.0,0.0
+11.65,37.0,963.0,0.0
+11.7,36.0,964.0,0.0
+11.75,36.0,964.0,0.0
+11.8,36.0,964.0,0.0
+11.85,35.0,965.0,0.0
+11.9,34.0,966.0,0.0
+11.95,34.0,966.0,0.0
+12.0,34.0,966.0,0.0
+12.05,32.0,968.0,0.0
+12.1,32.0,968.0,0.0
+12.15,32.0,968.0,0.0
+12.2,32.0,968.0,0.0
+12.25,32.0,968.0,0.0
+12.3,31.0,969.0,0.0
+12.35,31.0,969.0,0.0
+12.4,31.0,969.0,0.0
+12.45,30.0,970.0,0.0
+12.5,29.0,971.0,0.0
+12.55,29.0,971.0,0.0
+12.6,29.0,971.0,0.0
+12.65,29.0,971.0,0.0
+12.7,29.0,971.0,0.0
+12.75,28.0,972.0,0.0
+12.8,28.0,972.0,0.0
+12.85,28.0,972.0,0.0
+12.9,28.0,972.0,0.0
+12.95,27.0,973.0,0.0
+13.0,27.0,973.0,0.0
+13.05,26.0,974.0,0.0
+13.1,25.0,975.0,0.0
+13.15,25.0,975.0,0.0
+13.2,25.0,975.0,0.0
+13.25,25.0,975.0,0.0
+13.3,25.0,975.0,0.0
+13.35,24.0,976.0,0.0
+13.4,23.0,977.0,0.0
+13.45,23.0,977.0,0.0
+13.5,23.0,977.0,0.0
+13.55,23.0,977.0,0.0
+13.6,23.0,977.0,0.0
+13.65,23.0,977.0,0.0
+13.7,23.0,977.0,0.0
+13.75,23.0,977.0,0.0
+13.8,23.0,977.0,0.0
+13.85,23.0,977.0,0.0
+13.9,22.0,978.0,0.0
+13.95,21.0,979.0,0.0
+14.0,20.0,980.0,0.0
+14.05,19.0,981.0,0.0
+14.1,19.0,981.0,0.0
+14.15,19.0,981.0,0.0
+14.2,19.0,981.0,0.0
+14.25,18.0,982.0,0.0
+14.3,18.0,982.0,0.0
+14.35,18.0,982.0,0.0
+14.4,18.0,982.0,0.0
+14.45,18.0,982.0,0.0
+14.5,18.0,982.0,0.0
+14.55,18.0,982.0,0.0
+14.6,18.0,982.0,0.0
+14.65,18.0,982.0,0.0
+14.7,17.0,983.0,0.0
+14.75,17.0,983.0,0.0
+14.8,17.0,983.0,0.0
+14.85,16.0,984.0,0.0
+14.9,16.0,984.0,0.0
+14.95,16.0,984.0,0.0
+15.0,16.0,984.0,0.0
+15.05,16.0,984.0,0.0
+15.1,15.0,985.0,0.0
+15.15,15.0,985.0,0.0
+15.2,15.0,985.0,0.0
+15.25,15.0,985.0,0.0
+15.3,15.0,985.0,0.0
+15.35,15.0,985.0,0.0
+15.4,14.0,986.0,0.0
+15.45,14.0,986.0,0.0
+15.5,14.0,986.0,0.0
+15.55,14.0,986.0,0.0
+15.6,13.0,987.0,0.0
+15.65,13.0,987.0,0.0
+15.7,13.0,987.0,0.0
+15.75,12.0,988.0,0.0
+15.8,12.0,988.0,0.0
+15.85,12.0,988.0,0.0
+15.9,12.0,988.0,0.0
+15.95,11.0,989.0,0.0
+16.0,9.0,991.0,0.0
+16.05,8.0,992.0,0.0
+16.1,8.0,992.0,0.0
+16.15,8.0,992.0,0.0
+16.2,8.0,992.0,0.0
+16.25,8.0,992.0,0.0
+16.3,8.0,992.0,0.0
+16.35,8.0,992.0,0.0
+16.4,8.0,992.0,0.0
+16.45,8.0,992.0,0.0
+16.5,7.0,993.0,0.0
+16.55,7.0,993.0,0.0
+16.6,6.0,994.0,0.0
+16.65,6.0,994.0,0.0
+16.7,6.0,994.0,0.0
+16.75,6.0,994.0,0.0
+16.8,6.0,994.0,0.0
+16.85,6.0,994.0,0.0
+16.9,6.0,994.0,0.0
+16.95,6.0,994.0,0.0
+17.0,5.0,995.0,0.0
+17.05,5.0,995.0,0.0
+17.1,5.0,995.0,0.0
+17.15,4.0,996.0,0.0
+17.2,3.0,997.0,0.0
+17.25,3.0,997.0,0.0
+17.3,3.0,997.0,0.0
+17.35,3.0,997.0,0.0
+17.4,3.0,997.0,0.0
+17.45,3.0,997.0,0.0
+17.5,3.0,997.0,0.0
+17.55,2.0,998.0,0.0
+17.6,2.0,998.0,0.0
+17.65,2.0,998.0,0.0
+17.7,2.0,998.0,0.0
+17.75,2.0,998.0,0.0
+17.8,2.0,998.0,0.0
+17.85,2.0,998.0,0.0
+17.9,2.0,998.0,0.0
+17.95,2.0,998.0,0.0
+18.0,2.0,998.0,0.0
+18.05,2.0,998.0,0.0
+18.1,2.0,998.0,0.0
+18.15,2.0,998.0,0.0
+18.2,2.0,998.0,0.0
+18.25,2.0,998.0,0.0
+18.3,2.0,998.0,0.0
+18.35,1.0,999.0,0.0
+18.4,1.0,999.0,0.0
+18.45,1.0,999.0,0.0
+18.5,1.0,999.0,0.0
+18.55,1.0,999.0,0.0
+18.6,1.0,999.0,0.0
+18.65,1.0,999.0,0.0
+18.7,1.0,999.0,0.0
+18.75,1.0,999.0,0.0
+18.8,1.0,999.0,0.0
+18.85,1.0,999.0,0.0
+18.9,1.0,999.0,0.0
+18.95,0.0,1000.0,0.0
+19.0,0.0,1000.0,0.0
+19.05,0.0,1000.0,0.0
+19.1,0.0,1000.0,0.0
+19.15,0.0,1000.0,0.0
+19.2,0.0,1000.0,0.0
+19.25,0.0,1000.0,0.0
+19.3,0.0,1000.0,0.0
+19.35,0.0,1000.0,0.0
+19.4,0.0,1000.0,0.0
+19.45,0.0,1000.0,0.0
+19.5,0.0,1000.0,0.0
+19.55,0.0,1000.0,0.0
+19.6,0.0,1000.0,0.0
+19.65,0.0,1000.0,0.0
+19.7,0.0,1000.0,0.0
+19.75,0.0,1000.0,0.0
+19.8,0.0,1000.0,0.0
+19.85,0.0,1000.0,0.0
+19.9,0.0,1000.0,0.0
+19.95,0.0,1000.0,0.0
+20.0,0.0,1000.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv5.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv5.csv
new file mode 100644
index 0000000000..9899343785
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv5.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,3.0,0.0,997.0
+0.1,4.0,0.0,996.0
+0.15,6.0,0.0,994.0
+0.2,9.0,0.0,991.0
+0.25,11.0,1.0,988.0
+0.3,19.0,1.0,980.0
+0.35,26.0,1.0,973.0
+0.4,34.0,1.0,965.0
+0.45,56.0,1.0,943.0
+0.5,90.0,1.0,909.0
+0.55,135.0,1.0,864.0
+0.6,194.0,6.0,800.0
+0.65,259.0,12.0,729.0
+0.7,337.0,17.0,646.0
+0.75,413.0,21.0,566.0
+0.8,500.0,34.0,466.0
+0.85,582.0,42.0,376.0
+0.9,649.0,54.0,297.0
+0.95,707.0,62.0,231.0
+1.0,755.0,73.0,172.0
+1.05,787.0,86.0,127.0
+1.1,812.0,95.0,93.0
+1.15,822.0,111.0,67.0
+1.2,830.0,129.0,41.0
+1.25,833.0,140.0,27.0
+1.3,834.0,146.0,20.0
+1.35,832.0,154.0,14.0
+1.4,823.0,166.0,11.0
+1.45,818.0,174.0,8.0
+1.5,807.0,187.0,6.0
+1.55,793.0,204.0,3.0
+1.6,782.0,216.0,2.0
+1.65,768.0,231.0,1.0
+1.7,758.0,242.0,0.0
+1.75,744.0,256.0,0.0
+1.8,736.0,264.0,0.0
+1.85,722.0,278.0,0.0
+1.9,712.0,288.0,0.0
+1.95,701.0,299.0,0.0
+2.0,689.0,311.0,0.0
+2.05,674.0,326.0,0.0
+2.1,665.0,335.0,0.0
+2.15,655.0,345.0,0.0
+2.2,644.0,356.0,0.0
+2.25,633.0,367.0,0.0
+2.3,622.0,378.0,0.0
+2.35,612.0,388.0,0.0
+2.4,598.0,402.0,0.0
+2.45,585.0,415.0,0.0
+2.5,575.0,425.0,0.0
+2.55,569.0,431.0,0.0
+2.6,561.0,439.0,0.0
+2.65,551.0,449.0,0.0
+2.7,541.0,459.0,0.0
+2.75,535.0,465.0,0.0
+2.8,529.0,471.0,0.0
+2.85,523.0,477.0,0.0
+2.9,516.0,484.0,0.0
+2.95,506.0,494.0,0.0
+3.0,502.0,498.0,0.0
+3.05,492.0,508.0,0.0
+3.1,484.0,516.0,0.0
+3.15,477.0,523.0,0.0
+3.2,472.0,528.0,0.0
+3.25,458.0,542.0,0.0
+3.3,449.0,551.0,0.0
+3.35,441.0,559.0,0.0
+3.4,435.0,565.0,0.0
+3.45,430.0,570.0,0.0
+3.5,423.0,577.0,0.0
+3.55,416.0,584.0,0.0
+3.6,410.0,590.0,0.0
+3.65,409.0,591.0,0.0
+3.7,403.0,597.0,0.0
+3.75,397.0,603.0,0.0
+3.8,389.0,611.0,0.0
+3.85,382.0,618.0,0.0
+3.9,379.0,621.0,0.0
+3.95,372.0,628.0,0.0
+4.0,365.0,635.0,0.0
+4.05,359.0,641.0,0.0
+4.1,358.0,642.0,0.0
+4.15,352.0,648.0,0.0
+4.2,350.0,650.0,0.0
+4.25,347.0,653.0,0.0
+4.3,341.0,659.0,0.0
+4.35,334.0,666.0,0.0
+4.4,330.0,670.0,0.0
+4.45,327.0,673.0,0.0
+4.5,322.0,678.0,0.0
+4.55,318.0,682.0,0.0
+4.6,314.0,686.0,0.0
+4.65,310.0,690.0,0.0
+4.7,306.0,694.0,0.0
+4.75,298.0,702.0,0.0
+4.8,294.0,706.0,0.0
+4.85,287.0,713.0,0.0
+4.9,283.0,717.0,0.0
+4.95,280.0,720.0,0.0
+5.0,275.0,725.0,0.0
+5.05,271.0,729.0,0.0
+5.1,269.0,731.0,0.0
+5.15,266.0,734.0,0.0
+5.2,265.0,735.0,0.0
+5.25,263.0,737.0,0.0
+5.3,261.0,739.0,0.0
+5.35,256.0,744.0,0.0
+5.4,254.0,746.0,0.0
+5.45,250.0,750.0,0.0
+5.5,247.0,753.0,0.0
+5.55,245.0,755.0,0.0
+5.6,244.0,756.0,0.0
+5.65,240.0,760.0,0.0
+5.7,235.0,765.0,0.0
+5.75,230.0,770.0,0.0
+5.8,229.0,771.0,0.0
+5.85,224.0,776.0,0.0
+5.9,222.0,778.0,0.0
+5.95,217.0,783.0,0.0
+6.0,216.0,784.0,0.0
+6.05,213.0,787.0,0.0
+6.1,211.0,789.0,0.0
+6.15,210.0,790.0,0.0
+6.2,209.0,791.0,0.0
+6.25,207.0,793.0,0.0
+6.3,203.0,797.0,0.0
+6.35,202.0,798.0,0.0
+6.4,201.0,799.0,0.0
+6.45,201.0,799.0,0.0
+6.5,199.0,801.0,0.0
+6.55,195.0,805.0,0.0
+6.6,192.0,808.0,0.0
+6.65,191.0,809.0,0.0
+6.7,184.0,816.0,0.0
+6.75,181.0,819.0,0.0
+6.8,178.0,822.0,0.0
+6.85,172.0,828.0,0.0
+6.9,166.0,834.0,0.0
+6.95,165.0,835.0,0.0
+7.0,164.0,836.0,0.0
+7.05,163.0,837.0,0.0
+7.1,159.0,841.0,0.0
+7.15,155.0,845.0,0.0
+7.2,150.0,850.0,0.0
+7.25,147.0,853.0,0.0
+7.3,144.0,856.0,0.0
+7.35,141.0,859.0,0.0
+7.4,139.0,861.0,0.0
+7.45,134.0,866.0,0.0
+7.5,132.0,868.0,0.0
+7.55,128.0,872.0,0.0
+7.6,127.0,873.0,0.0
+7.65,124.0,876.0,0.0
+7.7,120.0,880.0,0.0
+7.75,119.0,881.0,0.0
+7.8,118.0,882.0,0.0
+7.85,116.0,884.0,0.0
+7.9,116.0,884.0,0.0
+7.95,114.0,886.0,0.0
+8.0,113.0,887.0,0.0
+8.05,112.0,888.0,0.0
+8.1,112.0,888.0,0.0
+8.15,110.0,890.0,0.0
+8.2,105.0,895.0,0.0
+8.25,103.0,897.0,0.0
+8.3,99.0,901.0,0.0
+8.35,99.0,901.0,0.0
+8.4,98.0,902.0,0.0
+8.45,97.0,903.0,0.0
+8.5,96.0,904.0,0.0
+8.55,93.0,907.0,0.0
+8.6,90.0,910.0,0.0
+8.65,87.0,913.0,0.0
+8.7,85.0,915.0,0.0
+8.75,85.0,915.0,0.0
+8.8,85.0,915.0,0.0
+8.85,84.0,916.0,0.0
+8.9,84.0,916.0,0.0
+8.95,83.0,917.0,0.0
+9.0,83.0,917.0,0.0
+9.05,82.0,918.0,0.0
+9.1,82.0,918.0,0.0
+9.15,80.0,920.0,0.0
+9.2,79.0,921.0,0.0
+9.25,75.0,925.0,0.0
+9.3,74.0,926.0,0.0
+9.35,74.0,926.0,0.0
+9.4,74.0,926.0,0.0
+9.45,72.0,928.0,0.0
+9.5,72.0,928.0,0.0
+9.55,69.0,931.0,0.0
+9.6,68.0,932.0,0.0
+9.65,67.0,933.0,0.0
+9.7,66.0,934.0,0.0
+9.75,65.0,935.0,0.0
+9.8,63.0,937.0,0.0
+9.85,59.0,941.0,0.0
+9.9,56.0,944.0,0.0
+9.95,55.0,945.0,0.0
+10.0,55.0,945.0,0.0
+10.05,55.0,945.0,0.0
+10.1,55.0,945.0,0.0
+10.15,55.0,945.0,0.0
+10.2,54.0,946.0,0.0
+10.25,53.0,947.0,0.0
+10.3,53.0,947.0,0.0
+10.35,53.0,947.0,0.0
+10.4,52.0,948.0,0.0
+10.45,51.0,949.0,0.0
+10.5,50.0,950.0,0.0
+10.55,50.0,950.0,0.0
+10.6,48.0,952.0,0.0
+10.65,47.0,953.0,0.0
+10.7,46.0,954.0,0.0
+10.75,45.0,955.0,0.0
+10.8,43.0,957.0,0.0
+10.85,41.0,959.0,0.0
+10.9,39.0,961.0,0.0
+10.95,38.0,962.0,0.0
+11.0,37.0,963.0,0.0
+11.05,37.0,963.0,0.0
+11.1,37.0,963.0,0.0
+11.15,37.0,963.0,0.0
+11.2,35.0,965.0,0.0
+11.25,35.0,965.0,0.0
+11.3,34.0,966.0,0.0
+11.35,33.0,967.0,0.0
+11.4,33.0,967.0,0.0
+11.45,32.0,968.0,0.0
+11.5,32.0,968.0,0.0
+11.55,32.0,968.0,0.0
+11.6,32.0,968.0,0.0
+11.65,32.0,968.0,0.0
+11.7,32.0,968.0,0.0
+11.75,32.0,968.0,0.0
+11.8,32.0,968.0,0.0
+11.85,32.0,968.0,0.0
+11.9,32.0,968.0,0.0
+11.95,31.0,969.0,0.0
+12.0,31.0,969.0,0.0
+12.05,31.0,969.0,0.0
+12.1,31.0,969.0,0.0
+12.15,31.0,969.0,0.0
+12.2,30.0,970.0,0.0
+12.25,30.0,970.0,0.0
+12.3,29.0,971.0,0.0
+12.35,29.0,971.0,0.0
+12.4,28.0,972.0,0.0
+12.45,27.0,973.0,0.0
+12.5,27.0,973.0,0.0
+12.55,27.0,973.0,0.0
+12.6,27.0,973.0,0.0
+12.65,27.0,973.0,0.0
+12.7,26.0,974.0,0.0
+12.75,25.0,975.0,0.0
+12.8,25.0,975.0,0.0
+12.85,24.0,976.0,0.0
+12.9,24.0,976.0,0.0
+12.95,23.0,977.0,0.0
+13.0,22.0,978.0,0.0
+13.05,21.0,979.0,0.0
+13.1,21.0,979.0,0.0
+13.15,21.0,979.0,0.0
+13.2,21.0,979.0,0.0
+13.25,21.0,979.0,0.0
+13.3,21.0,979.0,0.0
+13.35,21.0,979.0,0.0
+13.4,20.0,980.0,0.0
+13.45,20.0,980.0,0.0
+13.5,20.0,980.0,0.0
+13.55,20.0,980.0,0.0
+13.6,20.0,980.0,0.0
+13.65,20.0,980.0,0.0
+13.7,20.0,980.0,0.0
+13.75,20.0,980.0,0.0
+13.8,20.0,980.0,0.0
+13.85,18.0,982.0,0.0
+13.9,18.0,982.0,0.0
+13.95,17.0,983.0,0.0
+14.0,17.0,983.0,0.0
+14.05,17.0,983.0,0.0
+14.1,17.0,983.0,0.0
+14.15,17.0,983.0,0.0
+14.2,17.0,983.0,0.0
+14.25,17.0,983.0,0.0
+14.3,17.0,983.0,0.0
+14.35,17.0,983.0,0.0
+14.4,17.0,983.0,0.0
+14.45,17.0,983.0,0.0
+14.5,17.0,983.0,0.0
+14.55,17.0,983.0,0.0
+14.6,17.0,983.0,0.0
+14.65,17.0,983.0,0.0
+14.7,16.0,984.0,0.0
+14.75,16.0,984.0,0.0
+14.8,15.0,985.0,0.0
+14.85,14.0,986.0,0.0
+14.9,13.0,987.0,0.0
+14.95,12.0,988.0,0.0
+15.0,12.0,988.0,0.0
+15.05,11.0,989.0,0.0
+15.1,11.0,989.0,0.0
+15.15,11.0,989.0,0.0
+15.2,11.0,989.0,0.0
+15.25,10.0,990.0,0.0
+15.3,10.0,990.0,0.0
+15.35,10.0,990.0,0.0
+15.4,10.0,990.0,0.0
+15.45,10.0,990.0,0.0
+15.5,10.0,990.0,0.0
+15.55,9.0,991.0,0.0
+15.6,9.0,991.0,0.0
+15.65,9.0,991.0,0.0
+15.7,9.0,991.0,0.0
+15.75,9.0,991.0,0.0
+15.8,8.0,992.0,0.0
+15.85,8.0,992.0,0.0
+15.9,8.0,992.0,0.0
+15.95,8.0,992.0,0.0
+16.0,8.0,992.0,0.0
+16.05,8.0,992.0,0.0
+16.1,8.0,992.0,0.0
+16.15,7.0,993.0,0.0
+16.2,7.0,993.0,0.0
+16.25,7.0,993.0,0.0
+16.3,7.0,993.0,0.0
+16.35,7.0,993.0,0.0
+16.4,7.0,993.0,0.0
+16.45,7.0,993.0,0.0
+16.5,7.0,993.0,0.0
+16.55,7.0,993.0,0.0
+16.6,6.0,994.0,0.0
+16.65,5.0,995.0,0.0
+16.7,5.0,995.0,0.0
+16.75,5.0,995.0,0.0
+16.8,5.0,995.0,0.0
+16.85,5.0,995.0,0.0
+16.9,5.0,995.0,0.0
+16.95,5.0,995.0,0.0
+17.0,5.0,995.0,0.0
+17.05,5.0,995.0,0.0
+17.1,5.0,995.0,0.0
+17.15,5.0,995.0,0.0
+17.2,5.0,995.0,0.0
+17.25,5.0,995.0,0.0
+17.3,5.0,995.0,0.0
+17.35,5.0,995.0,0.0
+17.4,4.0,996.0,0.0
+17.45,4.0,996.0,0.0
+17.5,3.0,997.0,0.0
+17.55,3.0,997.0,0.0
+17.6,3.0,997.0,0.0
+17.65,3.0,997.0,0.0
+17.7,3.0,997.0,0.0
+17.75,2.0,998.0,0.0
+17.8,2.0,998.0,0.0
+17.85,2.0,998.0,0.0
+17.9,2.0,998.0,0.0
+17.95,2.0,998.0,0.0
+18.0,1.0,999.0,0.0
+18.05,1.0,999.0,0.0
+18.1,1.0,999.0,0.0
+18.15,1.0,999.0,0.0
+18.2,1.0,999.0,0.0
+18.25,1.0,999.0,0.0
+18.3,1.0,999.0,0.0
+18.35,1.0,999.0,0.0
+18.4,1.0,999.0,0.0
+18.45,1.0,999.0,0.0
+18.5,1.0,999.0,0.0
+18.55,1.0,999.0,0.0
+18.6,1.0,999.0,0.0
+18.65,1.0,999.0,0.0
+18.7,1.0,999.0,0.0
+18.75,1.0,999.0,0.0
+18.8,1.0,999.0,0.0
+18.85,1.0,999.0,0.0
+18.9,1.0,999.0,0.0
+18.95,1.0,999.0,0.0
+19.0,1.0,999.0,0.0
+19.05,1.0,999.0,0.0
+19.1,1.0,999.0,0.0
+19.15,1.0,999.0,0.0
+19.2,1.0,999.0,0.0
+19.25,1.0,999.0,0.0
+19.3,1.0,999.0,0.0
+19.35,1.0,999.0,0.0
+19.4,1.0,999.0,0.0
+19.45,1.0,999.0,0.0
+19.5,1.0,999.0,0.0
+19.55,1.0,999.0,0.0
+19.6,1.0,999.0,0.0
+19.65,1.0,999.0,0.0
+19.7,1.0,999.0,0.0
+19.75,1.0,999.0,0.0
+19.8,1.0,999.0,0.0
+19.85,1.0,999.0,0.0
+19.9,1.0,999.0,0.0
+19.95,1.0,999.0,0.0
+20.0,1.0,999.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv6.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv6.csv
new file mode 100644
index 0000000000..ec47dd6663
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv6.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,3.0,0.0,997.0
+0.1,4.0,0.0,996.0
+0.15,5.0,0.0,995.0
+0.2,6.0,0.0,994.0
+0.25,10.0,0.0,990.0
+0.3,13.0,0.0,987.0
+0.35,18.0,0.0,982.0
+0.4,27.0,0.0,973.0
+0.45,41.0,0.0,959.0
+0.5,57.0,0.0,943.0
+0.55,101.0,1.0,898.0
+0.6,143.0,1.0,856.0
+0.65,197.0,2.0,801.0
+0.7,280.0,4.0,716.0
+0.75,361.0,8.0,631.0
+0.8,442.0,22.0,536.0
+0.85,529.0,27.0,444.0
+0.9,640.0,39.0,321.0
+0.95,713.0,46.0,241.0
+1.0,769.0,56.0,175.0
+1.05,807.0,68.0,125.0
+1.1,831.0,82.0,87.0
+1.15,840.0,103.0,57.0
+1.2,839.0,119.0,42.0
+1.25,844.0,126.0,30.0
+1.3,837.0,141.0,22.0
+1.35,829.0,152.0,19.0
+1.4,815.0,169.0,16.0
+1.45,808.0,181.0,11.0
+1.5,797.0,196.0,7.0
+1.55,783.0,211.0,6.0
+1.6,767.0,227.0,6.0
+1.65,753.0,243.0,4.0
+1.7,745.0,251.0,4.0
+1.75,736.0,262.0,2.0
+1.8,729.0,270.0,1.0
+1.85,715.0,284.0,1.0
+1.9,703.0,296.0,1.0
+1.95,690.0,310.0,0.0
+2.0,680.0,320.0,0.0
+2.05,670.0,330.0,0.0
+2.1,655.0,345.0,0.0
+2.15,641.0,359.0,0.0
+2.2,630.0,370.0,0.0
+2.25,622.0,378.0,0.0
+2.3,613.0,387.0,0.0
+2.35,607.0,393.0,0.0
+2.4,598.0,402.0,0.0
+2.45,589.0,411.0,0.0
+2.5,578.0,422.0,0.0
+2.55,569.0,431.0,0.0
+2.6,560.0,440.0,0.0
+2.65,551.0,449.0,0.0
+2.7,540.0,460.0,0.0
+2.75,536.0,464.0,0.0
+2.8,534.0,466.0,0.0
+2.85,529.0,471.0,0.0
+2.9,523.0,477.0,0.0
+2.95,514.0,486.0,0.0
+3.0,507.0,493.0,0.0
+3.05,502.0,498.0,0.0
+3.1,496.0,504.0,0.0
+3.15,489.0,511.0,0.0
+3.2,482.0,518.0,0.0
+3.25,476.0,524.0,0.0
+3.3,468.0,532.0,0.0
+3.35,463.0,537.0,0.0
+3.4,460.0,540.0,0.0
+3.45,452.0,548.0,0.0
+3.5,447.0,553.0,0.0
+3.55,441.0,559.0,0.0
+3.6,432.0,568.0,0.0
+3.65,424.0,576.0,0.0
+3.7,417.0,583.0,0.0
+3.75,409.0,591.0,0.0
+3.8,405.0,595.0,0.0
+3.85,396.0,604.0,0.0
+3.9,394.0,606.0,0.0
+3.95,386.0,614.0,0.0
+4.0,381.0,619.0,0.0
+4.05,374.0,626.0,0.0
+4.1,370.0,630.0,0.0
+4.15,363.0,637.0,0.0
+4.2,358.0,642.0,0.0
+4.25,354.0,646.0,0.0
+4.3,352.0,648.0,0.0
+4.35,349.0,651.0,0.0
+4.4,340.0,660.0,0.0
+4.45,338.0,662.0,0.0
+4.5,338.0,662.0,0.0
+4.55,334.0,666.0,0.0
+4.6,331.0,669.0,0.0
+4.65,329.0,671.0,0.0
+4.7,325.0,675.0,0.0
+4.75,322.0,678.0,0.0
+4.8,317.0,683.0,0.0
+4.85,314.0,686.0,0.0
+4.9,311.0,689.0,0.0
+4.95,305.0,695.0,0.0
+5.0,301.0,699.0,0.0
+5.05,294.0,706.0,0.0
+5.1,288.0,712.0,0.0
+5.15,284.0,716.0,0.0
+5.2,282.0,718.0,0.0
+5.25,277.0,723.0,0.0
+5.3,275.0,725.0,0.0
+5.35,274.0,726.0,0.0
+5.4,267.0,733.0,0.0
+5.45,265.0,735.0,0.0
+5.5,262.0,738.0,0.0
+5.55,259.0,741.0,0.0
+5.6,258.0,742.0,0.0
+5.65,255.0,745.0,0.0
+5.7,246.0,754.0,0.0
+5.75,240.0,760.0,0.0
+5.8,233.0,767.0,0.0
+5.85,231.0,769.0,0.0
+5.9,224.0,776.0,0.0
+5.95,220.0,780.0,0.0
+6.0,215.0,785.0,0.0
+6.05,211.0,789.0,0.0
+6.1,207.0,793.0,0.0
+6.15,204.0,796.0,0.0
+6.2,199.0,801.0,0.0
+6.25,193.0,807.0,0.0
+6.3,189.0,811.0,0.0
+6.35,188.0,812.0,0.0
+6.4,184.0,816.0,0.0
+6.45,183.0,817.0,0.0
+6.5,179.0,821.0,0.0
+6.55,174.0,826.0,0.0
+6.6,171.0,829.0,0.0
+6.65,170.0,830.0,0.0
+6.7,168.0,832.0,0.0
+6.75,164.0,836.0,0.0
+6.8,162.0,838.0,0.0
+6.85,160.0,840.0,0.0
+6.9,156.0,844.0,0.0
+6.95,154.0,846.0,0.0
+7.0,153.0,847.0,0.0
+7.05,151.0,849.0,0.0
+7.1,150.0,850.0,0.0
+7.15,147.0,853.0,0.0
+7.2,146.0,854.0,0.0
+7.25,145.0,855.0,0.0
+7.3,142.0,858.0,0.0
+7.35,139.0,861.0,0.0
+7.4,138.0,862.0,0.0
+7.45,134.0,866.0,0.0
+7.5,129.0,871.0,0.0
+7.55,128.0,872.0,0.0
+7.6,125.0,875.0,0.0
+7.65,124.0,876.0,0.0
+7.7,123.0,877.0,0.0
+7.75,122.0,878.0,0.0
+7.8,121.0,879.0,0.0
+7.85,118.0,882.0,0.0
+7.9,116.0,884.0,0.0
+7.95,116.0,884.0,0.0
+8.0,114.0,886.0,0.0
+8.05,112.0,888.0,0.0
+8.1,111.0,889.0,0.0
+8.15,110.0,890.0,0.0
+8.2,108.0,892.0,0.0
+8.25,106.0,894.0,0.0
+8.3,106.0,894.0,0.0
+8.35,104.0,896.0,0.0
+8.4,103.0,897.0,0.0
+8.45,102.0,898.0,0.0
+8.5,101.0,899.0,0.0
+8.55,99.0,901.0,0.0
+8.6,99.0,901.0,0.0
+8.65,97.0,903.0,0.0
+8.7,93.0,907.0,0.0
+8.75,90.0,910.0,0.0
+8.8,89.0,911.0,0.0
+8.85,88.0,912.0,0.0
+8.9,86.0,914.0,0.0
+8.95,85.0,915.0,0.0
+9.0,85.0,915.0,0.0
+9.05,83.0,917.0,0.0
+9.1,83.0,917.0,0.0
+9.15,82.0,918.0,0.0
+9.2,80.0,920.0,0.0
+9.25,78.0,922.0,0.0
+9.3,78.0,922.0,0.0
+9.35,77.0,923.0,0.0
+9.4,75.0,925.0,0.0
+9.45,73.0,927.0,0.0
+9.5,71.0,929.0,0.0
+9.55,69.0,931.0,0.0
+9.6,69.0,931.0,0.0
+9.65,69.0,931.0,0.0
+9.7,69.0,931.0,0.0
+9.75,69.0,931.0,0.0
+9.8,68.0,932.0,0.0
+9.85,67.0,933.0,0.0
+9.9,66.0,934.0,0.0
+9.95,66.0,934.0,0.0
+10.0,65.0,935.0,0.0
+10.05,65.0,935.0,0.0
+10.1,65.0,935.0,0.0
+10.15,64.0,936.0,0.0
+10.2,62.0,938.0,0.0
+10.25,61.0,939.0,0.0
+10.3,59.0,941.0,0.0
+10.35,58.0,942.0,0.0
+10.4,57.0,943.0,0.0
+10.45,57.0,943.0,0.0
+10.5,57.0,943.0,0.0
+10.55,57.0,943.0,0.0
+10.6,57.0,943.0,0.0
+10.65,54.0,946.0,0.0
+10.7,54.0,946.0,0.0
+10.75,54.0,946.0,0.0
+10.8,53.0,947.0,0.0
+10.85,51.0,949.0,0.0
+10.9,49.0,951.0,0.0
+10.95,48.0,952.0,0.0
+11.0,48.0,952.0,0.0
+11.05,47.0,953.0,0.0
+11.1,46.0,954.0,0.0
+11.15,46.0,954.0,0.0
+11.2,44.0,956.0,0.0
+11.25,44.0,956.0,0.0
+11.3,43.0,957.0,0.0
+11.35,43.0,957.0,0.0
+11.4,42.0,958.0,0.0
+11.45,41.0,959.0,0.0
+11.5,41.0,959.0,0.0
+11.55,41.0,959.0,0.0
+11.6,38.0,962.0,0.0
+11.65,38.0,962.0,0.0
+11.7,37.0,963.0,0.0
+11.75,35.0,965.0,0.0
+11.8,35.0,965.0,0.0
+11.85,33.0,967.0,0.0
+11.9,33.0,967.0,0.0
+11.95,32.0,968.0,0.0
+12.0,32.0,968.0,0.0
+12.05,32.0,968.0,0.0
+12.1,32.0,968.0,0.0
+12.15,32.0,968.0,0.0
+12.2,32.0,968.0,0.0
+12.25,32.0,968.0,0.0
+12.3,32.0,968.0,0.0
+12.35,32.0,968.0,0.0
+12.4,32.0,968.0,0.0
+12.45,32.0,968.0,0.0
+12.5,31.0,969.0,0.0
+12.55,30.0,970.0,0.0
+12.6,30.0,970.0,0.0
+12.65,30.0,970.0,0.0
+12.7,30.0,970.0,0.0
+12.75,29.0,971.0,0.0
+12.8,27.0,973.0,0.0
+12.85,27.0,973.0,0.0
+12.9,26.0,974.0,0.0
+12.95,26.0,974.0,0.0
+13.0,24.0,976.0,0.0
+13.05,24.0,976.0,0.0
+13.1,24.0,976.0,0.0
+13.15,24.0,976.0,0.0
+13.2,23.0,977.0,0.0
+13.25,23.0,977.0,0.0
+13.3,23.0,977.0,0.0
+13.35,23.0,977.0,0.0
+13.4,23.0,977.0,0.0
+13.45,21.0,979.0,0.0
+13.5,21.0,979.0,0.0
+13.55,21.0,979.0,0.0
+13.6,21.0,979.0,0.0
+13.65,21.0,979.0,0.0
+13.7,19.0,981.0,0.0
+13.75,19.0,981.0,0.0
+13.8,19.0,981.0,0.0
+13.85,19.0,981.0,0.0
+13.9,19.0,981.0,0.0
+13.95,19.0,981.0,0.0
+14.0,19.0,981.0,0.0
+14.05,19.0,981.0,0.0
+14.1,18.0,982.0,0.0
+14.15,17.0,983.0,0.0
+14.2,17.0,983.0,0.0
+14.25,17.0,983.0,0.0
+14.3,17.0,983.0,0.0
+14.35,16.0,984.0,0.0
+14.4,14.0,986.0,0.0
+14.45,14.0,986.0,0.0
+14.5,14.0,986.0,0.0
+14.55,14.0,986.0,0.0
+14.6,14.0,986.0,0.0
+14.65,14.0,986.0,0.0
+14.7,14.0,986.0,0.0
+14.75,14.0,986.0,0.0
+14.8,14.0,986.0,0.0
+14.85,14.0,986.0,0.0
+14.9,14.0,986.0,0.0
+14.95,13.0,987.0,0.0
+15.0,13.0,987.0,0.0
+15.05,13.0,987.0,0.0
+15.1,13.0,987.0,0.0
+15.15,13.0,987.0,0.0
+15.2,13.0,987.0,0.0
+15.25,13.0,987.0,0.0
+15.3,13.0,987.0,0.0
+15.35,13.0,987.0,0.0
+15.4,13.0,987.0,0.0
+15.45,13.0,987.0,0.0
+15.5,12.0,988.0,0.0
+15.55,12.0,988.0,0.0
+15.6,12.0,988.0,0.0
+15.65,11.0,989.0,0.0
+15.7,11.0,989.0,0.0
+15.75,11.0,989.0,0.0
+15.8,11.0,989.0,0.0
+15.85,11.0,989.0,0.0
+15.9,11.0,989.0,0.0
+15.95,11.0,989.0,0.0
+16.0,11.0,989.0,0.0
+16.05,11.0,989.0,0.0
+16.1,11.0,989.0,0.0
+16.15,11.0,989.0,0.0
+16.2,11.0,989.0,0.0
+16.25,11.0,989.0,0.0
+16.3,11.0,989.0,0.0
+16.35,11.0,989.0,0.0
+16.4,10.0,990.0,0.0
+16.45,10.0,990.0,0.0
+16.5,10.0,990.0,0.0
+16.55,9.0,991.0,0.0
+16.6,9.0,991.0,0.0
+16.65,8.0,992.0,0.0
+16.7,8.0,992.0,0.0
+16.75,8.0,992.0,0.0
+16.8,8.0,992.0,0.0
+16.85,7.0,993.0,0.0
+16.9,7.0,993.0,0.0
+16.95,7.0,993.0,0.0
+17.0,7.0,993.0,0.0
+17.05,7.0,993.0,0.0
+17.1,7.0,993.0,0.0
+17.15,7.0,993.0,0.0
+17.2,7.0,993.0,0.0
+17.25,7.0,993.0,0.0
+17.3,7.0,993.0,0.0
+17.35,7.0,993.0,0.0
+17.4,7.0,993.0,0.0
+17.45,7.0,993.0,0.0
+17.5,7.0,993.0,0.0
+17.55,7.0,993.0,0.0
+17.6,7.0,993.0,0.0
+17.65,7.0,993.0,0.0
+17.7,6.0,994.0,0.0
+17.75,6.0,994.0,0.0
+17.8,6.0,994.0,0.0
+17.85,5.0,995.0,0.0
+17.9,5.0,995.0,0.0
+17.95,5.0,995.0,0.0
+18.0,5.0,995.0,0.0
+18.05,5.0,995.0,0.0
+18.1,5.0,995.0,0.0
+18.15,5.0,995.0,0.0
+18.2,5.0,995.0,0.0
+18.25,5.0,995.0,0.0
+18.3,5.0,995.0,0.0
+18.35,5.0,995.0,0.0
+18.4,5.0,995.0,0.0
+18.45,5.0,995.0,0.0
+18.5,5.0,995.0,0.0
+18.55,5.0,995.0,0.0
+18.6,5.0,995.0,0.0
+18.65,5.0,995.0,0.0
+18.7,5.0,995.0,0.0
+18.75,5.0,995.0,0.0
+18.8,5.0,995.0,0.0
+18.85,5.0,995.0,0.0
+18.9,5.0,995.0,0.0
+18.95,5.0,995.0,0.0
+19.0,5.0,995.0,0.0
+19.05,5.0,995.0,0.0
+19.1,5.0,995.0,0.0
+19.15,5.0,995.0,0.0
+19.2,5.0,995.0,0.0
+19.25,5.0,995.0,0.0
+19.3,5.0,995.0,0.0
+19.35,5.0,995.0,0.0
+19.4,5.0,995.0,0.0
+19.45,5.0,995.0,0.0
+19.5,5.0,995.0,0.0
+19.55,4.0,996.0,0.0
+19.6,4.0,996.0,0.0
+19.65,4.0,996.0,0.0
+19.7,4.0,996.0,0.0
+19.75,3.0,997.0,0.0
+19.8,3.0,997.0,0.0
+19.85,3.0,997.0,0.0
+19.9,3.0,997.0,0.0
+19.95,3.0,997.0,0.0
+20.0,3.0,997.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv7.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv7.csv
new file mode 100644
index 0000000000..25ea03dd3f
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv7.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,2.0,0.0,998.0
+0.2,6.0,0.0,994.0
+0.25,11.0,0.0,989.0
+0.3,17.0,0.0,983.0
+0.35,23.0,1.0,976.0
+0.4,42.0,1.0,957.0
+0.45,59.0,3.0,938.0
+0.5,86.0,4.0,910.0
+0.55,108.0,4.0,888.0
+0.6,142.0,7.0,851.0
+0.65,181.0,8.0,811.0
+0.7,246.0,10.0,744.0
+0.75,323.0,12.0,665.0
+0.8,401.0,22.0,577.0
+0.85,465.0,24.0,511.0
+0.9,555.0,32.0,413.0
+0.95,632.0,39.0,329.0
+1.0,703.0,47.0,250.0
+1.05,756.0,59.0,185.0
+1.1,800.0,67.0,133.0
+1.15,823.0,80.0,97.0
+1.2,848.0,89.0,63.0
+1.25,853.0,101.0,46.0
+1.3,858.0,112.0,30.0
+1.35,850.0,128.0,22.0
+1.4,849.0,140.0,11.0
+1.45,842.0,151.0,7.0
+1.5,834.0,161.0,5.0
+1.55,825.0,172.0,3.0
+1.6,817.0,181.0,2.0
+1.65,805.0,194.0,1.0
+1.7,797.0,202.0,1.0
+1.75,786.0,213.0,1.0
+1.8,779.0,221.0,0.0
+1.85,769.0,231.0,0.0
+1.9,754.0,246.0,0.0
+1.95,740.0,260.0,0.0
+2.0,725.0,275.0,0.0
+2.05,712.0,288.0,0.0
+2.1,705.0,295.0,0.0
+2.15,697.0,303.0,0.0
+2.2,685.0,315.0,0.0
+2.25,677.0,323.0,0.0
+2.3,666.0,334.0,0.0
+2.35,649.0,351.0,0.0
+2.4,644.0,356.0,0.0
+2.45,635.0,365.0,0.0
+2.5,624.0,376.0,0.0
+2.55,605.0,395.0,0.0
+2.6,596.0,404.0,0.0
+2.65,590.0,410.0,0.0
+2.7,582.0,418.0,0.0
+2.75,572.0,428.0,0.0
+2.8,561.0,439.0,0.0
+2.85,553.0,447.0,0.0
+2.9,548.0,452.0,0.0
+2.95,539.0,461.0,0.0
+3.0,533.0,467.0,0.0
+3.05,528.0,472.0,0.0
+3.1,525.0,475.0,0.0
+3.15,518.0,482.0,0.0
+3.2,511.0,489.0,0.0
+3.25,504.0,496.0,0.0
+3.3,503.0,497.0,0.0
+3.35,495.0,505.0,0.0
+3.4,489.0,511.0,0.0
+3.45,481.0,519.0,0.0
+3.5,474.0,526.0,0.0
+3.55,468.0,532.0,0.0
+3.6,461.0,539.0,0.0
+3.65,453.0,547.0,0.0
+3.7,444.0,556.0,0.0
+3.75,432.0,568.0,0.0
+3.8,428.0,572.0,0.0
+3.85,424.0,576.0,0.0
+3.9,418.0,582.0,0.0
+3.95,408.0,592.0,0.0
+4.0,399.0,601.0,0.0
+4.05,395.0,605.0,0.0
+4.1,390.0,610.0,0.0
+4.15,385.0,615.0,0.0
+4.2,376.0,624.0,0.0
+4.25,372.0,628.0,0.0
+4.3,367.0,633.0,0.0
+4.35,358.0,642.0,0.0
+4.4,350.0,650.0,0.0
+4.45,344.0,656.0,0.0
+4.5,340.0,660.0,0.0
+4.55,337.0,663.0,0.0
+4.6,331.0,669.0,0.0
+4.65,326.0,674.0,0.0
+4.7,324.0,676.0,0.0
+4.75,320.0,680.0,0.0
+4.8,314.0,686.0,0.0
+4.85,311.0,689.0,0.0
+4.9,307.0,693.0,0.0
+4.95,303.0,697.0,0.0
+5.0,299.0,701.0,0.0
+5.05,297.0,703.0,0.0
+5.1,291.0,709.0,0.0
+5.15,287.0,713.0,0.0
+5.2,280.0,720.0,0.0
+5.25,276.0,724.0,0.0
+5.3,272.0,728.0,0.0
+5.35,269.0,731.0,0.0
+5.4,265.0,735.0,0.0
+5.45,259.0,741.0,0.0
+5.5,256.0,744.0,0.0
+5.55,253.0,747.0,0.0
+5.6,249.0,751.0,0.0
+5.65,245.0,755.0,0.0
+5.7,244.0,756.0,0.0
+5.75,243.0,757.0,0.0
+5.8,240.0,760.0,0.0
+5.85,236.0,764.0,0.0
+5.9,233.0,767.0,0.0
+5.95,233.0,767.0,0.0
+6.0,228.0,772.0,0.0
+6.05,225.0,775.0,0.0
+6.1,223.0,777.0,0.0
+6.15,218.0,782.0,0.0
+6.2,215.0,785.0,0.0
+6.25,214.0,786.0,0.0
+6.3,211.0,789.0,0.0
+6.35,208.0,792.0,0.0
+6.4,204.0,796.0,0.0
+6.45,204.0,796.0,0.0
+6.5,199.0,801.0,0.0
+6.55,197.0,803.0,0.0
+6.6,194.0,806.0,0.0
+6.65,190.0,810.0,0.0
+6.7,190.0,810.0,0.0
+6.75,190.0,810.0,0.0
+6.8,183.0,817.0,0.0
+6.85,182.0,818.0,0.0
+6.9,180.0,820.0,0.0
+6.95,178.0,822.0,0.0
+7.0,174.0,826.0,0.0
+7.05,167.0,833.0,0.0
+7.1,163.0,837.0,0.0
+7.15,157.0,843.0,0.0
+7.2,157.0,843.0,0.0
+7.25,154.0,846.0,0.0
+7.3,153.0,847.0,0.0
+7.35,151.0,849.0,0.0
+7.4,150.0,850.0,0.0
+7.45,149.0,851.0,0.0
+7.5,149.0,851.0,0.0
+7.55,148.0,852.0,0.0
+7.6,142.0,858.0,0.0
+7.65,141.0,859.0,0.0
+7.7,138.0,862.0,0.0
+7.75,137.0,863.0,0.0
+7.8,135.0,865.0,0.0
+7.85,133.0,867.0,0.0
+7.9,132.0,868.0,0.0
+7.95,131.0,869.0,0.0
+8.0,129.0,871.0,0.0
+8.05,126.0,874.0,0.0
+8.1,125.0,875.0,0.0
+8.15,121.0,879.0,0.0
+8.2,119.0,881.0,0.0
+8.25,117.0,883.0,0.0
+8.3,117.0,883.0,0.0
+8.35,116.0,884.0,0.0
+8.4,111.0,889.0,0.0
+8.45,107.0,893.0,0.0
+8.5,107.0,893.0,0.0
+8.55,106.0,894.0,0.0
+8.6,103.0,897.0,0.0
+8.65,102.0,898.0,0.0
+8.7,101.0,899.0,0.0
+8.75,101.0,899.0,0.0
+8.8,100.0,900.0,0.0
+8.85,100.0,900.0,0.0
+8.9,100.0,900.0,0.0
+8.95,99.0,901.0,0.0
+9.0,98.0,902.0,0.0
+9.05,97.0,903.0,0.0
+9.1,97.0,903.0,0.0
+9.15,97.0,903.0,0.0
+9.2,93.0,907.0,0.0
+9.25,92.0,908.0,0.0
+9.3,91.0,909.0,0.0
+9.35,90.0,910.0,0.0
+9.4,89.0,911.0,0.0
+9.45,87.0,913.0,0.0
+9.5,86.0,914.0,0.0
+9.55,84.0,916.0,0.0
+9.6,82.0,918.0,0.0
+9.65,81.0,919.0,0.0
+9.7,80.0,920.0,0.0
+9.75,80.0,920.0,0.0
+9.8,79.0,921.0,0.0
+9.85,76.0,924.0,0.0
+9.9,76.0,924.0,0.0
+9.95,75.0,925.0,0.0
+10.0,74.0,926.0,0.0
+10.05,73.0,927.0,0.0
+10.1,73.0,927.0,0.0
+10.15,69.0,931.0,0.0
+10.2,67.0,933.0,0.0
+10.25,65.0,935.0,0.0
+10.3,64.0,936.0,0.0
+10.35,62.0,938.0,0.0
+10.4,62.0,938.0,0.0
+10.45,61.0,939.0,0.0
+10.5,60.0,940.0,0.0
+10.55,60.0,940.0,0.0
+10.6,60.0,940.0,0.0
+10.65,60.0,940.0,0.0
+10.7,59.0,941.0,0.0
+10.75,58.0,942.0,0.0
+10.8,58.0,942.0,0.0
+10.85,57.0,943.0,0.0
+10.9,56.0,944.0,0.0
+10.95,54.0,946.0,0.0
+11.0,54.0,946.0,0.0
+11.05,52.0,948.0,0.0
+11.1,51.0,949.0,0.0
+11.15,51.0,949.0,0.0
+11.2,49.0,951.0,0.0
+11.25,48.0,952.0,0.0
+11.3,47.0,953.0,0.0
+11.35,46.0,954.0,0.0
+11.4,45.0,955.0,0.0
+11.45,44.0,956.0,0.0
+11.5,44.0,956.0,0.0
+11.55,44.0,956.0,0.0
+11.6,44.0,956.0,0.0
+11.65,44.0,956.0,0.0
+11.7,42.0,958.0,0.0
+11.75,42.0,958.0,0.0
+11.8,41.0,959.0,0.0
+11.85,40.0,960.0,0.0
+11.9,38.0,962.0,0.0
+11.95,38.0,962.0,0.0
+12.0,38.0,962.0,0.0
+12.05,37.0,963.0,0.0
+12.1,37.0,963.0,0.0
+12.15,37.0,963.0,0.0
+12.2,37.0,963.0,0.0
+12.25,36.0,964.0,0.0
+12.3,36.0,964.0,0.0
+12.35,36.0,964.0,0.0
+12.4,34.0,966.0,0.0
+12.45,33.0,967.0,0.0
+12.5,33.0,967.0,0.0
+12.55,33.0,967.0,0.0
+12.6,33.0,967.0,0.0
+12.65,33.0,967.0,0.0
+12.7,33.0,967.0,0.0
+12.75,33.0,967.0,0.0
+12.8,33.0,967.0,0.0
+12.85,33.0,967.0,0.0
+12.9,33.0,967.0,0.0
+12.95,32.0,968.0,0.0
+13.0,31.0,969.0,0.0
+13.05,31.0,969.0,0.0
+13.1,31.0,969.0,0.0
+13.15,30.0,970.0,0.0
+13.2,30.0,970.0,0.0
+13.25,29.0,971.0,0.0
+13.3,29.0,971.0,0.0
+13.35,29.0,971.0,0.0
+13.4,28.0,972.0,0.0
+13.45,28.0,972.0,0.0
+13.5,28.0,972.0,0.0
+13.55,28.0,972.0,0.0
+13.6,27.0,973.0,0.0
+13.65,27.0,973.0,0.0
+13.7,27.0,973.0,0.0
+13.75,27.0,973.0,0.0
+13.8,27.0,973.0,0.0
+13.85,26.0,974.0,0.0
+13.9,26.0,974.0,0.0
+13.95,25.0,975.0,0.0
+14.0,25.0,975.0,0.0
+14.05,24.0,976.0,0.0
+14.1,24.0,976.0,0.0
+14.15,24.0,976.0,0.0
+14.2,23.0,977.0,0.0
+14.25,23.0,977.0,0.0
+14.3,23.0,977.0,0.0
+14.35,23.0,977.0,0.0
+14.4,23.0,977.0,0.0
+14.45,23.0,977.0,0.0
+14.5,23.0,977.0,0.0
+14.55,23.0,977.0,0.0
+14.6,22.0,978.0,0.0
+14.65,21.0,979.0,0.0
+14.7,21.0,979.0,0.0
+14.75,21.0,979.0,0.0
+14.8,21.0,979.0,0.0
+14.85,21.0,979.0,0.0
+14.9,20.0,980.0,0.0
+14.95,20.0,980.0,0.0
+15.0,20.0,980.0,0.0
+15.05,20.0,980.0,0.0
+15.1,20.0,980.0,0.0
+15.15,19.0,981.0,0.0
+15.2,19.0,981.0,0.0
+15.25,19.0,981.0,0.0
+15.3,18.0,982.0,0.0
+15.35,18.0,982.0,0.0
+15.4,17.0,983.0,0.0
+15.45,17.0,983.0,0.0
+15.5,17.0,983.0,0.0
+15.55,16.0,984.0,0.0
+15.6,16.0,984.0,0.0
+15.65,16.0,984.0,0.0
+15.7,15.0,985.0,0.0
+15.75,15.0,985.0,0.0
+15.8,15.0,985.0,0.0
+15.85,15.0,985.0,0.0
+15.9,15.0,985.0,0.0
+15.95,15.0,985.0,0.0
+16.0,15.0,985.0,0.0
+16.05,14.0,986.0,0.0
+16.1,14.0,986.0,0.0
+16.15,14.0,986.0,0.0
+16.2,14.0,986.0,0.0
+16.25,14.0,986.0,0.0
+16.3,14.0,986.0,0.0
+16.35,14.0,986.0,0.0
+16.4,14.0,986.0,0.0
+16.45,14.0,986.0,0.0
+16.5,14.0,986.0,0.0
+16.55,14.0,986.0,0.0
+16.6,14.0,986.0,0.0
+16.65,14.0,986.0,0.0
+16.7,13.0,987.0,0.0
+16.75,12.0,988.0,0.0
+16.8,11.0,989.0,0.0
+16.85,11.0,989.0,0.0
+16.9,10.0,990.0,0.0
+16.95,10.0,990.0,0.0
+17.0,10.0,990.0,0.0
+17.05,10.0,990.0,0.0
+17.1,10.0,990.0,0.0
+17.15,10.0,990.0,0.0
+17.2,10.0,990.0,0.0
+17.25,10.0,990.0,0.0
+17.3,10.0,990.0,0.0
+17.35,9.0,991.0,0.0
+17.4,9.0,991.0,0.0
+17.45,8.0,992.0,0.0
+17.5,8.0,992.0,0.0
+17.55,8.0,992.0,0.0
+17.6,8.0,992.0,0.0
+17.65,8.0,992.0,0.0
+17.7,8.0,992.0,0.0
+17.75,8.0,992.0,0.0
+17.8,8.0,992.0,0.0
+17.85,8.0,992.0,0.0
+17.9,8.0,992.0,0.0
+17.95,7.0,993.0,0.0
+18.0,7.0,993.0,0.0
+18.05,7.0,993.0,0.0
+18.1,7.0,993.0,0.0
+18.15,7.0,993.0,0.0
+18.2,7.0,993.0,0.0
+18.25,7.0,993.0,0.0
+18.3,7.0,993.0,0.0
+18.35,7.0,993.0,0.0
+18.4,7.0,993.0,0.0
+18.45,6.0,994.0,0.0
+18.5,6.0,994.0,0.0
+18.55,6.0,994.0,0.0
+18.6,6.0,994.0,0.0
+18.65,6.0,994.0,0.0
+18.7,6.0,994.0,0.0
+18.75,6.0,994.0,0.0
+18.8,6.0,994.0,0.0
+18.85,6.0,994.0,0.0
+18.9,6.0,994.0,0.0
+18.95,6.0,994.0,0.0
+19.0,6.0,994.0,0.0
+19.05,6.0,994.0,0.0
+19.1,6.0,994.0,0.0
+19.15,6.0,994.0,0.0
+19.2,6.0,994.0,0.0
+19.25,6.0,994.0,0.0
+19.3,6.0,994.0,0.0
+19.35,6.0,994.0,0.0
+19.4,6.0,994.0,0.0
+19.45,6.0,994.0,0.0
+19.5,6.0,994.0,0.0
+19.55,6.0,994.0,0.0
+19.6,6.0,994.0,0.0
+19.65,6.0,994.0,0.0
+19.7,6.0,994.0,0.0
+19.75,6.0,994.0,0.0
+19.8,6.0,994.0,0.0
+19.85,6.0,994.0,0.0
+19.9,6.0,994.0,0.0
+19.95,6.0,994.0,0.0
+20.0,6.0,994.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv8.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv8.csv
new file mode 100644
index 0000000000..f4de2b94da
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv8.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,1.0,0.0,999.0
+0.1,1.0,0.0,999.0
+0.15,1.0,0.0,999.0
+0.2,1.0,0.0,999.0
+0.25,1.0,0.0,999.0
+0.3,2.0,0.0,998.0
+0.35,6.0,1.0,993.0
+0.4,6.0,1.0,993.0
+0.45,10.0,2.0,988.0
+0.5,19.0,2.0,979.0
+0.55,26.0,2.0,972.0
+0.6,33.0,4.0,963.0
+0.65,45.0,4.0,951.0
+0.7,58.0,5.0,937.0
+0.75,94.0,6.0,900.0
+0.8,135.0,8.0,857.0
+0.85,198.0,10.0,792.0
+0.9,286.0,13.0,701.0
+0.95,366.0,19.0,615.0
+1.0,459.0,24.0,517.0
+1.05,552.0,35.0,413.0
+1.1,643.0,45.0,312.0
+1.15,712.0,54.0,234.0
+1.2,759.0,66.0,175.0
+1.25,795.0,74.0,131.0
+1.3,822.0,86.0,92.0
+1.35,840.0,91.0,69.0
+1.4,841.0,108.0,51.0
+1.45,840.0,121.0,39.0
+1.5,841.0,135.0,24.0
+1.55,839.0,145.0,16.0
+1.6,836.0,154.0,10.0
+1.65,830.0,163.0,7.0
+1.7,819.0,177.0,4.0
+1.75,801.0,197.0,2.0
+1.8,793.0,206.0,1.0
+1.85,778.0,222.0,0.0
+1.9,770.0,230.0,0.0
+1.95,759.0,241.0,0.0
+2.0,746.0,254.0,0.0
+2.05,741.0,259.0,0.0
+2.1,733.0,267.0,0.0
+2.15,723.0,277.0,0.0
+2.2,714.0,286.0,0.0
+2.25,707.0,293.0,0.0
+2.3,695.0,305.0,0.0
+2.35,683.0,317.0,0.0
+2.4,673.0,327.0,0.0
+2.45,670.0,330.0,0.0
+2.5,663.0,337.0,0.0
+2.55,654.0,346.0,0.0
+2.6,648.0,352.0,0.0
+2.65,641.0,359.0,0.0
+2.7,634.0,366.0,0.0
+2.75,625.0,375.0,0.0
+2.8,609.0,391.0,0.0
+2.85,596.0,404.0,0.0
+2.9,586.0,414.0,0.0
+2.95,578.0,422.0,0.0
+3.0,571.0,429.0,0.0
+3.05,566.0,434.0,0.0
+3.1,558.0,442.0,0.0
+3.15,548.0,452.0,0.0
+3.2,539.0,461.0,0.0
+3.25,535.0,465.0,0.0
+3.3,529.0,471.0,0.0
+3.35,518.0,482.0,0.0
+3.4,512.0,488.0,0.0
+3.45,510.0,490.0,0.0
+3.5,503.0,497.0,0.0
+3.55,497.0,503.0,0.0
+3.6,487.0,513.0,0.0
+3.65,482.0,518.0,0.0
+3.7,476.0,524.0,0.0
+3.75,471.0,529.0,0.0
+3.8,462.0,538.0,0.0
+3.85,456.0,544.0,0.0
+3.9,448.0,552.0,0.0
+3.95,439.0,561.0,0.0
+4.0,433.0,567.0,0.0
+4.05,430.0,570.0,0.0
+4.1,421.0,579.0,0.0
+4.15,418.0,582.0,0.0
+4.2,406.0,594.0,0.0
+4.25,400.0,600.0,0.0
+4.3,394.0,606.0,0.0
+4.35,392.0,608.0,0.0
+4.4,386.0,614.0,0.0
+4.45,379.0,621.0,0.0
+4.5,372.0,628.0,0.0
+4.55,369.0,631.0,0.0
+4.6,363.0,637.0,0.0
+4.65,358.0,642.0,0.0
+4.7,354.0,646.0,0.0
+4.75,344.0,656.0,0.0
+4.8,338.0,662.0,0.0
+4.85,332.0,668.0,0.0
+4.9,327.0,673.0,0.0
+4.95,323.0,677.0,0.0
+5.0,321.0,679.0,0.0
+5.05,317.0,683.0,0.0
+5.1,314.0,686.0,0.0
+5.15,310.0,690.0,0.0
+5.2,303.0,697.0,0.0
+5.25,299.0,701.0,0.0
+5.3,294.0,706.0,0.0
+5.35,289.0,711.0,0.0
+5.4,281.0,719.0,0.0
+5.45,274.0,726.0,0.0
+5.5,267.0,733.0,0.0
+5.55,261.0,739.0,0.0
+5.6,253.0,747.0,0.0
+5.65,248.0,752.0,0.0
+5.7,245.0,755.0,0.0
+5.75,242.0,758.0,0.0
+5.8,238.0,762.0,0.0
+5.85,230.0,770.0,0.0
+5.9,229.0,771.0,0.0
+5.95,226.0,774.0,0.0
+6.0,222.0,778.0,0.0
+6.05,221.0,779.0,0.0
+6.1,217.0,783.0,0.0
+6.15,213.0,787.0,0.0
+6.2,212.0,788.0,0.0
+6.25,210.0,790.0,0.0
+6.3,209.0,791.0,0.0
+6.35,208.0,792.0,0.0
+6.4,202.0,798.0,0.0
+6.45,198.0,802.0,0.0
+6.5,196.0,804.0,0.0
+6.55,193.0,807.0,0.0
+6.6,190.0,810.0,0.0
+6.65,185.0,815.0,0.0
+6.7,182.0,818.0,0.0
+6.75,179.0,821.0,0.0
+6.8,179.0,821.0,0.0
+6.85,177.0,823.0,0.0
+6.9,176.0,824.0,0.0
+6.95,175.0,825.0,0.0
+7.0,173.0,827.0,0.0
+7.05,169.0,831.0,0.0
+7.1,168.0,832.0,0.0
+7.15,167.0,833.0,0.0
+7.2,165.0,835.0,0.0
+7.25,164.0,836.0,0.0
+7.3,162.0,838.0,0.0
+7.35,160.0,840.0,0.0
+7.4,159.0,841.0,0.0
+7.45,157.0,843.0,0.0
+7.5,157.0,843.0,0.0
+7.55,153.0,847.0,0.0
+7.6,149.0,851.0,0.0
+7.65,146.0,854.0,0.0
+7.7,144.0,856.0,0.0
+7.75,140.0,860.0,0.0
+7.8,140.0,860.0,0.0
+7.85,138.0,862.0,0.0
+7.9,137.0,863.0,0.0
+7.95,137.0,863.0,0.0
+8.0,134.0,866.0,0.0
+8.05,131.0,869.0,0.0
+8.1,131.0,869.0,0.0
+8.15,127.0,873.0,0.0
+8.2,127.0,873.0,0.0
+8.25,123.0,877.0,0.0
+8.3,122.0,878.0,0.0
+8.35,122.0,878.0,0.0
+8.4,122.0,878.0,0.0
+8.45,120.0,880.0,0.0
+8.5,119.0,881.0,0.0
+8.55,119.0,881.0,0.0
+8.6,118.0,882.0,0.0
+8.65,113.0,887.0,0.0
+8.7,111.0,889.0,0.0
+8.75,107.0,893.0,0.0
+8.8,106.0,894.0,0.0
+8.85,103.0,897.0,0.0
+8.9,102.0,898.0,0.0
+8.95,101.0,899.0,0.0
+9.0,99.0,901.0,0.0
+9.05,98.0,902.0,0.0
+9.1,98.0,902.0,0.0
+9.15,97.0,903.0,0.0
+9.2,97.0,903.0,0.0
+9.25,95.0,905.0,0.0
+9.3,93.0,907.0,0.0
+9.35,91.0,909.0,0.0
+9.4,91.0,909.0,0.0
+9.45,90.0,910.0,0.0
+9.5,89.0,911.0,0.0
+9.55,89.0,911.0,0.0
+9.6,87.0,913.0,0.0
+9.65,85.0,915.0,0.0
+9.7,83.0,917.0,0.0
+9.75,83.0,917.0,0.0
+9.8,82.0,918.0,0.0
+9.85,80.0,920.0,0.0
+9.9,80.0,920.0,0.0
+9.95,77.0,923.0,0.0
+10.0,77.0,923.0,0.0
+10.05,76.0,924.0,0.0
+10.1,72.0,928.0,0.0
+10.15,69.0,931.0,0.0
+10.2,69.0,931.0,0.0
+10.25,68.0,932.0,0.0
+10.3,67.0,933.0,0.0
+10.35,67.0,933.0,0.0
+10.4,67.0,933.0,0.0
+10.45,65.0,935.0,0.0
+10.5,64.0,936.0,0.0
+10.55,64.0,936.0,0.0
+10.6,64.0,936.0,0.0
+10.65,64.0,936.0,0.0
+10.7,61.0,939.0,0.0
+10.75,61.0,939.0,0.0
+10.8,61.0,939.0,0.0
+10.85,60.0,940.0,0.0
+10.9,60.0,940.0,0.0
+10.95,60.0,940.0,0.0
+11.0,59.0,941.0,0.0
+11.05,56.0,944.0,0.0
+11.1,53.0,947.0,0.0
+11.15,53.0,947.0,0.0
+11.2,53.0,947.0,0.0
+11.25,53.0,947.0,0.0
+11.3,53.0,947.0,0.0
+11.35,52.0,948.0,0.0
+11.4,52.0,948.0,0.0
+11.45,50.0,950.0,0.0
+11.5,50.0,950.0,0.0
+11.55,50.0,950.0,0.0
+11.6,50.0,950.0,0.0
+11.65,49.0,951.0,0.0
+11.7,48.0,952.0,0.0
+11.75,47.0,953.0,0.0
+11.8,46.0,954.0,0.0
+11.85,46.0,954.0,0.0
+11.9,45.0,955.0,0.0
+11.95,44.0,956.0,0.0
+12.0,43.0,957.0,0.0
+12.05,43.0,957.0,0.0
+12.1,43.0,957.0,0.0
+12.15,40.0,960.0,0.0
+12.2,40.0,960.0,0.0
+12.25,40.0,960.0,0.0
+12.3,40.0,960.0,0.0
+12.35,38.0,962.0,0.0
+12.4,38.0,962.0,0.0
+12.45,37.0,963.0,0.0
+12.5,35.0,965.0,0.0
+12.55,35.0,965.0,0.0
+12.6,35.0,965.0,0.0
+12.65,35.0,965.0,0.0
+12.7,34.0,966.0,0.0
+12.75,33.0,967.0,0.0
+12.8,32.0,968.0,0.0
+12.85,32.0,968.0,0.0
+12.9,32.0,968.0,0.0
+12.95,32.0,968.0,0.0
+13.0,32.0,968.0,0.0
+13.05,32.0,968.0,0.0
+13.1,31.0,969.0,0.0
+13.15,31.0,969.0,0.0
+13.2,31.0,969.0,0.0
+13.25,31.0,969.0,0.0
+13.3,29.0,971.0,0.0
+13.35,29.0,971.0,0.0
+13.4,28.0,972.0,0.0
+13.45,27.0,973.0,0.0
+13.5,27.0,973.0,0.0
+13.55,25.0,975.0,0.0
+13.6,24.0,976.0,0.0
+13.65,22.0,978.0,0.0
+13.7,22.0,978.0,0.0
+13.75,22.0,978.0,0.0
+13.8,22.0,978.0,0.0
+13.85,21.0,979.0,0.0
+13.9,21.0,979.0,0.0
+13.95,21.0,979.0,0.0
+14.0,21.0,979.0,0.0
+14.05,21.0,979.0,0.0
+14.1,21.0,979.0,0.0
+14.15,21.0,979.0,0.0
+14.2,20.0,980.0,0.0
+14.25,19.0,981.0,0.0
+14.3,19.0,981.0,0.0
+14.35,18.0,982.0,0.0
+14.4,18.0,982.0,0.0
+14.45,18.0,982.0,0.0
+14.5,18.0,982.0,0.0
+14.55,18.0,982.0,0.0
+14.6,18.0,982.0,0.0
+14.65,18.0,982.0,0.0
+14.7,18.0,982.0,0.0
+14.75,18.0,982.0,0.0
+14.8,18.0,982.0,0.0
+14.85,18.0,982.0,0.0
+14.9,17.0,983.0,0.0
+14.95,16.0,984.0,0.0
+15.0,16.0,984.0,0.0
+15.05,14.0,986.0,0.0
+15.1,13.0,987.0,0.0
+15.15,13.0,987.0,0.0
+15.2,13.0,987.0,0.0
+15.25,13.0,987.0,0.0
+15.3,13.0,987.0,0.0
+15.35,13.0,987.0,0.0
+15.4,13.0,987.0,0.0
+15.45,13.0,987.0,0.0
+15.5,13.0,987.0,0.0
+15.55,13.0,987.0,0.0
+15.6,13.0,987.0,0.0
+15.65,13.0,987.0,0.0
+15.7,13.0,987.0,0.0
+15.75,13.0,987.0,0.0
+15.8,13.0,987.0,0.0
+15.85,13.0,987.0,0.0
+15.9,13.0,987.0,0.0
+15.95,13.0,987.0,0.0
+16.0,12.0,988.0,0.0
+16.05,12.0,988.0,0.0
+16.1,10.0,990.0,0.0
+16.15,10.0,990.0,0.0
+16.2,10.0,990.0,0.0
+16.25,10.0,990.0,0.0
+16.3,9.0,991.0,0.0
+16.35,9.0,991.0,0.0
+16.4,9.0,991.0,0.0
+16.45,8.0,992.0,0.0
+16.5,8.0,992.0,0.0
+16.55,8.0,992.0,0.0
+16.6,8.0,992.0,0.0
+16.65,8.0,992.0,0.0
+16.7,8.0,992.0,0.0
+16.75,8.0,992.0,0.0
+16.8,8.0,992.0,0.0
+16.85,8.0,992.0,0.0
+16.9,8.0,992.0,0.0
+16.95,8.0,992.0,0.0
+17.0,8.0,992.0,0.0
+17.05,8.0,992.0,0.0
+17.1,8.0,992.0,0.0
+17.15,7.0,993.0,0.0
+17.2,7.0,993.0,0.0
+17.25,7.0,993.0,0.0
+17.3,7.0,993.0,0.0
+17.35,7.0,993.0,0.0
+17.4,7.0,993.0,0.0
+17.45,7.0,993.0,0.0
+17.5,6.0,994.0,0.0
+17.55,6.0,994.0,0.0
+17.6,6.0,994.0,0.0
+17.65,6.0,994.0,0.0
+17.7,6.0,994.0,0.0
+17.75,6.0,994.0,0.0
+17.8,6.0,994.0,0.0
+17.85,6.0,994.0,0.0
+17.9,5.0,995.0,0.0
+17.95,5.0,995.0,0.0
+18.0,5.0,995.0,0.0
+18.05,5.0,995.0,0.0
+18.1,5.0,995.0,0.0
+18.15,4.0,996.0,0.0
+18.2,4.0,996.0,0.0
+18.25,4.0,996.0,0.0
+18.3,4.0,996.0,0.0
+18.35,4.0,996.0,0.0
+18.4,4.0,996.0,0.0
+18.45,4.0,996.0,0.0
+18.5,4.0,996.0,0.0
+18.55,4.0,996.0,0.0
+18.6,4.0,996.0,0.0
+18.65,4.0,996.0,0.0
+18.7,4.0,996.0,0.0
+18.75,4.0,996.0,0.0
+18.8,4.0,996.0,0.0
+18.85,4.0,996.0,0.0
+18.9,4.0,996.0,0.0
+18.95,4.0,996.0,0.0
+19.0,4.0,996.0,0.0
+19.05,4.0,996.0,0.0
+19.1,4.0,996.0,0.0
+19.15,4.0,996.0,0.0
+19.2,4.0,996.0,0.0
+19.25,4.0,996.0,0.0
+19.3,4.0,996.0,0.0
+19.35,4.0,996.0,0.0
+19.4,4.0,996.0,0.0
+19.45,4.0,996.0,0.0
+19.5,4.0,996.0,0.0
+19.55,4.0,996.0,0.0
+19.6,4.0,996.0,0.0
+19.65,4.0,996.0,0.0
+19.7,4.0,996.0,0.0
+19.75,4.0,996.0,0.0
+19.8,4.0,996.0,0.0
+19.85,4.0,996.0,0.0
+19.9,4.0,996.0,0.0
+19.95,4.0,996.0,0.0
+20.0,4.0,996.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv9.csv b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv9.csv
new file mode 100644
index 0000000000..fb2f89c9e8
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/results/results_csv_08272020_162750/results_csv9.csv
@@ -0,0 +1,402 @@
+time,Infected,Recovered,Susceptible
+0.0,1.0,0.0,999.0
+0.05,2.0,0.0,998.0
+0.1,2.0,0.0,998.0
+0.15,4.0,0.0,996.0
+0.2,6.0,0.0,994.0
+0.25,7.0,0.0,993.0
+0.3,10.0,0.0,990.0
+0.35,18.0,0.0,982.0
+0.4,28.0,0.0,972.0
+0.45,44.0,0.0,956.0
+0.5,63.0,0.0,937.0
+0.55,77.0,2.0,921.0
+0.6,113.0,2.0,885.0
+0.65,163.0,5.0,832.0
+0.7,212.0,11.0,777.0
+0.75,305.0,14.0,681.0
+0.8,392.0,17.0,591.0
+0.85,486.0,22.0,492.0
+0.9,552.0,42.0,406.0
+0.95,618.0,54.0,328.0
+1.0,684.0,67.0,249.0
+1.05,740.0,79.0,181.0
+1.1,786.0,87.0,127.0
+1.15,805.0,101.0,94.0
+1.2,809.0,119.0,72.0
+1.25,813.0,131.0,56.0
+1.3,818.0,139.0,43.0
+1.35,818.0,153.0,29.0
+1.4,811.0,167.0,22.0
+1.45,801.0,180.0,19.0
+1.5,791.0,196.0,13.0
+1.55,779.0,210.0,11.0
+1.6,767.0,223.0,10.0
+1.65,764.0,228.0,8.0
+1.7,751.0,243.0,6.0
+1.75,746.0,251.0,3.0
+1.8,738.0,259.0,3.0
+1.85,732.0,266.0,2.0
+1.9,726.0,272.0,2.0
+1.95,717.0,282.0,1.0
+2.0,708.0,292.0,0.0
+2.05,698.0,302.0,0.0
+2.1,689.0,311.0,0.0
+2.15,684.0,316.0,0.0
+2.2,676.0,324.0,0.0
+2.25,666.0,334.0,0.0
+2.3,655.0,345.0,0.0
+2.35,648.0,352.0,0.0
+2.4,637.0,363.0,0.0
+2.45,620.0,380.0,0.0
+2.5,613.0,387.0,0.0
+2.55,607.0,393.0,0.0
+2.6,601.0,399.0,0.0
+2.65,590.0,410.0,0.0
+2.7,582.0,418.0,0.0
+2.75,574.0,426.0,0.0
+2.8,565.0,435.0,0.0
+2.85,552.0,448.0,0.0
+2.9,540.0,460.0,0.0
+2.95,529.0,471.0,0.0
+3.0,525.0,475.0,0.0
+3.05,517.0,483.0,0.0
+3.1,510.0,490.0,0.0
+3.15,501.0,499.0,0.0
+3.2,496.0,504.0,0.0
+3.25,493.0,507.0,0.0
+3.3,488.0,512.0,0.0
+3.35,480.0,520.0,0.0
+3.4,474.0,526.0,0.0
+3.45,469.0,531.0,0.0
+3.5,462.0,538.0,0.0
+3.55,452.0,548.0,0.0
+3.6,445.0,555.0,0.0
+3.65,436.0,564.0,0.0
+3.7,427.0,573.0,0.0
+3.75,419.0,581.0,0.0
+3.8,409.0,591.0,0.0
+3.85,399.0,601.0,0.0
+3.9,394.0,606.0,0.0
+3.95,390.0,610.0,0.0
+4.0,389.0,611.0,0.0
+4.05,377.0,623.0,0.0
+4.1,375.0,625.0,0.0
+4.15,372.0,628.0,0.0
+4.2,360.0,640.0,0.0
+4.25,358.0,642.0,0.0
+4.3,351.0,649.0,0.0
+4.35,348.0,652.0,0.0
+4.4,344.0,656.0,0.0
+4.45,339.0,661.0,0.0
+4.5,334.0,666.0,0.0
+4.55,328.0,672.0,0.0
+4.6,325.0,675.0,0.0
+4.65,315.0,685.0,0.0
+4.7,313.0,687.0,0.0
+4.75,311.0,689.0,0.0
+4.8,308.0,692.0,0.0
+4.85,306.0,694.0,0.0
+4.9,300.0,700.0,0.0
+4.95,296.0,704.0,0.0
+5.0,293.0,707.0,0.0
+5.05,289.0,711.0,0.0
+5.1,285.0,715.0,0.0
+5.15,283.0,717.0,0.0
+5.2,280.0,720.0,0.0
+5.25,274.0,726.0,0.0
+5.3,271.0,729.0,0.0
+5.35,269.0,731.0,0.0
+5.4,262.0,738.0,0.0
+5.45,257.0,743.0,0.0
+5.5,255.0,745.0,0.0
+5.55,252.0,748.0,0.0
+5.6,250.0,750.0,0.0
+5.65,249.0,751.0,0.0
+5.7,246.0,754.0,0.0
+5.75,244.0,756.0,0.0
+5.8,241.0,759.0,0.0
+5.85,234.0,766.0,0.0
+5.9,231.0,769.0,0.0
+5.95,224.0,776.0,0.0
+6.0,219.0,781.0,0.0
+6.05,212.0,788.0,0.0
+6.1,208.0,792.0,0.0
+6.15,203.0,797.0,0.0
+6.2,200.0,800.0,0.0
+6.25,193.0,807.0,0.0
+6.3,190.0,810.0,0.0
+6.35,187.0,813.0,0.0
+6.4,184.0,816.0,0.0
+6.45,181.0,819.0,0.0
+6.5,180.0,820.0,0.0
+6.55,178.0,822.0,0.0
+6.6,176.0,824.0,0.0
+6.65,172.0,828.0,0.0
+6.7,170.0,830.0,0.0
+6.75,166.0,834.0,0.0
+6.8,162.0,838.0,0.0
+6.85,159.0,841.0,0.0
+6.9,157.0,843.0,0.0
+6.95,156.0,844.0,0.0
+7.0,152.0,848.0,0.0
+7.05,148.0,852.0,0.0
+7.1,145.0,855.0,0.0
+7.15,140.0,860.0,0.0
+7.2,136.0,864.0,0.0
+7.25,132.0,868.0,0.0
+7.3,131.0,869.0,0.0
+7.35,129.0,871.0,0.0
+7.4,126.0,874.0,0.0
+7.45,123.0,877.0,0.0
+7.5,121.0,879.0,0.0
+7.55,120.0,880.0,0.0
+7.6,119.0,881.0,0.0
+7.65,116.0,884.0,0.0
+7.7,114.0,886.0,0.0
+7.75,113.0,887.0,0.0
+7.8,112.0,888.0,0.0
+7.85,109.0,891.0,0.0
+7.9,107.0,893.0,0.0
+7.95,105.0,895.0,0.0
+8.0,105.0,895.0,0.0
+8.05,104.0,896.0,0.0
+8.1,104.0,896.0,0.0
+8.15,103.0,897.0,0.0
+8.2,103.0,897.0,0.0
+8.25,100.0,900.0,0.0
+8.3,99.0,901.0,0.0
+8.35,95.0,905.0,0.0
+8.4,93.0,907.0,0.0
+8.45,92.0,908.0,0.0
+8.5,91.0,909.0,0.0
+8.55,89.0,911.0,0.0
+8.6,88.0,912.0,0.0
+8.65,87.0,913.0,0.0
+8.7,87.0,913.0,0.0
+8.75,87.0,913.0,0.0
+8.8,85.0,915.0,0.0
+8.85,85.0,915.0,0.0
+8.9,81.0,919.0,0.0
+8.95,79.0,921.0,0.0
+9.0,77.0,923.0,0.0
+9.05,77.0,923.0,0.0
+9.1,76.0,924.0,0.0
+9.15,76.0,924.0,0.0
+9.2,76.0,924.0,0.0
+9.25,76.0,924.0,0.0
+9.3,75.0,925.0,0.0
+9.35,75.0,925.0,0.0
+9.4,75.0,925.0,0.0
+9.45,70.0,930.0,0.0
+9.5,69.0,931.0,0.0
+9.55,68.0,932.0,0.0
+9.6,68.0,932.0,0.0
+9.65,67.0,933.0,0.0
+9.7,67.0,933.0,0.0
+9.75,67.0,933.0,0.0
+9.8,66.0,934.0,0.0
+9.85,65.0,935.0,0.0
+9.9,65.0,935.0,0.0
+9.95,65.0,935.0,0.0
+10.0,65.0,935.0,0.0
+10.05,65.0,935.0,0.0
+10.1,64.0,936.0,0.0
+10.15,63.0,937.0,0.0
+10.2,62.0,938.0,0.0
+10.25,62.0,938.0,0.0
+10.3,62.0,938.0,0.0
+10.35,61.0,939.0,0.0
+10.4,60.0,940.0,0.0
+10.45,60.0,940.0,0.0
+10.5,59.0,941.0,0.0
+10.55,57.0,943.0,0.0
+10.6,54.0,946.0,0.0
+10.65,53.0,947.0,0.0
+10.7,52.0,948.0,0.0
+10.75,51.0,949.0,0.0
+10.8,50.0,950.0,0.0
+10.85,50.0,950.0,0.0
+10.9,49.0,951.0,0.0
+10.95,47.0,953.0,0.0
+11.0,47.0,953.0,0.0
+11.05,47.0,953.0,0.0
+11.1,46.0,954.0,0.0
+11.15,46.0,954.0,0.0
+11.2,46.0,954.0,0.0
+11.25,46.0,954.0,0.0
+11.3,46.0,954.0,0.0
+11.35,44.0,956.0,0.0
+11.4,43.0,957.0,0.0
+11.45,43.0,957.0,0.0
+11.5,43.0,957.0,0.0
+11.55,43.0,957.0,0.0
+11.6,42.0,958.0,0.0
+11.65,42.0,958.0,0.0
+11.7,40.0,960.0,0.0
+11.75,40.0,960.0,0.0
+11.8,39.0,961.0,0.0
+11.85,38.0,962.0,0.0
+11.9,37.0,963.0,0.0
+11.95,37.0,963.0,0.0
+12.0,36.0,964.0,0.0
+12.05,35.0,965.0,0.0
+12.1,35.0,965.0,0.0
+12.15,35.0,965.0,0.0
+12.2,35.0,965.0,0.0
+12.25,35.0,965.0,0.0
+12.3,35.0,965.0,0.0
+12.35,35.0,965.0,0.0
+12.4,35.0,965.0,0.0
+12.45,35.0,965.0,0.0
+12.5,35.0,965.0,0.0
+12.55,35.0,965.0,0.0
+12.6,35.0,965.0,0.0
+12.65,34.0,966.0,0.0
+12.7,32.0,968.0,0.0
+12.75,32.0,968.0,0.0
+12.8,30.0,970.0,0.0
+12.85,29.0,971.0,0.0
+12.9,29.0,971.0,0.0
+12.95,29.0,971.0,0.0
+13.0,28.0,972.0,0.0
+13.05,28.0,972.0,0.0
+13.1,27.0,973.0,0.0
+13.15,27.0,973.0,0.0
+13.2,27.0,973.0,0.0
+13.25,26.0,974.0,0.0
+13.3,25.0,975.0,0.0
+13.35,25.0,975.0,0.0
+13.4,24.0,976.0,0.0
+13.45,24.0,976.0,0.0
+13.5,23.0,977.0,0.0
+13.55,23.0,977.0,0.0
+13.6,23.0,977.0,0.0
+13.65,23.0,977.0,0.0
+13.7,23.0,977.0,0.0
+13.75,22.0,978.0,0.0
+13.8,21.0,979.0,0.0
+13.85,21.0,979.0,0.0
+13.9,21.0,979.0,0.0
+13.95,21.0,979.0,0.0
+14.0,21.0,979.0,0.0
+14.05,21.0,979.0,0.0
+14.1,21.0,979.0,0.0
+14.15,21.0,979.0,0.0
+14.2,20.0,980.0,0.0
+14.25,20.0,980.0,0.0
+14.3,20.0,980.0,0.0
+14.35,20.0,980.0,0.0
+14.4,20.0,980.0,0.0
+14.45,20.0,980.0,0.0
+14.5,20.0,980.0,0.0
+14.55,19.0,981.0,0.0
+14.6,19.0,981.0,0.0
+14.65,19.0,981.0,0.0
+14.7,18.0,982.0,0.0
+14.75,18.0,982.0,0.0
+14.8,17.0,983.0,0.0
+14.85,16.0,984.0,0.0
+14.9,16.0,984.0,0.0
+14.95,16.0,984.0,0.0
+15.0,16.0,984.0,0.0
+15.05,16.0,984.0,0.0
+15.1,16.0,984.0,0.0
+15.15,16.0,984.0,0.0
+15.2,16.0,984.0,0.0
+15.25,16.0,984.0,0.0
+15.3,16.0,984.0,0.0
+15.35,14.0,986.0,0.0
+15.4,14.0,986.0,0.0
+15.45,13.0,987.0,0.0
+15.5,13.0,987.0,0.0
+15.55,13.0,987.0,0.0
+15.6,11.0,989.0,0.0
+15.65,11.0,989.0,0.0
+15.7,11.0,989.0,0.0
+15.75,10.0,990.0,0.0
+15.8,10.0,990.0,0.0
+15.85,10.0,990.0,0.0
+15.9,10.0,990.0,0.0
+15.95,10.0,990.0,0.0
+16.0,10.0,990.0,0.0
+16.05,10.0,990.0,0.0
+16.1,10.0,990.0,0.0
+16.15,10.0,990.0,0.0
+16.2,10.0,990.0,0.0
+16.25,10.0,990.0,0.0
+16.3,10.0,990.0,0.0
+16.35,10.0,990.0,0.0
+16.4,10.0,990.0,0.0
+16.45,10.0,990.0,0.0
+16.5,9.0,991.0,0.0
+16.55,8.0,992.0,0.0
+16.6,8.0,992.0,0.0
+16.65,8.0,992.0,0.0
+16.7,8.0,992.0,0.0
+16.75,8.0,992.0,0.0
+16.8,8.0,992.0,0.0
+16.85,8.0,992.0,0.0
+16.9,8.0,992.0,0.0
+16.95,8.0,992.0,0.0
+17.0,8.0,992.0,0.0
+17.05,8.0,992.0,0.0
+17.1,7.0,993.0,0.0
+17.15,7.0,993.0,0.0
+17.2,7.0,993.0,0.0
+17.25,7.0,993.0,0.0
+17.3,7.0,993.0,0.0
+17.35,7.0,993.0,0.0
+17.4,7.0,993.0,0.0
+17.45,7.0,993.0,0.0
+17.5,7.0,993.0,0.0
+17.55,7.0,993.0,0.0
+17.6,6.0,994.0,0.0
+17.65,6.0,994.0,0.0
+17.7,6.0,994.0,0.0
+17.75,6.0,994.0,0.0
+17.8,6.0,994.0,0.0
+17.85,6.0,994.0,0.0
+17.9,6.0,994.0,0.0
+17.95,6.0,994.0,0.0
+18.0,6.0,994.0,0.0
+18.05,6.0,994.0,0.0
+18.1,5.0,995.0,0.0
+18.15,5.0,995.0,0.0
+18.2,5.0,995.0,0.0
+18.25,5.0,995.0,0.0
+18.3,5.0,995.0,0.0
+18.35,5.0,995.0,0.0
+18.4,5.0,995.0,0.0
+18.45,5.0,995.0,0.0
+18.5,5.0,995.0,0.0
+18.55,5.0,995.0,0.0
+18.6,5.0,995.0,0.0
+18.65,5.0,995.0,0.0
+18.7,5.0,995.0,0.0
+18.75,5.0,995.0,0.0
+18.8,5.0,995.0,0.0
+18.85,5.0,995.0,0.0
+18.9,5.0,995.0,0.0
+18.95,5.0,995.0,0.0
+19.0,5.0,995.0,0.0
+19.05,5.0,995.0,0.0
+19.1,4.0,996.0,0.0
+19.15,4.0,996.0,0.0
+19.2,4.0,996.0,0.0
+19.25,4.0,996.0,0.0
+19.3,4.0,996.0,0.0
+19.35,3.0,997.0,0.0
+19.4,3.0,997.0,0.0
+19.45,3.0,997.0,0.0
+19.5,3.0,997.0,0.0
+19.55,3.0,997.0,0.0
+19.6,3.0,997.0,0.0
+19.65,3.0,997.0,0.0
+19.7,3.0,997.0,0.0
+19.75,3.0,997.0,0.0
+19.8,3.0,997.0,0.0
+19.85,3.0,997.0,0.0
+19.9,3.0,997.0,0.0
+19.95,3.0,997.0,0.0
+20.0,3.0,997.0,0.0
diff --git a/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/settings.json b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/settings.json
new file mode 100644
index 0000000000..962a83f97e
--- /dev/null
+++ b/public_models/Example SIR Epidemic Project.proj/WorkflowGroup1.wkgp/Example Ensemble Simulation Workflow Complete.wkfl/settings.json
@@ -0,0 +1 @@
+{"simulationSettings": {"isAutomatic": false, "relativeTol": 0.001, "absoluteTol": 1e-06, "realizations": 20, "algorithm": "SSA", "seed": -1, "tauTol": 0.03}, "parameterSweepSettings": {"is1D": true, "p1Min": 0, "p1Max": 0, "p1Steps": 11, "p2Min": 0, "p2Max": 0, "p2Steps": 11, "parameterOne": {}, "parameterTwo": {}, "speciesOfInterest": {}}, "resultsSettings": {"mapper": "final", "reducer": "avg", "outputs": [{"key": "stddev", "stamp": 200727162833, "species": ["Susceptible", "Infected", "Recovered"]}, {"key": "stddevran", "stamp": 200727162836, "species": ["Susceptible", "Infected", "Recovered"]}]}}
\ No newline at end of file
diff --git a/public_models/Lotkavolterra_Oscillator/Lotkavolterra_Oscillator.ipynb b/public_models/Lotkavolterra_Oscillator/Lotkavolterra_Oscillator.ipynb
index d8045bf248..3b16d1335d 100644
--- a/public_models/Lotkavolterra_Oscillator/Lotkavolterra_Oscillator.ipynb
+++ b/public_models/Lotkavolterra_Oscillator/Lotkavolterra_Oscillator.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
"# To run a simulation using the SSA Solver simply omit the solver argument from model.run().\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Michaelis_Menten/Michaelis_Menten.ipynb b/public_models/Michaelis_Menten/Michaelis_Menten.ipynb
index 420089680e..95b4129908 100644
--- a/public_models/Michaelis_Menten/Michaelis_Menten.ipynb
+++ b/public_models/Michaelis_Menten/Michaelis_Menten.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Opioid/Opioid.ipynb b/public_models/Opioid/Opioid.ipynb
index af6fc46c38..1b573b07a8 100644
--- a/public_models/Opioid/Opioid.ipynb
+++ b/public_models/Opioid/Opioid.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Oregonator/Oregonator.ipynb b/public_models/Oregonator/Oregonator.ipynb
index 1b80682318..6f60bb7a57 100644
--- a/public_models/Oregonator/Oregonator.ipynb
+++ b/public_models/Oregonator/Oregonator.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
"# To run a simulation using the SSA Solver simply omit the solver argument from model.run().\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Schlogl/Schlogl.ipynb b/public_models/Schlogl/Schlogl.ipynb
index 7e619eaea8..9a3a7cfaba 100644
--- a/public_models/Schlogl/Schlogl.ipynb
+++ b/public_models/Schlogl/Schlogl.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Toggle_Switch/Toggle_Switch.ipynb b/public_models/Toggle_Switch/Toggle_Switch.ipynb
index 74db844951..2847f5fafb 100644
--- a/public_models/Toggle_Switch/Toggle_Switch.ipynb
+++ b/public_models/Toggle_Switch/Toggle_Switch.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Toggle_Switch/Toggle_Switch1dParamSweep.ipynb b/public_models/Toggle_Switch/Toggle_Switch1dParamSweep.ipynb
index 5c13a12f8b..6f1b54084e 100644
--- a/public_models/Toggle_Switch/Toggle_Switch1dParamSweep.ipynb
+++ b/public_models/Toggle_Switch/Toggle_Switch1dParamSweep.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
"# To run a simulation using the SSA Solver simply omit the solver argument from model.run().\n",
- "from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Toggle_Switch/Toggle_Switch2dParamSweep.ipynb b/public_models/Toggle_Switch/Toggle_Switch2dParamSweep.ipynb
index a6746f9099..5e615baa7e 100644
--- a/public_models/Toggle_Switch/Toggle_Switch2dParamSweep.ipynb
+++ b/public_models/Toggle_Switch/Toggle_Switch2dParamSweep.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
"# To run a simulation using the SSA Solver simply omit the solver argument from model.run().\n",
- "from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Toggle_Switch/Toggle_SwitchSciopeMI.ipynb b/public_models/Toggle_Switch/Toggle_SwitchSciopeMI.ipynb
index 181bea065a..5cc2a7e54e 100644
--- a/public_models/Toggle_Switch/Toggle_SwitchSciopeMI.ipynb
+++ b/public_models/Toggle_Switch/Toggle_SwitchSciopeMI.ipynb
@@ -1 +1 @@
-{"cells":[{"cell_type":"markdown","metadata":{},"source":["# Toggle_Switch"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["import numpy as np\n","import gillespy2\n","from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n","from gillespy2.core.events import EventAssignment, EventTrigger, Event\n","from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n","# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n","# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n","# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n","# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["class Toggle_Switch(Model):\n"," def __init__(self, parameter_values=None):\n"," Model.__init__(self, name=\"Toggle_Switch\")\n"," self.volume = 1\n","\n"," # Parameters\n"," self.add_parameter(Parameter(name=\"alpha1\", expression=10))\n"," self.add_parameter(Parameter(name=\"alpha2\", expression=10))\n"," self.add_parameter(Parameter(name=\"beta\", expression=2))\n"," self.add_parameter(Parameter(name=\"gamma\", expression=2))\n"," self.add_parameter(Parameter(name=\"mu\", expression=1))\n","\n"," # Species\n"," self.add_species(Species(name=\"A\", initial_value=2, mode=\"discrete\"))\n"," self.add_species(Species(name=\"B\", initial_value=2, mode=\"discrete\"))\n","\n"," # Reactions\n"," self.add_reaction(Reaction(name=\"cu\", reactants={}, products={'A': 1}, propensity_function=\"alpha1/(1+pow(B, beta))\"))\n"," self.add_reaction(Reaction(name=\"cv\", reactants={}, products={'B': 1}, propensity_function=\"alpha2/(1+pow(A, gamma))\"))\n"," self.add_reaction(Reaction(name=\"du\", reactants={'A': 1}, products={}, rate=self.listOfParameters[\"mu\"]))\n"," self.add_reaction(Reaction(name=\"dv\", reactants={'B': 1}, products={}, rate=self.listOfParameters[\"mu\"]))\n","\n"," # Timespan\n"," self.timespan(np.linspace(0, 250, 251))"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["model = Toggle_Switch()"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["solver = SSACSolver(model=model)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["def configure_simulation():\n","# the minimum number of trajectoies needs to be at least 30\n"," kwargs = {\n"," \"solver\":solver,\n"," \"show_labels\":False,\n"," \"number_of_trajectories\":100,\n"," \"seed\":None,\n"," # \"tau_tol\":0.03,\n"," # \"integrator_options\":{'rtol': 0.001, 'atol': 1e-06}\n"," }\n"," return kwargs"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["from tsfresh.feature_extraction.settings import MinimalFCParameters\n","from sciope.utilities.priors import uniform_prior\n","from sciope.utilities.summarystats import auto_tsfresh\n","from sciope.utilities.distancefunctions import naive_squared\n","from sciope.inference.abc_inference import ABC\n","from sklearn.metrics import mean_absolute_error\n","from dask.distributed import Client"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["kwargs = configure_simulation()\n","\n","# Define simulator function\n","def set_model_parameters(params, model):\n"," \"\"\"para,s - array, need to have the same order as\n"," model.listOfParameters \"\"\"\n"," for e, (pname, p) in enumerate(model.listOfParameters.items()):\n"," model.get_parameter(pname).set_expression(params[e])\n"," return model\n","\n","# Here we use the GillesPy2 Solver\n","def simulator(params, model):\n"," model_update = set_model_parameters(params, model)\n"," \n"," res = model_update.run(**kwargs)\n"," tot_res = np.asarray([x.T for x in res]) # reshape to (N, S, T)\n"," tot_res = tot_res[:,1:, :] # should not contain timepoints\n","\n"," return tot_res\n","\n","# Wrapper, simulator function to abc should should only take one argument (the parameter point)\n","def simulator2(x):\n"," return simulator(x, model=model)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# Set up the prior\n","default_param = np.array(list(model.listOfParameters.items()))[:,1] # take default from mode 1 as reference\n","\n","bound = []\n","for exp in default_param:\n"," bound.append(float(exp.expression))\n","\n","# Set the bounds\n","bound = np.array(bound)\n","dmin = bound * 0.1\n","dmax = bound * 2.0\n","\n","# Here we use uniform prior\n","uni_prior = uniform_prior.UniformPrior(dmin, dmax)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# generate some fixed(observed) data based on default parameters of the model\n","fixed_data = model.run(**kwargs)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# Reshape the data to (n_points,n_species,n_timepoints) and remove timepoints array\n","fixed_data = np.asarray([x.T for x in fixed_data])\n","fixed_data = fixed_data[:,1:, :]"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# Function to generate summary statistics\n","summ_func = auto_tsfresh.SummariesTSFRESH()\n","\n","# Distance\n","ns = naive_squared.NaiveSquaredDistance()\n","\n","# Start abc instance\n","abc = ABC(fixed_data, sim=simulator2, prior_function=uni_prior, summaries_function=summ_func.compute, distance_function=ns)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["c = Client()\n","c"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# First compute the fixed(observed) mean\n","abc.compute_fixed_mean(chunk_size=2)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["res = abc.infer(num_samples=100, batch_size=10, chunk_size=2)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["mae_inference = mean_absolute_error(bound, abc.results[\"inferred_parameters\"])"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.6"}},"nbformat":4,"nbformat_minor":4}
\ No newline at end of file
+{"cells":[{"cell_type":"markdown","metadata":{},"source":["# Toggle_Switch"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["import numpy as np\n","import gillespy2\n","from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n","from gillespy2 import EventAssignment, EventTrigger, Event\n","from gillespy2 import SSACSolver\n","# from gillespy2 import VariableSSACSolver\n","# from gillespy2 import BasicTauLeapingSolver\n","# from gillespy2 import BasicTauHybridSolver\n","# from gillespy2 import BasicODESolver"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["class Toggle_Switch(Model):\n"," def __init__(self, parameter_values=None):\n"," Model.__init__(self, name=\"Toggle_Switch\")\n"," self.volume = 1\n","\n"," # Parameters\n"," self.add_parameter(Parameter(name=\"alpha1\", expression=10))\n"," self.add_parameter(Parameter(name=\"alpha2\", expression=10))\n"," self.add_parameter(Parameter(name=\"beta\", expression=2))\n"," self.add_parameter(Parameter(name=\"gamma\", expression=2))\n"," self.add_parameter(Parameter(name=\"mu\", expression=1))\n","\n"," # Species\n"," self.add_species(Species(name=\"A\", initial_value=2, mode=\"discrete\"))\n"," self.add_species(Species(name=\"B\", initial_value=2, mode=\"discrete\"))\n","\n"," # Reactions\n"," self.add_reaction(Reaction(name=\"cu\", reactants={}, products={'A': 1}, propensity_function=\"alpha1/(1+pow(B, beta))\"))\n"," self.add_reaction(Reaction(name=\"cv\", reactants={}, products={'B': 1}, propensity_function=\"alpha2/(1+pow(A, gamma))\"))\n"," self.add_reaction(Reaction(name=\"du\", reactants={'A': 1}, products={}, rate=self.listOfParameters[\"mu\"]))\n"," self.add_reaction(Reaction(name=\"dv\", reactants={'B': 1}, products={}, rate=self.listOfParameters[\"mu\"]))\n","\n"," # Timespan\n"," self.timespan(np.linspace(0, 250, 251))"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["model = Toggle_Switch()"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["solver = SSACSolver(model=model)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["def configure_simulation():\n","# the minimum number of trajectoies needs to be at least 30\n"," kwargs = {\n"," \"solver\":solver,\n"," \"show_labels\":False,\n"," \"number_of_trajectories\":100,\n"," \"seed\":None,\n"," # \"tau_tol\":0.03,\n"," # \"integrator_options\":{'rtol': 0.001, 'atol': 1e-06}\n"," }\n"," return kwargs"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["from tsfresh.feature_extraction.settings import MinimalFCParameters\n","from sciope.utilities.priors import uniform_prior\n","from sciope.utilities.summarystats import auto_tsfresh\n","from sciope.utilities.distancefunctions import naive_squared\n","from sciope.inference.abc_inference import ABC\n","from sklearn.metrics import mean_absolute_error\n","from dask.distributed import Client"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["kwargs = configure_simulation()\n","\n","# Define simulator function\n","def set_model_parameters(params, model):\n"," \"\"\"para,s - array, need to have the same order as\n"," model.listOfParameters \"\"\"\n"," for e, (pname, p) in enumerate(model.listOfParameters.items()):\n"," model.get_parameter(pname).set_expression(params[e])\n"," return model\n","\n","# Here we use the GillesPy2 Solver\n","def simulator(params, model):\n"," model_update = set_model_parameters(params, model)\n"," \n"," res = model_update.run(**kwargs)\n"," tot_res = np.asarray([x.T for x in res]) # reshape to (N, S, T)\n"," tot_res = tot_res[:,1:, :] # should not contain timepoints\n","\n"," return tot_res\n","\n","# Wrapper, simulator function to abc should should only take one argument (the parameter point)\n","def simulator2(x):\n"," return simulator(x, model=model)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# Set up the prior\n","default_param = np.array(list(model.listOfParameters.items()))[:,1] # take default from mode 1 as reference\n","\n","bound = []\n","for exp in default_param:\n"," bound.append(float(exp.expression))\n","\n","# Set the bounds\n","bound = np.array(bound)\n","dmin = bound * 0.1\n","dmax = bound * 2.0\n","\n","# Here we use uniform prior\n","uni_prior = uniform_prior.UniformPrior(dmin, dmax)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# generate some fixed(observed) data based on default parameters of the model\n","fixed_data = model.run(**kwargs)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# Reshape the data to (n_points,n_species,n_timepoints) and remove timepoints array\n","fixed_data = np.asarray([x.T for x in fixed_data])\n","fixed_data = fixed_data[:,1:, :]"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# Function to generate summary statistics\n","summ_func = auto_tsfresh.SummariesTSFRESH()\n","\n","# Distance\n","ns = naive_squared.NaiveSquaredDistance()\n","\n","# Start abc instance\n","abc = ABC(fixed_data, sim=simulator2, prior_function=uni_prior, summaries_function=summ_func.compute, distance_function=ns)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["c = Client()\n","c"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# First compute the fixed(observed) mean\n","abc.compute_fixed_mean(chunk_size=2)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["res = abc.infer(num_samples=100, batch_size=10, chunk_size=2)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["mae_inference = mean_absolute_error(bound, abc.results[\"inferred_parameters\"])"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.6"}},"nbformat":4,"nbformat_minor":4}
\ No newline at end of file
diff --git a/public_models/Tyson_Oscillator/Tyson_Oscillator.ipynb b/public_models/Tyson_Oscillator/Tyson_Oscillator.ipynb
index f78abf5c31..53ef2f6e1a 100644
--- a/public_models/Tyson_Oscillator/Tyson_Oscillator.ipynb
+++ b/public_models/Tyson_Oscillator/Tyson_Oscillator.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/public_models/Vilar_Oscillator/Vilar_Oscillator.ipynb b/public_models/Vilar_Oscillator/Vilar_Oscillator.ipynb
index 6daacf11b8..7b9774793c 100644
--- a/public_models/Vilar_Oscillator/Vilar_Oscillator.ipynb
+++ b/public_models/Vilar_Oscillator/Vilar_Oscillator.ipynb
@@ -15,13 +15,13 @@
"source": [
"import numpy as np\n",
"import gillespy2\n",
- "from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
- "from gillespy2.core.events import EventAssignment, EventTrigger, Event\n",
- "from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n",
- "# from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n",
- "# from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n",
- "# from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver"
+ "from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n",
+ "from gillespy2 import EventAssignment, EventTrigger, Event\n",
+ "from gillespy2 import SSACSolver\n",
+ "# from gillespy2 import VariableSSACSolver\n",
+ "# from gillespy2 import BasicTauLeapingSolver\n",
+ "# from gillespy2 import BasicTauHybridSolver\n",
+ "# from gillespy2 import BasicODESolver"
]
},
{
diff --git a/requirements.txt b/requirements.txt
index 11a30e7c7f..977c2fe9cb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,8 @@
python-libsbml==5.18.0
-gillespy2==1.4.2
-vtk
+python-libsedml==2.0.9
+python-libcombine==0.2.7
+gillespy2==1.5.5
+sciope==0.2
pygmsh==5.0.2
meshio==2.3.10
git+https://github.com/spatialpy/SpatialPy.git@develop
-git+https://github.com/sciope/sciope.git@master
diff --git a/setup.py b/setup.py
index da3aba5e21..17eae6bdcc 100644
--- a/setup.py
+++ b/setup.py
@@ -1,14 +1,49 @@
+# =============================================================================
+# @file __version__.py
+# @brief StochSS version info
+# @license Please see the file named LICENSE in the project directory
+# @website https://github.com/stochss/stochss
+# =============================================================================
+
import setuptools
+import os
+from os import path
+
+
+# Read the contents of auxiliary files.
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+SETUP_DIR = path.dirname(os.path.abspath(__file__))
+
+with open(path.join(SETUP_DIR, 'README.md'), 'r') as f:
+ readme = f.read()
+
+# The following reads the variables without doing an "import handprint",
+# because the latter will cause the python execution environment to fail if
+# any dependencies are not already installed -- negating most of the reason
+# we're using setup() in the first place. This code avoids eval, for security.
+
+version = {}
+with open(path.join(SETUP_DIR, '__version__.py'), 'r') as f:
+ text = f.read().rstrip().splitlines()
+ lines = [line for line in text if line.startswith('__') and '=' in line]
+ for v in lines:
+ setting = v.split('=')
+ version[setting[0].strip()] = setting[1].strip().replace("'", '')
+
+
+# Finally, define our namesake.
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setuptools.setup(
- name="stochss-singleuser",
- version="2.0.1",
- author="StochSS Team",
- author_email="bdrawert@unca.edu",
- description="StochSS is an integrated development environment (IDE) for simulation of biochemical networks.",
- long_description="StochSS is an integrated development environment (IDE) for simulation of biochemical networks.",
+ name=version['__title__'].lower(),
+ version=version['__version__'],
+ author=version['__author__'],
+ author_email=version['__email__'],
+ description=version['__description__'],
+ long_description=readme,
long_description_content_type="text/markdown",
- url="https://github.com/StochSS/stochss",
+ url=version['__url__'],
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
diff --git a/stochss/dist/stochss-project-browser.html b/stochss/dist/stochss-project-browser.html
new file mode 100644
index 0000000000..f541b7e5b6
--- /dev/null
+++ b/stochss/dist/stochss-project-browser.html
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/stochss/dist/stochss-user-home.html b/stochss/dist/stochss-user-home.html
new file mode 100644
index 0000000000..154212d3d1
--- /dev/null
+++ b/stochss/dist/stochss-user-home.html
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/stochss/handlers/__init__.py b/stochss/handlers/__init__.py
index 49da4bed2b..cc05296c64 100644
--- a/stochss/handlers/__init__.py
+++ b/stochss/handlers/__init__.py
@@ -1,9 +1,11 @@
-from notebook.utils import url_path_join
import logging
+from notebook.utils import url_path_join
+
from .pages import *
from .file_browser import *
from .models import *
from .workflows import *
+from .project import *
from .log import init_log
def get_page_handlers(route_start):
@@ -11,41 +13,59 @@ def get_page_handlers(route_start):
#
## Page Handlers
#
- #('/stochss\/?$', HomeHandler), #TODO: move to hub
- ('/stochss/models\/?$', ModelBrowserHandler),
- ('/stochss/models/edit\/?', ModelEditorHandler),
- ('/stochss/workflow/selection\/?', WorkflowSelectionHandler),
- ('/stochss/workflow/edit\/?', WorkflowEditorHandler),
- ('/stochss/quickstart\/?', QuickstartHandler),
+ (r'/stochss/home\/?', UserHomeHandler),
+ (r'/stochss/files\/?$', ModelBrowserHandler),
+ (r'/stochss/models/edit\/?', ModelEditorHandler),
+ (r'/stochss/workflow/selection\/?', WorkflowSelectionHandler),
+ (r'/stochss/workflow/edit\/?', WorkflowEditorHandler),
+ (r'/stochss/quickstart\/?', QuickstartHandler),
+ (r'/stochss/project/browser\/?', ProjectBrowserHandler),
+ (r'/stochss/project/manager\/?', ProjectManagerHandler),
#
## API Handlers
#
- ("/stochss/api/file/browser-list\/?", ModelBrowserFileList),
- ("/stochss/api/file/upload\/?", UploadFileAPIHandler),
- ("/stochss/api/file/move\/?", MoveFileAPIHandler),
- ("/stochss/api/file/delete\/?", DeleteFileAPIHandler),
- ("/stochss/api/file/rename\/?", RenameAPIHandler),
- ("/stochss/api/file/download\/?", DownloadAPIHandler),
- ("/stochss/api/file/download-zip\/?", DownloadZipFileAPIHandler),
- ("/stochss/api/file/json-data\/?", JsonFileAPIHandler),
- ("/stochss/api/file/duplicate\/?", DuplicateModelHandler),
- ("/stochss/api/directory/duplicate\/?", DuplicateDirectoryHandler),
- ("/stochss/api/directory/create\/?", CreateDirectoryHandler),
- ("/stochss/api/spatial/to-model\/?", ConvertToModelAPIHandler),
- ("/stochss/api/sbml/to-model\/?", SBMLToModelAPIHandler),
- ("/stochss/api/model/to-notebook\/?", ModelToNotebookHandler),
- ("/stochss/api/model/to-spatial\/?", ConvertToSpatialAPIHandler),
- ("/stochss/api/model/to-sbml\/?", ModelToSBMLAPIHandler),
- ("/stochss/api/model/run\/?", RunModelAPIHandler),
- ("/stochss/api/workflow/notebook\/?", WorkflowNotebookHandler),
- ("/stochss/api/workflow/load-workflow\/?", LoadWorkflowAPIHandler),
- ("/stochss/api/workflow/save-workflow\/?", SaveWorkflowAPIHandler),
- ("/stochss/api/workflow/run-workflow\/?", RunWorkflowAPIHandler),
- ("/stochss/api/workflow/workflow-status\/?", WorkflowStatusAPIHandler),
- ("/stochss/api/workflow/workflow-logs\/?", WorkflowLogsAPIHandler),
- ("/stochss/api/workflow/plot-results\/?", PlotWorkflowResultsAPIHandler),
- ("/stochss/api/workflow/duplicate\/?", DuplicateWorkflowAsNewHandler),
- ("/stochss/api/workflow/edit-model\/?", GetWorkflowModelPathAPIHandler),
+ (r"/stochss/api/file/browser-list\/?", ModelBrowserFileList),
+ (r"/stochss/api/file/upload\/?", UploadFileAPIHandler),
+ (r"/stochss/api/file/upload-from-link\/?", UploadFileFromLinkAPIHandler),
+ (r"/stochss/api/file/move\/?", MoveFileAPIHandler),
+ (r"/stochss/api/file/delete\/?", DeleteFileAPIHandler),
+ (r"/stochss/api/file/rename\/?", RenameAPIHandler),
+ (r"/stochss/api/file/download\/?", DownloadAPIHandler),
+ (r"/stochss/api/file/download-zip\/?", DownloadZipFileAPIHandler),
+ (r"/stochss/api/file/json-data\/?", JsonFileAPIHandler),
+ (r"/stochss/api/file/duplicate\/?", DuplicateModelHandler),
+ (r"/stochss/api/directory/duplicate\/?", DuplicateDirectoryHandler),
+ (r"/stochss/api/directory/create\/?", CreateDirectoryHandler),
+ (r"/stochss/api/spatial/to-model\/?", ConvertToModelAPIHandler),
+ (r"/stochss/api/sbml/to-model\/?", SBMLToModelAPIHandler),
+ (r"/stochss/api/model/to-notebook\/?", ModelToNotebookHandler),
+ (r"/stochss/api/model/to-spatial\/?", ConvertToSpatialAPIHandler),
+ (r"/stochss/api/model/to-sbml\/?", ModelToSBMLAPIHandler),
+ (r"/stochss/api/model/run\/?", RunModelAPIHandler),
+ (r"/stochss/api/model/exists\/?", ModelExistsAPIHandler),
+ (r"/stochss/api/project/new-project\/?", NewProjectAPIHandler),
+ (r"/stochss/api/project/load-project\/?", LoadProjectAPIHandler),
+ (r"/stochss/api/project/load-browser\/?", LoadProjectBrowserAPIHandler),
+ (r"/stochss/api/project/new-workflow-group\/?", NewWorkflowGroupAPIHandler),
+ (r"/stochss/api/project/add-existing-model\/?", AddExistingModelAPIHandler),
+ (r"/stochss/api/project/add-existing-workflow\/?", AddExistingWorkflowAPIHandler),
+ (r"/stochss/api/project/extract-model\/?", ExtractModelAPIHandler),
+ (r"/stochss/api/project/extract-workflow\/?", ExtractWorkflowAPIHandler),
+ (r"/stochss/api/project/empty-trash\/?", EmptyTrashAPIHandler),
+ (r"/stochss/api/project/export-combine\/?", ExportAsCombineAPIHandler),
+ (r"/stochss/api/project/meta-data\/?", ProjectMetaDataAPIHandler),
+ (r"/stochss/api/project/save-annotation\/?", UpdateAnnotationAPIHandler),
+ (r"/stochss/api/workflow/notebook\/?", WorkflowNotebookHandler),
+ (r"/stochss/api/workflow/load-workflow\/?", LoadWorkflowAPIHandler),
+ (r"/stochss/api/workflow/save-workflow\/?", SaveWorkflowAPIHandler),
+ (r"/stochss/api/workflow/run-workflow\/?", RunWorkflowAPIHandler),
+ (r"/stochss/api/workflow/workflow-status\/?", WorkflowStatusAPIHandler),
+ (r"/stochss/api/workflow/workflow-logs\/?", WorkflowLogsAPIHandler),
+ (r"/stochss/api/workflow/plot-results\/?", PlotWorkflowResultsAPIHandler),
+ (r"/stochss/api/workflow/duplicate\/?", DuplicateWorkflowAsNewHandler),
+ (r"/stochss/api/workflow/edit-model\/?", GetWorkflowModelPathAPIHandler),
+ (r"/stochss/api/workflow/save-plot\/?", SavePlotAPIHandler),
+ (r"/stochss/api/workflow/save-annotation\/?", SaveAnnotationAPIHandler)
]
full_handlers = list(map(lambda h: (url_path_join(route_start, h[0]), h[1]), handlers))
return full_handlers
diff --git a/stochss/handlers/file_browser.py b/stochss/handlers/file_browser.py
index 0b8fcb624e..2766136a32 100644
--- a/stochss/handlers/file_browser.py
+++ b/stochss/handlers/file_browser.py
@@ -6,13 +6,19 @@
Use finish() for json, write() for text
'''
-from notebook.base.handlers import APIHandler
-import json, os
+import os
+import json
+import uuid
+import subprocess
+from json.decoder import JSONDecodeError
+from datetime import datetime
import logging
-from tornado import web
+import traceback
from shutil import move, rmtree
-from .util.stochss_errors import StochSSAPIError
-from .util.ls import ls
+from tornado import web
+from notebook.base.handlers import APIHandler
+from .util.stochss_errors import StochSSAPIError, StochSSPermissionsError
+from .util.ls import list_files
from .util.convert_to_notebook import convert_to_notebook
from .util.duplicate import duplicate, duplicate_wkfl_as_new
from .util.rename import rename
@@ -20,10 +26,13 @@
from .util.convert_to_sbml import convert_to_sbml
from .util.convert_sbml_to_model import convert_sbml_to_model
from .util.generate_zip_file import download_zip
-from .util.upload_file import upload
+from .util.upload_file import upload, upload_from_link
+from .util.workflow_status import get_status
log = logging.getLogger('stochss')
+
+# pylint: disable=abstract-method
class ModelBrowserFileList(APIHandler):
'''
##############################################################################
@@ -33,26 +42,35 @@ class ModelBrowserFileList(APIHandler):
@web.authenticated
async def get(self):
'''
- Reads the content of a directory and returns a jstree dictionary.
+ Reads the content of a directory and returns a jstree dictionary.
Attributes
----------
'''
path = self.get_query_argument(name="path")
- log.info("Path to the directory: {0}".format(path))
+ is_root = self.get_query_argument(name="isRoot", default=False)
+ log.info("Path to the directory: %s", path)
try:
- output = ls(path)
- log.debug("Contents of the directory: {0}".format(output))
+ if is_root:
+ output = list_files(path, is_root=True)
+ else:
+ output = list_files(path)
+ log.debug("Contents of the directory: %s", output)
self.write(output)
except StochSSAPIError as err:
self.set_status(err.status_code)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
-
+
class ModelToNotebookHandler(APIHandler):
'''
##############################################################################
@@ -72,14 +90,19 @@ async def get(self):
path = self.get_query_argument(name="path")
self.set_header('Content-Type', 'application/json')
try:
- log.debug("Path to the model file: {0}".format(path))
+ log.debug("Path to the model file: %s", path)
dest_file = convert_to_notebook(path)
- log.debug("Notebook file path: {0}".format(dest_file))
+ log.debug("Notebook file path: %s", dest_file)
self.write(dest_file)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -100,7 +123,7 @@ async def get(self):
'''
path = self.get_query_argument(name="path")
file_path = os.path.join('/home/jovyan', path)
- log.debug("Deleting path: {0}".format(file_path))
+ log.debug("Deleting path: %s", file_path)
try:
try:
os.remove(file_path)
@@ -110,12 +133,20 @@ async def get(self):
except FileNotFoundError as err:
self.set_status(404)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":"StochSS File Not Found","Message":"Could not find the file or directory: {0}".format(err)}
+ error = {"Reason":"StochSS File Not Found",
+ "Message":"Could not find the file or directory: {0}".format(err)}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
except PermissionError as err:
self.set_status(403)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":"Permission Denied","Message":"You do not have permission to delete this file: {0}".format(err)}
+ error = {"Reason":"Permission Denied",
+ "Message":"You do not have permission to delete this file: {0}".format(err)}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -134,31 +165,22 @@ async def get(self):
Attributes
----------
'''
- user_dir = "/home/jovyan"
src_path = self.get_query_argument(name="srcPath")
- log.debug("Path to the file: {0}".format(src_path))
- old_path = os.path.join(user_dir, src_path)
- log.debug("Full path to the file: {0}".format(old_path))
+ log.debug("Path to the file: %s", src_path)
+ old_path = os.path.join("/home/jovyan", src_path)
+ log.debug("Full path to the file: %s", old_path)
dst_path = self.get_query_argument(name="dstPath")
- log.debug("Destination path: {0}".format(dst_path))
- new_path = os.path.join(user_dir, dst_path)
- log.debug("Full destination path: {0}".format(new_path))
+ log.debug("Destination path: %s", dst_path)
+ new_path = self.get_new_path("/home/jovyan", dst_path)
+ log.debug("Full destination path: %s", new_path)
try:
if os.path.isdir(old_path):
# If directory is wkfl and has been started, update wkfl model path
if old_path.endswith('.wkfl') and "RUNNING" in os.listdir(path=old_path):
- old_parent_dir = os.path.dirname(src_path)
- log.debug("Old parent directory: {0}".format(old_parent_dir))
- new_parent_dir = os.path.dirname(dst_path)
- log.debug("New parent directory: {0}".format(new_parent_dir))
- with open(os.path.join(old_path, "info.json"), "r+") as info_file:
- info = json.load(info_file)
- log.debug("Old wkfl info: {0}".format(info))
- info['wkfl_model'] = info['wkfl_model'].replace(old_parent_dir, new_parent_dir)
- info_file.seek(0)
- log.debug("New wkfl info: {0}".format(info))
- json.dump(info, info_file)
- info_file.truncate()
+ self.update_workflow_paths(src_path, dst_path, old_path)
+ elif old_path.endswith('.proj'):
+ self.is_project_movable(old_path)
+ self.update_project_paths(src_path, dst_path, old_path)
move(old_path, new_path)
else:
os.rename(old_path, new_path)
@@ -166,17 +188,159 @@ async def get(self):
except FileNotFoundError as err:
self.set_status(404)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":"StochSS File Not Found","Message":"Could not find the file or directory: {0}".format(err)}
+ error = {"Reason":"StochSS File Not Found",
+ "Message":"Could not find the file or directory: {0}".format(err)}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
except PermissionError as err:
self.set_status(403)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":"Permission Denied","Message":"You do not have permission to move this file: {0}".format(err)}
+ error = {"Reason":"Permission Denied",
+ "Message":"You do not have permission to move this file: {0}".format(err)}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
+ self.write(error)
+ except StochSSAPIError as err:
+ self.set_status(err.status_code)
+ self.set_header('Content-Type', 'application/json')
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
-
-
+
+ @classmethod
+ def get_new_path(cls, user_dir, dst_path):
+ '''
+ Gets the proper destination path for the file to be moved
+
+ Attributes
+ ----------
+ user_dir : string
+ Path to the users home directory
+ dst_path : string
+ New path for the file object from the users home directory
+ '''
+ new_path = os.path.join(user_dir, dst_path)
+ if new_path.split().pop().replace('.', '', 5).isdigit():
+ return new_path.replace(new_path.split().pop(), "").strip()
+ if 'trash/' in new_path and os.path.exists(new_path):
+ stamp = datetime.now().strftime(" %y.%m.%d.%H.%M.%S")
+ return new_path + stamp
+ return new_path
+
+
+ @classmethod
+ def update_workflow_paths(cls, src, dst, old_path):
+ '''
+ Updates the wkfl_model path in the info file.
+
+ Attributes
+ ----------
+ src : string
+ The parent directory of the source path.
+ dst : string
+ The parent directory of the destination path.
+ old_path : string
+ The path to the source file or directory.
+ '''
+ old_parent_dir = os.path.dirname(src)
+ log.debug("Old parent directory: %s", old_parent_dir)
+ new_parent_dir = os.path.dirname(dst)
+ log.debug("New parent directory: %s", new_parent_dir)
+ with open(os.path.join(old_path, "info.json"), "r+") as info_file:
+ info = json.load(info_file)
+ log.debug("Old wkfl info: %s", info)
+ info['wkfl_model'] = info['wkfl_model'].replace(old_parent_dir, new_parent_dir)
+ info_file.seek(0)
+ log.debug("New wkfl info: %s", info)
+ json.dump(info, info_file)
+ info_file.truncate()
+
+
+ @classmethod
+ def is_project_movable(cls, old_path):
+ '''
+ Checks the status of each workflow in the project to determine
+ if the project is able to be moved.
+
+ Attributes
+ ----------
+ old_path : string
+ The path to the source file or directory.
+ '''
+ for proj_item in os.listdir(old_path):
+ if proj_item.endswith('.wkgp'):
+ for exp_item in os.listdir(os.path.join(old_path, proj_item)):
+ if (exp_item.endswith('.wkfl') and
+ get_status(os.path.join(old_path, proj_item, exp_item)) == 'running'):
+ raise StochSSPermissionsError("This project contains a running workflow: \
+ {0} in {1}".format(exp_item, proj_item))
+
+
+ @classmethod
+ def update_project_paths(cls, src, dst, old_path):
+ '''
+ Updates the wkfl_model path in the info file of each workflow
+ in the project directory.
+
+ Attributes
+ ----------
+ src : string
+ The parent directory of the source path.
+ dst : string
+ The parent directory of the destination path.
+ old_path : string
+ The path to the source file or directory.
+ '''
+ old_parent_dir = os.path.dirname(src)
+ log.debug("Old parent directory: %s", old_parent_dir)
+ new_parent_dir = os.path.dirname(dst)
+ log.debug("New parent directory: %s", new_parent_dir)
+ for proj_item in os.listdir(old_path,):
+ if proj_item.endswith('.wkgp'):
+ for exp_item in os.listdir(os.path.join(old_path, proj_item)):
+ wkfl_path = os.path.join(old_path, proj_item, exp_item)
+ if wkfl_path.endswith(".wkfl"):
+ with open(os.path.join(wkfl_path,
+ "info.json"), "r+") as info_file:
+ info = json.load(info_file)
+ log.debug("Old wkfl info: %s", info)
+ if get_status(os.path.join(old_path, proj_item,
+ exp_item)) == 'ready':
+ if not old_parent_dir:
+ src_mdl = os.path.join(new_parent_dir,
+ info['source_model'])
+ else:
+ src_mdl = (info['source_model']
+ .replace(old_parent_dir, new_parent_dir, 1))
+ info['source_model'] = (src_mdl[1:]
+ if src_mdl.startswith('/')
+ else src_mdl)
+ else:
+ if not old_parent_dir:
+ wkfl_mdl = os.path.join(new_parent_dir,
+ info['wkfl_model'])
+ else:
+ wkfl_mdl = info['wkfl_model'].replace(old_parent_dir,
+ new_parent_dir, 1)
+ info['wkfl_model'] = (wkfl_mdl[1:]
+ if wkfl_mdl.startswith('/')
+ else wkfl_mdl)
+ info_file.seek(0)
+ log.debug("New wkfl info: %s", info)
+ json.dump(info, info_file)
+ info_file.truncate()
+
+
class DuplicateModelHandler(APIHandler):
'''
##############################################################################
@@ -186,7 +350,7 @@ class DuplicateModelHandler(APIHandler):
@web.authenticated
async def get(self):
'''
- Creates a copy of a file with a unique name and stores it in the same
+ Creates a copy of a file with a unique name and stores it in the same
directory as the original.
Attributes
@@ -194,15 +358,20 @@ async def get(self):
'''
path = self.get_query_argument(name="path")
self.set_header('Content-Type', 'application/json')
- log.debug("Copying file: {0}".format(path))
+ log.debug("Copying file: %s", path)
try:
resp = duplicate(path)
- log.debug("Response message: {0}".format(resp))
+ log.debug("Response message: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -216,7 +385,7 @@ class DuplicateDirectoryHandler(APIHandler):
@web.authenticated
async def get(self):
'''
- Creates a copy of a directory and its contents with a unique name and
+ Creates a copy of a directory and its contents with a unique name and
stores it in the same parent directory as the original.
Attributes
@@ -224,19 +393,24 @@ async def get(self):
'''
path = self.get_query_argument(name="path")
self.set_header('Content-Type', 'application/json')
- log.debug("Path to the file: {0}".format(path))
+ log.debug("Path to the file: %s", path)
try:
resp = duplicate(path, True)
- log.debug("Response message: {0}".format(resp))
+ log.debug("Response message: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
-
+
class RenameAPIHandler(APIHandler):
'''
##############################################################################
@@ -247,7 +421,7 @@ class RenameAPIHandler(APIHandler):
async def get(self):
'''
Rename a file or directory. If the file or directory already exists
- increment the file name using '(x)' naming convention to get a unique
+ increment the file name using '(x)' naming convention to get a unique
name.
Attributes
@@ -255,17 +429,22 @@ async def get(self):
'''
path = self.get_query_argument(name="path")
new_name = self.get_query_argument(name="name")
- log.debug("Path to the file or directory: {0}".format(path))
- log.debug("New filename: {0}".format(new_name))
+ log.debug("Path to the file or directory: %s", path)
+ log.debug("New filename: %s", new_name)
self.set_header('Content-Type', 'application/json')
try:
resp = rename(path, new_name)
- log.debug("Response message: {0}".format(resp))
+ log.debug("Response message: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -279,23 +458,28 @@ class ConvertToSpatialAPIHandler(APIHandler):
@web.authenticated
async def get(self):
'''
- Creates a spatial model file with a unique name from a model file and
+ Creates a spatial model file with a unique name from a model file and
stores it in the same directory as the original.
Attributes
----------
'''
path = self.get_query_argument(name="path")
- log.debug("Converting non-spatial model to spatial model: {0}".format(path))
+ log.debug("Converting non-spatial model to spatial model: %s", path)
self.set_header('Content-Type', 'application/json')
try:
resp = convert_model(path, to_spatial=True)
- log.debug("Response: {0}".format(resp))
+ log.debug("Response: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -309,23 +493,28 @@ class ConvertToModelAPIHandler(APIHandler):
@web.authenticated
async def get(self):
'''
- Creates a model file with a unique name from a spatial model file and
+ Creates a model file with a unique name from a spatial model file and
stores it in the same directory as the original.
Attributes
----------
'''
path = self.get_query_argument(name="path")
- log.debug("Converting spatial model to non-spatial model: {0}".format(path))
+ log.debug("Converting spatial model to non-spatial model: %s", path)
self.set_header('Content-Type', 'application/json')
try:
resp = convert_model(path, to_spatial=False)
- log.debug("Response: {0}".format(resp))
+ log.debug("Response: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -339,7 +528,7 @@ class ModelToSBMLAPIHandler(APIHandler):
@web.authenticated
async def get(self):
'''
- Create a SBML Model file with a unique name from a model file and
+ Create a SBML Model file with a unique name from a model file and
store it in the same directory as the original.
Attributes
@@ -347,19 +536,24 @@ async def get(self):
'''
path = self.get_query_argument(name="path")
self.set_header('Content-Type', 'application/json')
- log.debug("Converting to SBML: {0}".format(path))
+ log.debug("Converting to SBML: %s", path)
try:
resp = convert_to_sbml(path)
- log.debug("Response: {0}".format(resp))
+ log.debug("Response: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
-
+
class SBMLToModelAPIHandler(APIHandler):
'''
##############################################################################
@@ -369,32 +563,37 @@ class SBMLToModelAPIHandler(APIHandler):
async def get(self):
'''
- Creates a StochSS model with a unique name from an sbml model and
+ Creates a StochSS model with a unique name from an sbml model and
store it in the same directory as the original.
Attributes
----------
'''
path = self.get_query_argument(name="path")
- log.debug("Converting SBML: {0}".format(path))
- template_path ='/stochss/stochss_templates/nonSpatialModelTemplate.json'
- log.debug("Using model template: {0}".format(template_path))
+ log.debug("Converting SBML: %s", path)
+ template_path = '/stochss/stochss_templates/nonSpatialModelTemplate.json'
+ log.debug("Using model template: %s", template_path)
with open(template_path, "r") as template_file:
model_template = template_file.read()
- log.debug("Model template: {0}".format(model_template))
+ log.debug("Model template: %s", model_template)
self.set_header('Content-Type', 'application/json')
try:
resp = convert_sbml_to_model(path, model_template)
- log.debug("Response: {0}".format(resp))
+ log.debug("Response: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
-
+
class DownloadAPIHandler(APIHandler):
'''
##############################################################################
@@ -410,18 +609,21 @@ async def get(self):
----------
'''
path = self.get_query_argument(name="path")
- log.debug("Path to the model: {0}".format(path))
+ log.debug("Path to the model: %s", path)
full_path = os.path.join("/home/jovyan", path)
- log.debug("Path to the model on disk: {0}".format(full_path))
+ log.debug("Path to the model on disk: %s", full_path)
try:
- with open(full_path, 'r') as f:
- resp = f.read()
+ with open(full_path, 'r') as file:
+ resp = file.read()
self.write(resp)
except FileNotFoundError as err:
self.set_status(404)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":"File Not Found","Message":"Could not find file: " + str(err)}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":"File Not Found",
+ "Message":"Could not find file: " + str(err)}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -435,8 +637,8 @@ class DownloadZipFileAPIHandler(APIHandler):
@web.authenticated
async def get(self):
'''
- Read and download a zip file or generate a zip file from a directory or
- file and then download. Generated zip files are stored in the targets
+ Read and download a zip file or generate a zip file from a directory or
+ file and then download. Generated zip files are stored in the targets
parent directory with a unique name.
Attributes
@@ -444,26 +646,31 @@ async def get(self):
'''
path = self.get_query_argument(name="path")
action = self.get_query_argument(name="action")
- log.debug("Path to the model: {0}".format(path))
- log.debug("Action: {0}".format(action))
+ log.debug("Path to the model: %s", path)
+ log.debug("Action: %s", action)
if action == "download":
file_name = "{0}.zip".format(path.split('/').pop().split('.')[0])
- log.debug("Name of the download file: {0}".format(file_name))
+ log.debug("Name of the download file: %s", file_name)
self.set_header('Content-Type', 'application/zip')
self.set_header('Content_Disposition', 'attachment; filename="{0}"'.format(file_name))
else:
self.set_header('Content-Type', 'application/json')
-
+
try:
resp = download_zip(path, action)
- log.debug("Response: {0}\n".format(resp))
+ log.debug("Response: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
if action == "download":
self.set_header('Content-Type', 'application/json')
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -484,17 +691,21 @@ async def get(self):
----------
'''
directories = self.get_query_argument(name="path")
- log.debug("Path of directories: {0}".format(directories))
+ log.debug("Path of directories: %s", directories)
full_path = os.path.join("/home/jovyan", directories)
- log.debug("Full path of directories: {0}".format(full_path))
+ log.debug("Full path of directories: %s", full_path)
try:
os.makedirs(full_path)
self.write("{0} was successfully created!".format(directories))
except FileExistsError as err:
self.set_status(406)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":"Directory Already Exists","Message":"Could not create your directory: "+str(err)}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":"Directory Already Exists",
+ "Message":"Could not create your directory: "+str(err)}
+ error['Message'] = error['Message'].replace("/home/jovyan/", "")
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -509,13 +720,13 @@ class UploadFileAPIHandler(APIHandler):
async def post(self):
'''
Uploads the target file to the target directory. If the intended file
- type is a StochSS Model or SBML Model, the original file is uploaded
+ type is a StochSS Model or SBML Model, the original file is uploaded
with a converted model. If the file can't be uploaded to the intended
type no conversion is made and errors are sent to the user.
Attributes
----------
-
+
'''
file_data = self.request.files['datafile'][0]
file_info = json.loads(self.request.body_arguments['fileinfo'][0].decode())
@@ -528,10 +739,20 @@ async def post(self):
file_name = file_data['filename']
log.debug(file_name)
log.debug(type(file_data['body']))
- body = file_data['body']
- resp = upload(file_data, file_info)
- log.debug(resp)
- self.write(json.dumps(resp))
+ try:
+ resp = upload(file_data, file_info)
+ log.debug(resp)
+ self.write(json.dumps(resp))
+ except StochSSAPIError as err:
+ self.set_status(err.status_code)
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
+ self.write(error)
self.finish()
@@ -544,7 +765,7 @@ class DuplicateWorkflowAsNewHandler(APIHandler):
@web.authenticated
async def get(self):
'''
- Creates a new workflow that uses the same model and has
+ Creates a new workflow that uses the same model and has
the same type as the target workflow in its parent directory.
Attributes
@@ -553,23 +774,28 @@ async def get(self):
path = self.get_query_argument(name="path")
target = self.get_query_argument(name="target")
time_stamp = self.get_query_argument(name="stamp")
- log.debug("Path to the workflow: {0}".format(path))
- log.debug("The {0} is being copied".format(target))
+ log.debug("Path to the workflow: %s", path)
+ log.debug("The %s is being copied", target)
if time_stamp == "None":
time_stamp = None
else:
- log.debug("The time stamp for the new workflow: {0}".format(time_stamp))
+ log.debug("The time stamp for the new workflow: %s", time_stamp)
only_model = target == "wkfl_model"
- log.debug("only_model flag: {0}".format(only_model))
+ log.debug("only_model flag: %s", only_model)
self.set_header('Content-Type', 'application/json')
try:
resp = duplicate_wkfl_as_new(path, only_model, time_stamp)
- log.debug("Response: {0}".format(resp))
+ log.debug("Response: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -583,42 +809,87 @@ class GetWorkflowModelPathAPIHandler(APIHandler):
async def get(self):
'''
- Returns the path to the model used for the workflow to allow the user
+ Returns the path to the model used for the workflow to allow the user
to edit the model. If the model doesn't exist a 404 response is sent.
Attributes
----------
'''
- from json.decoder import JSONDecodeError
-
user_dir = "/home/jovyan"
path = self.get_query_argument(name="path")
self.set_header('Content-Type', 'application/json')
- log.debug("The path to the workflow: {0}".format(path))
+ log.debug("The path to the workflow: %s", path)
full_path = os.path.join(user_dir, path, "info.json")
- log.debug("The full path to the workflow's info file: {0}".format(full_path))
+ log.debug("The full path to the workflow's info file: %s", full_path)
try:
with open(full_path, "r") as info_file:
info = json.load(info_file)
- log.debug("Workflow info: {0}".format(info))
+ log.debug("Workflow info: %s", info)
model_path = info['source_model']
- log.debug("Path to the workflow's model: {0}".format(model_path))
+ log.debug("Path to the workflow's model: %s", model_path)
resp = {"file":model_path.replace(user_dir + "/", "")}
if not os.path.exists(os.path.join(user_dir, model_path)):
mdl_file = model_path.split('/').pop()
- resp['error'] = "The model file {0} could not be found. To edit the model you will need to extract the model from the workflow or open the workflow and update the path to the model.".format(mdl_file)
- log.debug("Response: {0}".format(resp))
+ resp['error'] = "The model file {0} could not be found. To edit the model you \
+ will need to extract the model from the workflow or open the \
+ workflow and update the path to the model.".format(mdl_file)
+ log.debug("Response: %s", resp)
self.write(resp)
except FileNotFoundError as err:
self.set_status(404)
- error = {"Reason":"Workflow Info File Not Found","Message":"Could not find the workflow's info file: "+str(err)}
- log.error(error)
+ error = {"Reason":"Workflow Info File Not Found",
+ "Message":"Could not find the workflow's info file: "+str(err)}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
except JSONDecodeError as err:
self.set_status(404)
- error = {"Reason":"Workflow Info File Not JSON Format","Message":"The workflow info file is not JSON decodable: "+str(err)}
- log.error(error)
+ error = {"Reason":"Workflow Info File Not JSON Format",
+ "Message":"The workflow info file is not JSON decodable: "+str(err)}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
+
+class UploadFileFromLinkAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for uploading file from a url.
+ ##############################################################################
+ '''
+
+ async def get(self):
+ '''
+ Upload and unzip a zip file from a url.
+
+ Attributes
+ ----------
+ '''
+ self.set_header('Content-Type', 'application/json')
+ path = self.get_query_argument(name="path")
+ log.debug("The path to the external file or the response file: %s", path)
+ cmd = self.get_query_argument(name="cmd", default=None)
+ log.debug("The command for the upload script: %s", cmd)
+ if cmd is None:
+ outfile = str(uuid.uuid4()).replace("-", "_")+".tmp"
+ log.debug("Response file name: %s", outfile)
+ exec_cmd = ['/stochss/stochss/handlers/util/upload_file.py', '{0}'.format(path), '{}'.format(outfile)] # Script commands for read run_cmd
+ log.debug("Exec command: %s", exec_cmd)
+ pipe = subprocess.Popen(exec_cmd)
+ resp = {"responsePath": outfile}
+ log.debug("Response: %s", resp)
+ self.write(resp)
+ else:
+ exec_cmd = ['/stochss/stochss/handlers/util/upload_file.py', 'None', '{}'.format(path)] # Script commands for read run_cmd
+ log.debug("Exec command: %s", exec_cmd)
+ pipe = subprocess.Popen(exec_cmd, stdout=subprocess.PIPE, text=True)
+ results, error = pipe.communicate()
+ log.error("Errors trown by the subprocess: %s", error)
+ resp = json.loads(results)
+ log.debug("Response: %s", resp)
+ self.write(resp)
+ self.finish()
diff --git a/stochss/handlers/models.py b/stochss/handlers/models.py
index ad5e638694..4b53cad825 100644
--- a/stochss/handlers/models.py
+++ b/stochss/handlers/models.py
@@ -6,6 +6,7 @@
import os
import subprocess
+import traceback
from notebook.base.handlers import APIHandler
from tornado import web
@@ -38,6 +39,7 @@ async def get(self):
----------
'''
purpose = self.get_query_argument(name="for")
+ log.debug("Purpose of the handler: %s", purpose)
file_path = self.get_query_argument(name="path")
log.debug("Path to the file: {0}".format(file_path))
if file_path.startswith('/'):
@@ -49,6 +51,8 @@ async def get(self):
with open(full_path, 'r') as f:
data = json.load(f)
log.debug("Contents of the json file: {0}".format(data))
+ if full_path.endswith(".mdl"):
+ self.update_model_data(data)
self.write(data)
elif purpose == "edit":
new_path ='/stochss/stochss_templates/nonSpatialModelTemplate.json'
@@ -69,12 +73,16 @@ async def get(self):
except FileNotFoundError as err:
self.set_status(404)
error = {"Reason":"Model Template Not Found","Message":"Could not find the model template file: "+str(err)}
- log.error("Exception information: {0}".format(error))
+ trace = traceback.format_exc()
+ log.error("Exception information: {0}\n{1}".format(error, trace))
+ error['Traceback'] = trace
self.write(error)
except JSONDecodeError as err:
self.set_status(406)
error = {"Reason":"Template Data Not JSON Format","Message":"Template data is not JSON decodeable: "+str(err)}
- log.error("Exception information: {0}".format(error))
+ trace = traceback.format_exc()
+ log.error("Exception information: {0}\n{1}".format(error, trace))
+ error['Traceback'] = trace
self.write(error)
else:
self.set_status(404)
@@ -83,6 +91,37 @@ async def get(self):
self.write(error)
self.finish()
+
+ @classmethod
+ def update_model_data(cls, data):
+ param_ids = []
+ for param in data['parameters']:
+ param_ids.append(param['compID'])
+ if isinstance(param['expression'], str):
+ try:
+ param['expression'] = ast.literal_eval(param['expression'])
+ except ValueError:
+ pass
+ for reaction in data['reactions']:
+ if reaction['rate'].keys() and isinstance(reaction['rate']['expression'], str):
+ try:
+ reaction['rate']['expression'] = ast.literal_eval(reaction['rate']['expression'])
+ except ValueError:
+ pass
+ for event in data['eventsCollection']:
+ for assignment in event['eventAssignments']:
+ if assignment['variable']['compID'] in param_ids:
+ try:
+ assignment['variable']['expression'] = ast.literal_eval(assignment['variable']['expression'])
+ except ValueError:
+ pass
+ for rule in data['rules']:
+ if rule['variable']['compID'] in param_ids:
+ try:
+ rule['variable']['expression'] = ast.literal_eval(rule['variable']['expression'])
+ except ValueError:
+ pass
+
@web.authenticated
async def post(self):
@@ -164,3 +203,27 @@ async def get(self):
self.write(resp)
self.finish()
+
+class ModelExistsAPIHandler(APIHandler):
+ '''
+ ########################################################################
+ Handler for checking if a model already exists.
+ ########################################################################
+ '''
+ @web.authenticated
+ async def get(self):
+ '''
+ Check if the model already exists.
+
+ Attributes
+ ----------
+ '''
+ self.set_header('Content-Type', 'application/json')
+ file_path = os.path.join("/home/jovyan", self.get_query_argument(name="path"))
+ log.debug("Path to the file: %s", file_path)
+ resp = {"exists":os.path.exists(file_path)}
+ log.debug("Response: %s", resp)
+ self.write(resp)
+ self.finish()
+
+
\ No newline at end of file
diff --git a/stochss/handlers/pages.py b/stochss/handlers/pages.py
index 5856f6dd6f..ae6302c0df 100644
--- a/stochss/handlers/pages.py
+++ b/stochss/handlers/pages.py
@@ -1,63 +1,81 @@
import os
+import logging
from tornado import web
from notebook.base.handlers import IPythonHandler
-import logging
log = logging.getLogger('stochss')
+# pylint: disable=abstract-method
class PageHandler(IPythonHandler):
- '''
- Base handler for rendering stochss pages.
- '''
- def get_template_path(self):
'''
- Retrieve the location of stochss pages output by webpack.
- The html pages are located in the same directory as static assets.
+ Base handler for rendering stochss pages.
'''
- return self.settings['config']['NotebookApp']['extra_static_paths'][0]
+ def get_template_path(self):
+ '''
+ Retrieve the location of stochss pages output by webpack.
+ The html pages are located in the same directory as static assets.
+ '''
+ return self.settings['config']['NotebookApp']['extra_static_paths'][0]
- def get_server_path(self):
- try:
- server_path = os.environ['JUPYTERHUB_SERVICE_PREFIX']
- except:
- server_path = '/'
+ @classmethod
+ def get_server_path(cls):
+ try:
+ server_path = os.environ['JUPYTERHUB_SERVICE_PREFIX']
+ except KeyError:
+ server_path = '/'
- return server_path
+ return server_path
class HomeHandler(PageHandler):
- @web.authenticated
- async def get(self):
- self.render("stochss-home.html", server_path=self.get_server_path())
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-home.html", server_path=self.get_server_path())
+
+
+class UserHomeHandler(PageHandler):
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-user-home.html", server_path=self.get_server_path())
class QuickstartHandler(PageHandler):
- @web.authenticated
- async def get(self):
- self.render("stochss-quickstart.html", server_path=self.get_server_path())
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-quickstart.html", server_path=self.get_server_path())
class ModelBrowserHandler(PageHandler):
- @web.authenticated
- async def get(self):
- self.render("stochss-file-browser.html", server_path=self.get_server_path())
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-file-browser.html", server_path=self.get_server_path())
class ModelEditorHandler(PageHandler):
- @web.authenticated
- async def get(self):
- self.render("stochss-model-editor.html", server_path=self.get_server_path())
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-model-editor.html", server_path=self.get_server_path())
class WorkflowSelectionHandler(PageHandler):
- @web.authenticated
- async def get(self):
- self.render("stochss-workflow-selection.html", server_path=self.get_server_path())
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-workflow-selection.html", server_path=self.get_server_path())
class WorkflowEditorHandler(PageHandler):
- @web.authenticated
- async def get(self):
- self.render("stochss-workflow-manager.html", server_path=self.get_server_path())
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-workflow-manager.html", server_path=self.get_server_path())
+
+
+class ProjectBrowserHandler(PageHandler):
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-project-browser.html", server_path=self.get_server_path())
+class ProjectManagerHandler(PageHandler):
+ @web.authenticated
+ async def get(self):
+ self.render("stochss-project-manager.html", server_path=self.get_server_path())
diff --git a/stochss/handlers/project.py b/stochss/handlers/project.py
new file mode 100644
index 0000000000..161de6eccc
--- /dev/null
+++ b/stochss/handlers/project.py
@@ -0,0 +1,742 @@
+'''
+Use BaseHandler for page requests since
+the base API handler has some logic that prevents
+requests without a referrer field
+'''
+
+
+import os
+import json
+import logging
+import ast
+
+from shutil import copyfile, copytree, rmtree
+from tornado import web
+from notebook.base.handlers import APIHandler
+
+from .util.rename import get_unique_file_name
+from .util.workflow_status import get_status
+from .util.generate_zip_file import download_zip
+from .util.convert_to_combine import convert
+from .util.stochss_errors import StochSSAPIError, StochSSPermissionsError
+
+log = logging.getLogger('stochss')
+
+
+# pylint: disable=abstract-method
+class LoadProjectBrowserAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for loading all of the users projects
+ ##############################################################################
+ '''
+ @web.authenticated
+ async def get(self):
+ '''
+ Recursively searches all directories for projects
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ self.set_header('Content-Type', 'application/json')
+ projects = []
+ self.get_projects_from_directory(user_dir, projects)
+ log.debug("List of projects: %s", projects)
+ resp = {"projects":projects}
+ self.write(resp)
+ self.finish()
+
+
+ @classmethod
+ def get_projects_from_directory(cls, path, projects):
+ '''
+ Get the projects in the directory if any exist.
+
+ Attributes
+ ----------
+ path : string
+ Path the target directory
+ projects : list
+ List of project dictionaries
+ '''
+ for item in os.listdir(path):
+ new_path = os.path.join(path, item)
+ if item.endswith('.proj'):
+ projects.append({'directory': new_path.replace("/home/jovyan/", ""),
+ 'parentDir': os.path.dirname(new_path.replace("/home/jovyan/",
+ "")),
+ 'elementID': "p{}".format(len(projects) + 1)})
+ elif not item.startswith('.') and os.path.isdir(new_path):
+ cls.get_projects_from_directory(new_path, projects)
+
+
+class LoadProjectAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for creating new StochSS Projects
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Create a new project directory and the path to the directory if needed.
+
+ Attributes
+ ----------
+ '''
+ self.set_header('Content-Type', 'application/json')
+ path = self.get_query_argument(name="path")
+ log.debug("The path to the new project directory: %s", path)
+ project = {"models": [], "workflowGroups": [], "trash_empty": True}
+ for item in os.listdir(path):
+ if item == "README.md":
+ readme_path = os.path.join(path, item)
+ with open(readme_path, 'r') as readme_file:
+ project['annotation'] = readme_file.read()
+ elif item.endswith('.mdl'):
+ mdl_dir = os.path.join(path, item)
+ with open(mdl_dir, 'r') as mdl_file:
+ model = json.load(mdl_file)
+ model['name'] = item.split('.')[0]
+ model['directory'] = mdl_dir
+ self.update_model_data(model)
+ project['models'].append(model)
+ elif item.endswith('.wkgp'):
+ name = item.split('.')[0]
+ workflows = []
+ for workflow in os.listdir(os.path.join(path, item)):
+ if workflow.endswith('.wkfl'):
+ self.get_stochss_workflow(project, workflows,
+ os.path.join(path, item, workflow),
+ workflow)
+ elif workflow.endswith('.ipynb'):
+ self.get_notebook_workflow(workflows,
+ os.path.join(path, item, workflow),
+ workflow)
+ project['workflowGroups'].append({"name":name, "workflows":workflows})
+ elif item == "trash":
+ project['trash_empty'] = len(os.listdir(os.path.join(path, item))) == 0
+ log.debug("Contents of the project: %s", project)
+ self.write(project)
+ self.finish()
+
+
+ @classmethod
+ def update_model_data(cls, data):
+ param_ids = []
+ for param in data['parameters']:
+ param_ids.append(param['compID'])
+ if isinstance(param['expression'], str):
+ try:
+ param['expression'] = ast.literal_eval(param['expression'])
+ except ValueError:
+ pass
+ for reaction in data['reactions']:
+ if reaction['rate'].keys() and isinstance(reaction['rate']['expression'], str):
+ try:
+ reaction['rate']['expression'] = ast.literal_eval(reaction['rate']['expression'])
+ except ValueError:
+ pass
+ for event in data['eventsCollection']:
+ for assignment in event['eventAssignments']:
+ if assignment['variable']['compID'] in param_ids:
+ try:
+ assignment['variable']['expression'] = ast.literal_eval(assignment['variable']['expression'])
+ except ValueError:
+ pass
+ for rule in data['rules']:
+ if rule['variable']['compID'] in param_ids:
+ try:
+ rule['variable']['expression'] = ast.literal_eval(rule['variable']['expression'])
+ except ValueError:
+ pass
+
+
+ @classmethod
+ def get_workflow_info(cls, wkfl_dict):
+ '''
+ Add the necessary workflow info elements to the workflow model
+
+ Attributes
+ ----------
+ wkfl_dict : dict
+ JSON representation of a workflow
+ '''
+ with open(os.path.join(wkfl_dict["path"], "info.json"), 'r') as info_file:
+ info = json.load(info_file)
+ types = {'gillespy': 'Ensemble Simulation', 'parameterSweep':'Parameter Sweep'}
+ wkfl_dict['type'] = types[info['type']]
+ if not 'annotation' in info.keys():
+ wkfl_dict['annotation'] = ""
+ else:
+ wkfl_dict['annotation'] = info['annotation']
+
+
+ @classmethod
+ def get_notebook_workflow(cls, workflows, path, workflow):
+ '''
+ Get the info for the notebook workflow
+
+ Attributes
+ ----------
+ workflows: list
+ List of workflows
+ path : string
+ Path to the workflow
+ workflow : string
+ Name of the workflow directory
+ '''
+ wkfl_dict = {"path":path, "name":workflow.split('.')[0],
+ "status":"", "outputs":[], "annotation":""}
+ with open(path, "r") as nb_file:
+ file_data = nb_file.read()
+ if "Traceback (most recent call last)" in file_data:
+ wkfl_dict['status'] = 'error'
+ else:
+ wkfl_dict['status'] = 'ready'
+ wkfl_dict['type'] = "notebook"
+ workflows.append(wkfl_dict)
+
+
+ def get_stochss_workflow(self, project, workflows, path, workflow):
+ '''
+ Get the info for the StochSS Workflow
+
+ Attributes
+ ----------
+ project : dict
+ Dictionary representation of the stochss project
+ workflows: list
+ List of workflows
+ path : string
+ Path to the workflow
+ workflow : string
+ Name of the workflow directory
+ '''
+ wkfl_dict = {"path":path, "name":workflow.split('.')[0]}
+ wkfl_dict['status'] = get_status(wkfl_dict['path'])
+ with open(os.path.join(wkfl_dict['path'],
+ 'settings.json'), 'r') as settings_file:
+ outputs = json.load(settings_file)['resultsSettings']['outputs']
+ if outputs:
+ output = max(outputs, key=lambda output: output['stamp'])
+ if "plot" in project.keys():
+ if output['stamp'] > project['plot']['output']['stamp']:
+ project['plot']['path'] = wkfl_dict['path']
+ project['plot']['output'] = output
+ else:
+ project['plot'] = {"path":wkfl_dict['path'], "output":output}
+ wkfl_dict['outputs'] = outputs
+ self.get_workflow_info(wkfl_dict)
+ workflows.append(wkfl_dict)
+
+
+class NewProjectAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for creating new StochSS Projects
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Create a new project directory and the path to the directory if needed.
+
+ Attributes
+ ----------
+ '''
+ log.setLevel(logging.DEBUG)
+ self.set_header('Content-Type', 'application/json')
+ path = self.get_query_argument(name="path")
+ log.debug("The path to the new project directory: %s", path)
+ try:
+ os.makedirs(path)
+ os.mkdir(os.path.join(path, "trash"))
+ os.mkdir(os.path.join(path, "WorkflowGroup1.wkgp"))
+ resp = {"message":"Successfully created the project: {0}\
+ ".format(path.split('/').pop()),
+ "path":path}
+ self.write(resp)
+ except FileExistsError as err:
+ self.set_status(406)
+ error = {"Reason":"Project Already Exists",
+ "Message":"Could not create your project: {0}".format(err)}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ log.setLevel(logging.WARNING)
+ self.finish()
+
+
+class NewWorkflowGroupAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for creating new StochSS Workflow Groups
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Create a new workflow group directory.
+
+ Attributes
+ ----------
+ '''
+ self.set_header('Content-Type', 'application/json')
+ path = self.get_query_argument(name="path")
+ log.debug("The path to the new workflow group directory: %s", path)
+ try:
+ os.mkdir(path)
+ proj_file = os.path.dirname(path).split('/').pop()
+ exp_file = path.split('/').pop()
+ resp = {"message":"The {} was successfully created in {}".format(exp_file, proj_file),
+ "path":path}
+ self.write(resp)
+ except FileExistsError as err:
+ self.set_status(406)
+ error = {"Reason":"Workflow Group Already Exists",
+ "Message":"Could not create your workflow group: {0}".format(err)}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ except FileNotFoundError as err:
+ self.set_status(404)
+ error = {"Reason":"Dirctory Not Found",
+ "Message":"Workflow Groups can only be created in a StochSS Project: \
+ {0}".format(err)}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ self.finish()
+
+
+class AddExistingModelAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for adding existing models to a project
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Add the selected model to the project.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ self.set_header('Content-Type', 'application/json')
+ path = os.path.join(user_dir, self.get_query_argument(name="path"))
+ mdl_path = os.path.join(user_dir, self.get_query_argument(name="mdlPath"))
+ log.debug("Path to the project: %s", path)
+ log.debug("Path to the model: %s", mdl_path)
+ try:
+ unique_path, changed = get_unique_file_name(mdl_path.split("/").pop(), path)
+ copyfile(mdl_path, unique_path)
+ resp = {"message": "The model {0} was successfully move into \
+ {1}".format(mdl_path.split('/').pop(), path.split("/").pop())}
+ if changed:
+ resp['message'] += " as {0}".format(unique_path.split('/').pop())
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ except IsADirectoryError as err:
+ self.set_status(406)
+ error = {"Reason":"Not A Model",
+ "Message":"Cannot move directories into StochSS Projects: {0}".format(err)}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ except FileNotFoundError as err:
+ self.set_status(404)
+ error = {"Reason":"Model Not Found",
+ "Message":"Could not find the model: {0}".format(err)}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ self.finish()
+
+
+class AddExistingWorkflowAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for adding an existing workflow to a project
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Add the selected workflow to the project.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ self.set_header('Content-Type', 'application/json')
+ path = os.path.join(user_dir, self.get_query_argument(name="path"))
+ wkfl_path = os.path.join(user_dir, self.get_query_argument(name="wkflPath"))
+ log.debug("Path to the workflow group: %s", path)
+ log.debug("Path to the workflow: %s", wkfl_path)
+ try:
+ if get_status(wkfl_path) == "running":
+ raise StochSSPermissionsError("Running workflows cannot be moved.")
+ unique_path, changed = get_unique_file_name(wkfl_path.split('/').pop(), path)
+ copytree(wkfl_path, unique_path)
+ resp = {"message": "The Workflow {0} was successfully moved into \
+ {1}".format(wkfl_path.split('/').pop(), path.split('/').pop())}
+ with open(os.path.join(unique_path, "info.json"), 'r+') as info_file:
+ info = json.load(info_file)
+ log.debug("Old workflow info: %s", info)
+ if get_status(unique_path) == "ready":
+ info['source_model'] = os.path.join(os.path.dirname(path).replace(user_dir+"/",
+ ""),
+ info['source_model'].split('/').pop())
+ else:
+ info['wkfl_model'] = (info['wkfl_model']
+ .replace(os.path.dirname(info['wkfl_model']),
+ unique_path.replace(user_dir+"/",
+ "")))
+ log.debug("New workflow info: %s", info)
+ info_file.seek(0)
+ json.dump(info, info_file)
+ info_file.truncate()
+ if changed:
+ resp['message'] += " as {0}".format(unique_path.split("/").pop())
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ except FileNotFoundError as err:
+ self.set_status(404)
+ error = {"Reason":"Workflow Not Found",
+ "Message":"Could not find the workflow: {0}".format(err)}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ except StochSSAPIError as err:
+ self.set_status(err.status_code)
+ error = {"Reason":err.reason, "Message":err.message}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ self.finish()
+
+
+class ExtractModelAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for extracting models from a project
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Extract a model from a project.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ self.set_header('Content-Type', 'application/json')
+ src_path = os.path.join(user_dir, self.get_query_argument(name="srcPath"))
+ log.debug("Path to the target model: %s", src_path)
+ dst_path = os.path.join(user_dir, self.get_query_argument(name="dstPath"))
+ log.debug("Destination path for the target model: %s", dst_path)
+ try:
+ unique_path, changed = get_unique_file_name(dst_path.split('/').pop(),
+ os.path.dirname(dst_path))
+ copyfile(src_path, unique_path)
+ export_path = (os.path.dirname(unique_path).replace(user_dir+"/", "")
+ if os.path.dirname(unique_path) != user_dir else "/")
+ resp = "The Model {0} was extracted to {1} in files\
+ ".format(src_path.split('/').pop(), export_path)
+ if changed:
+ resp += " as {0}".format(unique_path.split('/').pop())
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ except FileNotFoundError as err:
+ self.set_status(404)
+ error = {"Reason":"Model Not Found",
+ "Message":"Could not find the model: {0}".format(err)}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ self.finish()
+
+
+class ExtractWorkflowAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for extracting workflows from a project
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Extract a workflow from a project.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ src_path = os.path.join(user_dir, self.get_query_argument(name="srcPath"))
+ log.debug("Path to the target model: %s", src_path)
+ dst_path = os.path.join(user_dir, self.get_query_argument(name="dstPath"))
+ log.debug("Destination path for the target model: %s", dst_path)
+ try:
+ if get_status(src_path) != "running":
+ unique_path, changed = get_unique_file_name(dst_path.split('/').pop(),
+ os.path.dirname(dst_path))
+ copytree(src_path, unique_path)
+ if get_status(unique_path) != "ready":
+ self.update_workflow_path(unique_path)
+ export_path = (os.path.dirname(unique_path).replace(user_dir+"/", "")
+ if os.path.dirname(unique_path) != user_dir else "/")
+ resp = "The Workflow {0} was exported to {1} in files\
+ ".format(src_path.split('/').pop(), export_path)
+ if changed:
+ resp += " as {0}".format(unique_path.split('/').pop())
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ except FileNotFoundError as err:
+ self.set_status(404)
+ self.set_header('Content-Type', 'application/json')
+ error = {"Reason":"Workflow Not Found",
+ "Message":"Could not find the workflow: {0}".format(err)}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ self.finish()
+
+
+ @classmethod
+ def update_workflow_path(cls, dst):
+ '''
+ Update the path to the workflows model
+
+ Attributes
+ ----------
+ dst : string
+ Destination path for the workflow
+ '''
+ with open(os.path.join(dst, "info.json"), "r+") as info_file:
+ info = json.load(info_file)
+ log.debug("Old workflow info: %s", info)
+ new_path = os.path.join(dst, info['wkfl_model'].split('/').pop())
+ info['wkfl_model'] = new_path.replace("/home/jovyan/", "")
+ log.debug("New workflow info: %s", info)
+ info_file.seek(0)
+ json.dump(info, info_file)
+ info_file.truncate()
+
+
+class EmptyTrashAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for a projects trash directory
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Empty the trash directory.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ self.set_header('Content-Type', 'application/json')
+ path = os.path.join(user_dir, self.get_query_argument(name="path"))
+ log.debug("Path to the trash directory: %s", path)
+ try:
+ for item in os.listdir(path):
+ item_path = os.path.join(path, item)
+ if os.path.isdir(item_path):
+ rmtree(item_path)
+ else:
+ os.remove(item_path)
+ resp = "Successfully emptied the trash"
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ except FileNotFoundError:
+ os.mkdir(path)
+ resp = "The trash directory was removed."
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ self.finish()
+
+
+class ProjectMetaDataAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for a projects meta data
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Get the projects meta data if it exists else create a meta data dictionary.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ self.set_header('Content-Type', 'application/json')
+ path = os.path.join(user_dir, self.get_query_argument(name="path"))
+ log.debug("Path to the project directory: %s", path)
+ files = self.get_query_argument(name="files").split(',')
+ log.debug("List of files: %s", files)
+ md_path = os.path.join(path, ".meta-data.json")
+ log.debug("Path to the meta-data file: %s", md_path)
+ if os.path.exists(md_path):
+ with open(md_path, "r") as md_file:
+ data = json.load(md_file)
+ meta_data = data['meta-data']
+ creators = data['creators']
+ else:
+ meta_data = {}
+ creators = {}
+
+ for file in files:
+ if file not in meta_data.keys():
+ meta_data[file] = {"description":"", "creators":[]}
+ log.debug("Meta-data for the project: %s", meta_data)
+ log.debug("Creators for the project: %s", creators)
+ resp = {"meta_data":meta_data, "creators":creators}
+ log.debug("Response Message: %s", resp)
+ self.write(resp)
+ self.finish()
+
+
+ @web.authenticated
+ def post(self):
+ '''
+ Save the projects meta data.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ self.set_header('Content-Type', 'application/json')
+ path = os.path.join(user_dir, self.get_query_argument(name="path"))
+ log.debug("Path to the project directory: %s", path)
+ data = self.request.body.decode()
+ log.debug("Meta-data to be saved: %s", data)
+ with open(os.path.join(path, ".meta-data.json"), "w") as md_file:
+ md_file.write(data)
+ self.finish()
+
+
+class ExportAsCombineAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for exporting a project or part of a project as a COMBINE archive
+ ##############################################################################
+ '''
+ @web.authenticated
+ def get(self):
+ '''
+ Export a project with existing meta data if any.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ path = os.path.join(user_dir, self.get_query_argument(name="path"))
+ log.debug("Path to the project/workflow group/workflow directory: %s", path)
+ project_path = os.path.join(user_dir, self.get_query_argument(name="projectPath",
+ default=""))
+ log.debug("Path to the project directory: %s", project_path)
+ download = bool(self.get_query_argument(name="download", default=False))
+ try:
+ if download:
+ self.set_header('Content-Type', 'application/zip')
+ self.set_header('Content_Disposition',
+ 'attachment; filename="{0}"'.format((path.split('/')
+ .pop().split('.')[0])))
+ resp = download_zip(path, "download")
+ log.debug("Response message: %s", resp)
+ else:
+ self.set_header('Content-Type', 'application/json')
+ if os.path.exists(os.path.join(project_path, ".meta-data.json")):
+ with open(os.path.join(project_path, ".meta-data.json"), "r") as md_file:
+ data = json.load(md_file)
+ for _, meta_data in data['meta-data'].items():
+ meta_data['creators'] = list(map(lambda key: data['creators'][key],
+ meta_data['creators']))
+ resp = convert(path, data["meta-data"])
+ else:
+ resp = convert(path)
+ if resp["errors"]:
+ log.error("Errors raised by convert process: %s", resp["errors"])
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ except StochSSAPIError as err:
+ if download:
+ self.set_header('Content-Type', 'application/json')
+ self.set_status(err.status_code)
+ error = {"Reason":err.reason, "Message":err.message}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ self.finish()
+
+
+ @web.authenticated
+ def post(self):
+ '''
+ Export a project with new or updated meta data.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ path = os.path.join(user_dir, self.get_query_argument(name="path"))
+ log.debug("Path to the project/workflow group/workflow directory: %s", path)
+ project_path = os.path.join(user_dir, self.get_query_argument(name="projectPath",
+ default=""))
+ log.debug("Path to the project directory: %s", project_path)
+ data = self.request.body.decode()
+ log.debug("Meta-data to be saved: %s", data)
+ with open(os.path.join(project_path, ".meta-data.json"), "w") as md_file:
+ md_file.write(data)
+ data = json.loads(data)
+ for _, meta_data in data['meta-data'].items():
+ meta_data['creators'] = list(map(lambda key: data['creators'][key],
+ meta_data['creators']))
+ download = bool(self.get_query_argument(name="download", default=False))
+ try:
+ if download:
+ self.set_header('Content-Type', 'application/zip')
+ self.set_header('Content_Disposition',
+ 'attachment; filename="{0}"'.format((path.split('/')
+ .pop().split('.')[0])))
+ resp = download_zip(path, "download")
+ else:
+ self.set_header('Content-Type', 'application/json')
+ resp = convert(path, data["meta-data"])
+ if resp["errors"]:
+ log.error("Errors raised by convert process: %s", resp["errors"])
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ except StochSSAPIError as err:
+ if download:
+ self.set_header('Content-Type', 'application/json')
+ self.set_status(err.status_code)
+ error = {"Reason":err.reason, "Message":err.message}
+ log.error("Exception Information: %s", error)
+ self.write(error)
+ self.finish()
+
+
+class UpdateAnnotationAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for updating the README.md file with the projects annotation
+ ##############################################################################
+ '''
+ @web.authenticated
+ def post(self):
+ '''
+ Export a project with new or updated meta data.
+
+ Attributes
+ ----------
+ '''
+ user_dir = "/home/jovyan"
+ path = os.path.join(user_dir, self.get_query_argument(name="path"), "README.md")
+ log.debug("Path to the project directory: %s", path)
+ data = json.loads(self.request.body.decode())['annotation'].strip()
+ log.debug("Annotation to be saved: %s", data)
+ log.debug(type(data))
+ with open(path, 'w') as readme_file:
+ readme_file.write(data)
+ self.finish()
diff --git a/stochss/handlers/util/convert_sbml_to_model.py b/stochss/handlers/util/convert_sbml_to_model.py
index 47c9263578..c0452fb5c2 100755
--- a/stochss/handlers/util/convert_sbml_to_model.py
+++ b/stochss/handlers/util/convert_sbml_to_model.py
@@ -17,7 +17,7 @@ def convert_to_gillespy_model(path):
except:
return None, []
else:
- raise StochSSFileNotFoundError("Could not find the sbml file: "+path)
+ raise StochSSFileNotFoundError("Could not find the sbml file: "+path, None)
def get_sbml_function_definitions(path):
@@ -40,7 +40,7 @@ def get_sbml_function_definitions(path):
def convert_to_stochss_model(stochss_model, gillespy_model, full_path, name=None):
comp_id = 1
errors = []
- if type(gillespy_model) is gillespy2.core.gillespy2.Model:
+ if type(gillespy_model) is gillespy2.Model:
sbml_model_file = full_path.split('/').pop()
if name is None:
stochss_model_file = gillespy_model.name + '.mdl'
@@ -49,11 +49,10 @@ def convert_to_stochss_model(stochss_model, gillespy_model, full_path, name=None
stochss_model_path = get_unique_file_name(stochss_model_file, full_path.split(sbml_model_file)[0])[0]
species = gillespy_model.get_all_species()
- stochss_species, algorithm, default_mode, comp_id = get_species(species, comp_id)
+ stochss_species, default_mode, comp_id = get_species(species, comp_id)
stochss_model['species'].extend(stochss_species)
stochss_model['defaultMode'] = default_mode
- stochss_model['simulationSettings']['algorithm'] = algorithm
-
+
parameters = gillespy_model.get_all_parameters()
stochss_parameters, comp_id = get_parameters(parameters, comp_id)
stochss_model['parameters'].extend(stochss_parameters)
@@ -92,12 +91,10 @@ def convert_to_stochss_model(stochss_model, gillespy_model, full_path, name=None
def get_species(species, comp_id):
stochss_species = []
mode = "dynamic"
- algorithm = "SSA"
-
+
for name, specie in species.items():
if not specie.mode == "dynamic":
mode = "continuous"
- algorithm = "Hybrid-Tau-Leaping"
break
for name, specie in species.items():
@@ -119,7 +116,7 @@ def get_species(species, comp_id):
stochss_species.append(stochss_specie)
comp_id += 1
- return stochss_species, algorithm, mode, comp_id
+ return stochss_species, mode, comp_id
def get_parameters(parameters, comp_id):
diff --git a/stochss/handlers/util/convert_to_1d_param_sweep_notebook.py b/stochss/handlers/util/convert_to_1d_param_sweep_notebook.py
index 0b59ea37e2..bd95110266 100644
--- a/stochss/handlers/util/convert_to_1d_param_sweep_notebook.py
+++ b/stochss/handlers/util/convert_to_1d_param_sweep_notebook.py
@@ -1,9 +1,11 @@
#!/usr/bin/env python3
import json
import nbformat
+import traceback
+import string
from nbformat import v4 as nbf
from os import path
-from .rename import get_unique_file_name
+from .rename import get_unique_file_name, get_file_name
from .run_model import ModelFactory
from json.decoder import JSONDecodeError
from .stochss_errors import ModelNotFoundError, ModelNotJSONFormatError, JSONFileNotModelError
@@ -12,16 +14,34 @@
from .generate_notebook_cells import generate_imports_cell, generate_model_cell, generate_configure_simulation_cell, get_algorithm
# imports for parameter sweep workflow
from .generate_notebook_cells import generate_feature_extraction_cell, generate_mean_std_aggregate_cell, generate_1D_parameter_sweep_class_cell, generate_1D_psweep_config_cell, generate_parameter_sweep_run_cell
-from gillespy2.solvers.auto.ssa_solver import get_best_ssa_solver
-def convert_to_1d_psweep_nb(_model_path, name=None, settings=None):
+
+def get_class_name(name):
+ name = name.replace(" ", "")
+
+ for char in string.punctuation:
+ if char in name:
+ name = name.replace(char, "")
+
+ leading_char = name[0]
+ if leading_char in string.digits:
+ name = "M{}".format(name)
+ elif leading_char in string.ascii_lowercase:
+ name = name.replace(leading_char, leading_char.upper(), 1)
+
+ return name
+
+
+def convert_to_1d_psweep_nb(_model_path, name=None, settings=None, dest_path=None):
user_dir = '/home/jovyan'
model_path = path.join(user_dir,_model_path)
file = model_path.split('/').pop()
if name is None:
- name = file.split('.')[0].replace('-', '_')
- dest_path = model_path.split(file)[0]
+ name = get_file_name(file)
+ class_name = get_class_name(name)
+ if dest_path is None:
+ dest_path = model_path.split(file)[0]
# Collect .mdl Data
try:
@@ -29,14 +49,17 @@ def convert_to_1d_psweep_nb(_model_path, name=None, settings=None):
json_data = json.loads(json_file.read())
json_data['name'] = name
except FileNotFoundError as err:
- raise ModelNotFoundError('Could not find model file: ' + str(err))
+ raise ModelNotFoundError('Could not find model file: ' + str(err), traceback.format_exc())
except JSONDecodeError as err:
- raise ModelNotJSONFormatError("The model is not JSON decodable: "+str(err))
+ raise ModelNotJSONFormatError("The model is not JSON decodable: "+str(err), traceback.format_exc())
is_ode = json_data['defaultMode'] == "continuous" if settings is None else settings['simulationSettings']['algorithm'] == "ODE"
gillespy2_model = ModelFactory(json_data, is_ode).model
- is_ssa_c = gillespy2_model.get_best_solver().name == "VariableSSACSolver"
+ if settings is None or settings['simulationSettings']['isAutomatic']:
+ algorithm, solv_name = get_algorithm(gillespy2_model, is_psweep=True)
+ else:
+ algorithm, solv_name = get_algorithm(gillespy2_model, is_psweep=True, algorithm=settings['simulationSettings']['algorithm'])
# Create new notebook
cells = []
@@ -44,18 +67,23 @@ def convert_to_1d_psweep_nb(_model_path, name=None, settings=None):
cells.append(nbf.new_markdown_cell('# {0}'.format(name)))
try:
# Create imports cell
- import_cell = generate_imports_cell(json_data, gillespy2_model, is_ssa_c) if settings is None else generate_imports_cell(json_data, gillespy2_model, is_ssa_c, settings=settings['simulationSettings'])
+ if settings is None:
+ import_cell = generate_imports_cell(json_data, algorithm, solv_name)
+ config_cell = generate_configure_simulation_cell(json_data, algorithm, solv_name, is_psweep=True)
+ psweep_config_cell = generate_1D_psweep_config_cell(json_data, class_name)
+ else:
+ import_cell = generate_imports_cell(json_data, algorithm, solv_name, settings=settings['simulationSettings'])
+ config_cell = generate_configure_simulation_cell(json_data, algorithm, solv_name, is_psweep=True, settings=settings['simulationSettings'])
+ psweep_config_cell = generate_1D_psweep_config_cell(json_data, class_name, settings=settings)
cells.append(nbf.new_code_cell(import_cell))
# Create Model Cell
- cells.append(nbf.new_code_cell(generate_model_cell(json_data, name)))
+ cells.append(nbf.new_code_cell(generate_model_cell(json_data, class_name)))
# Instantiate Model Cell
- cells.append(nbf.new_code_cell('model = {0}()'.format(name)))
- algorithm = get_algorithm(gillespy2_model, is_ssa_c) if settings is None or settings['simulationSettings']['isAutomatic'] else get_algorithm(gillespy2_model, is_ssa_c, algorithm=settings['simulationSettings']['algorithm'])
- if is_ssa_c:
+ cells.append(nbf.new_code_cell('model = {0}()'.format(class_name)))
+ if solv_name == "VariableSSACSolver":
# Instantiate Solver Cell
cells.append(nbf.new_code_cell('solver = model.get_best_solver()\nsolver = solver(model=model)'))
# Configure Simulation Cell
- config_cell = generate_configure_simulation_cell(json_data, gillespy2_model, is_ssa_c) if settings is None else generate_configure_simulation_cell(json_data, gillespy2_model, is_ssa_c, settings=settings['simulationSettings'])
cells.append(nbf.new_code_cell(config_cell))
# Feature Extraction cell
cells.append(nbf.new_code_cell(generate_feature_extraction_cell()))
@@ -64,16 +92,15 @@ def convert_to_1d_psweep_nb(_model_path, name=None, settings=None):
# Parameter Sweep Class cell
cells.append(nbf.new_code_cell(generate_1D_parameter_sweep_class_cell(json_data, algorithm)))
# Parameter Sweep Config cell
- psweep_config_cell = generate_1D_psweep_config_cell(json_data, name) if settings is None else generate_1D_psweep_config_cell(json_data, name, settings=settings)
cells.append(nbf.new_code_cell(psweep_config_cell))
+ # Parameter Sweep Execution cell
+ cells.append(nbf.new_code_cell(generate_parameter_sweep_run_cell(algorithm, settings)))
+ # Parameter Sweet Plot Cell
+ cells.append(nbf.new_code_cell('ps.plot()'))
+ # Parameter Sweet Plotly Cell
+ cells.append(nbf.new_code_cell('ps.plotplotly()'))
except KeyError as err:
- raise JSONFileNotModelError("The JSON file is not formatted as a StochSS model "+str(err))
- # Parameter Sweep Execution cell
- cells.append(nbf.new_code_cell(generate_parameter_sweep_run_cell(get_algorithm(gillespy2_model, is_ssa_c), settings)))
- # Parameter Sweet Plot Cell
- cells.append(nbf.new_code_cell('ps.plot()'))
- # Parameter Sweet Plotly Cell
- cells.append(nbf.new_code_cell('ps.plotplotly()'))
+ raise JSONFileNotModelError("The JSON file is not formatted as a StochSS model "+str(err), traceback.format_exc())
# Append cells to worksheet
nb = nbf.new_notebook(cells=cells)
diff --git a/stochss/handlers/util/convert_to_2d_param_sweep_notebook.py b/stochss/handlers/util/convert_to_2d_param_sweep_notebook.py
index 6bbc5be077..89f2345a73 100644
--- a/stochss/handlers/util/convert_to_2d_param_sweep_notebook.py
+++ b/stochss/handlers/util/convert_to_2d_param_sweep_notebook.py
@@ -1,9 +1,11 @@
#!/usr/bin/env python3
import json
import nbformat
+import traceback
+import string
from nbformat import v4 as nbf
from os import path
-from .rename import get_unique_file_name
+from .rename import get_unique_file_name, get_file_name
from .run_model import ModelFactory
from json.decoder import JSONDecodeError
from .stochss_errors import ModelNotFoundError, ModelNotJSONFormatError, JSONFileNotModelError
@@ -12,16 +14,34 @@
from .generate_notebook_cells import generate_imports_cell, generate_model_cell, generate_configure_simulation_cell, get_algorithm
# imports for parameter sweep workflow
from .generate_notebook_cells import generate_feature_extraction_cell, generate_average_aggregate_cell, generate_2D_parameter_sweep_class_cell, generate_2D_psweep_config_cell, generate_parameter_sweep_run_cell
-from gillespy2.solvers.auto.ssa_solver import get_best_ssa_solver
-def convert_to_2d_psweep_nb(_model_path, name=None, settings=None):
+
+def get_class_name(name):
+ name = name.replace(" ", "")
+
+ for char in string.punctuation:
+ if char in name:
+ name = name.replace(char, "")
+
+ leading_char = name[0]
+ if leading_char in string.digits:
+ name = "M{}".format(name)
+ elif leading_char in string.ascii_lowercase:
+ name = name.replace(leading_char, leading_char.upper(), 1)
+
+ return name
+
+
+def convert_to_2d_psweep_nb(_model_path, name=None, settings=None, dest_path=None):
user_dir = '/home/jovyan'
model_path = path.join(user_dir,_model_path)
file = model_path.split('/').pop()
if name is None:
- name = file.split('.')[0].replace('-', '_')
- dest_path = model_path.split(file)[0]
+ name = get_file_name(file)
+ class_name = get_class_name(name)
+ if dest_path is None:
+ dest_path = model_path.split(file)[0]
# Collect .mdl Data
try:
@@ -29,33 +49,41 @@ def convert_to_2d_psweep_nb(_model_path, name=None, settings=None):
json_data = json.loads(json_file.read())
json_data['name'] = name
except FileNotFoundError as err:
- raise ModelNotFoundError('Could not find model file: ' + str(err))
+ raise ModelNotFoundError('Could not find model file: ' + str(err), traceback.format_exc())
except JSONDecodeError as err:
- raise ModelNotJSONFormatError("The model is not JSON decodable: "+str(err))
+ raise ModelNotJSONFormatError("The model is not JSON decodable: "+str(err), traceback.format_exc())
is_ode = json_data['defaultMode'] == "continuous" if settings is None else settings['simulationSettings']['algorithm'] == "ODE"
gillespy2_model = ModelFactory(json_data, is_ode).model
- is_ssa_c = gillespy2_model.get_best_solver().name == "VariableSSACSolver"
-
+ if settings is None or settings['simulationSettings']['isAutomatic']:
+ algorithm, solv_name = get_algorithm(gillespy2_model, is_psweep=True)
+ else:
+ algorithm, solv_name = get_algorithm(gillespy2_model, is_psweep=True, algorithm=settings['simulationSettings']['algorithm'])
+
# Create new notebook
cells = []
# Create Markdown Cell with name
cells.append(nbf.new_markdown_cell('# {0}'.format(name)))
try:
# Create imports cell
- import_cell = generate_imports_cell(json_data, gillespy2_model, is_ssa_c) if settings is None else generate_imports_cell(json_data, gillespy2_model, is_ssa_c, settings=settings['simulationSettings'])
+ if settings is None:
+ import_cell = generate_imports_cell(json_data, algorithm, solv_name)
+ config_cell = generate_configure_simulation_cell(json_data, algorithm, solv_name, is_psweep=True)
+ psweep_config_cell = generate_2D_psweep_config_cell(json_data, class_name)
+ else:
+ import_cell = generate_imports_cell(json_data, algorithm, solv_name, settings=settings['simulationSettings'])
+ config_cell = generate_configure_simulation_cell(json_data, algorithm, solv_name, is_psweep=True, settings=settings['simulationSettings'])
+ psweep_config_cell = generate_2D_psweep_config_cell(json_data, class_name, settings=settings)
cells.append(nbf.new_code_cell(import_cell))
# Create Model Cell
- cells.append(nbf.new_code_cell(generate_model_cell(json_data, name)))
+ cells.append(nbf.new_code_cell(generate_model_cell(json_data, class_name)))
# Instantiate Model Cell
- cells.append(nbf.new_code_cell('model = {0}()'.format(name)))
- algorithm = get_algorithm(gillespy2_model, is_ssa_c) if settings is None or settings['simulationSettings']['isAutomatic'] else get_algorithm(gillespy2_model, is_ssa_c, algorithm=settings['simulationSettings']['algorithm'])
- if is_ssa_c:
+ cells.append(nbf.new_code_cell('model = {0}()'.format(class_name)))
+ if solv_name == "VariableSSACSolver":
# Instantiate Solver Cell
cells.append(nbf.new_code_cell('solver = model.get_best_solver()\nsolver = solver(model=model)'))
# Configure Simulation Cell
- config_cell = generate_configure_simulation_cell(json_data, gillespy2_model, is_ssa_c) if settings is None else generate_configure_simulation_cell(json_data, gillespy2_model, is_ssa_c, settings=settings['simulationSettings'])
cells.append(nbf.new_code_cell(config_cell))
# Feature Extraction cell
cells.append(nbf.new_code_cell(generate_feature_extraction_cell()))
@@ -64,12 +92,11 @@ def convert_to_2d_psweep_nb(_model_path, name=None, settings=None):
# Parameter Sweep Class cell
cells.append(nbf.new_code_cell(generate_2D_parameter_sweep_class_cell(json_data, algorithm)))
# Parameter Sweep Config cell
- psweep_config_cell = generate_2D_psweep_config_cell(json_data, name) if settings is None else generate_2D_psweep_config_cell(json_data, name, settings=settings)
cells.append(nbf.new_code_cell(psweep_config_cell))
except KeyError as err:
- raise JSONFileNotModelError("The JSON file is not formatted as a StochSS model "+str(err))
+ raise JSONFileNotModelError("The JSON file is not formatted as a StochSS model "+str(err), traceback.format_exc())
# Parameter Sweep Execution cell
- cells.append(nbf.new_code_cell(generate_parameter_sweep_run_cell(get_algorithm(gillespy2_model, is_ssa_c), settings)))
+ cells.append(nbf.new_code_cell(generate_parameter_sweep_run_cell(algorithm, settings)))
# Parameter Sweet Plot Cell
cells.append(nbf.new_code_cell('ps.plot()'))
# Parameter Sweet Plotly Cell
diff --git a/stochss/handlers/util/convert_to_combine.py b/stochss/handlers/util/convert_to_combine.py
new file mode 100644
index 0000000000..8d0ba5ca98
--- /dev/null
+++ b/stochss/handlers/util/convert_to_combine.py
@@ -0,0 +1,659 @@
+import os
+import json
+import tempfile
+import numpy as np
+
+import libsbml
+import libsedml
+import libcombine
+
+from .workflow_status import get_status
+from .rename import get_unique_file_name
+from .convert_to_sbml import convert_to_sbml
+from .stochss_errors import StochSSExportCombineError
+
+
+kisao_map = {"ODE":"KISAO:0000088", "SSA":"KISAO:0000029", "Tau-Leaping":"KISAO:0000084",
+ "Hybrid-Tau-Leaping":"KISAO:1000084", "seed":"KISAO:0000488",
+ "realizations":"KISAO:0000498", "tauTol":"KISAO:0000228",
+ "absoluteTol":"KISAO:0000211", "relativeTol":"KISAO:0000209"}
+
+params_map = {"ODE":["absoluteTol", "relativeTol"],
+ "SSA":["seed", "realizations"],
+ "Tau-Leaping":["seed", "realizations", "tauTol"],
+ "Hybrid-Tau-Leaping":["absoluteTol", "relativeTol", "seed", "realizations", "tauTol"]}
+
+
+def convert(path, meta_data=None):
+ user_dir = "/home/jovyan"
+ path = os.path.join(user_dir, path)
+
+ # Setup combine archive
+ archive = libcombine.CombineArchive()
+ archive_dir = tempfile.TemporaryDirectory()
+ archive_errors = []
+
+ # Add file(s) to archive
+ if path.endswith('.wkfl'):
+ if get_status(path) != 'complete':
+ raise StochSSExportCombineError("You cannot create a combine achrive \
+ with a workflow that has not completed")
+ archive_name = path.split('/')[:-2].pop().split('.')[0]
+ file_type = "workflow"
+ dst_parent = '/'.join(path.split('/')[:-3])
+ sedml = convert_workflow(path, archive, archive_dir)
+ with open(sedml['path'], "w") as sedml_file:
+ sedml_file.write(libsedml.SedWriter().writeSedMLToString(sedml['doc']))
+ archive.addFile(sedml['path'], "./{0}".format(sedml['name']),
+ libcombine.KnownFormats.lookupFormat('sedml'), True)
+ elif path.endswith('.wkgp'):
+ archive_name = path.split('/')[:-1].pop().split('.')[0]
+ file_type = "Workflow Group"
+ dst_parent = '/'.join(path.split('/')[:-2])
+ archive_errors = convert_workflow_group(path, archive, archive_dir)
+ elif path.endswith('.proj'):
+ archive_name = path.split('/').pop().split('.')[0]
+ file_type = "Project"
+ dst_parent = os.path.dirname(path)
+ archive_errors = convert_project(path, archive, archive_dir)
+ dst, changed = get_unique_file_name(archive_name + ".omex", dst_parent)
+ if changed:
+ archive_name = dst.split('/').pop().split('.')[0]
+
+ if meta_data is not None:
+ add_meta_data(archive, archive_name, meta_data)
+
+ # write the archive to the parent directory of the project
+ archive.writeToFile(dst)
+
+ resp = "The {0} {1} was downloaded as {2}".format(file_type,
+ path.split('/').pop(),
+ archive_name+".omex")
+ return {"message":resp, "errors":archive_errors, "file_type":file_type,
+ "file_path":dst.replace("/home/jovyan/", "")}
+
+
+def add_meta_data(archive, archive_name, meta_data):
+ for file in meta_data.keys():
+ # Create meta data for archive
+ des = libcombine.OmexDescription()
+ des.setAbout('.' if file.split('.')[0] == archive_name else "./{0}.xml".format(file))
+ des.setCreated(libcombine.OmexDescription.getCurrentDateAndTime())
+ if meta_data[file]["description"]:
+ des.setDescription(meta_data[file]["description"])
+ # Create creator for the meta data
+ for creator_data in meta_data[file]["creators"]:
+ # Add creator to meta data
+ des.addCreator(create_creator(**creator_data))
+ # Add meta data to archive
+ archive.addMetadata('.' if file.split('.')[0] == archive_name else
+ "./{0}.xml".format(file), des)
+
+
+def create_creator(fname=None, lname=None, email=None, organization=None):
+ creator = libcombine.VCard()
+ if lname:
+ creator.setFamilyName(lname)
+ if fname:
+ creator.setGivenName(fname)
+ if email:
+ creator.setEmail(email)
+ if organization:
+ creator.setOrganization(organization)
+ return creator
+
+
+def convert_workflow(path, archive, archive_dir, sedml_doc=None):
+ with open(os.path.join(path, "info.json"), "r") as info_file:
+ wkfl_info = json.load(info_file)
+ model_path = os.path.join("/home/jovyan", wkfl_info['wkfl_model'])
+
+ # add model to archive as sbml file with .xml extension
+ sbml_document = convert_to_sbml(model_path.replace("/home/jovyan/", ""), write_to_file=False)
+ sbml_path, _ = get_unique_file_name(model_path.split('/').pop().split('.')[0]+".xml",
+ archive_dir.name)
+ with open(sbml_path, "w") as sbml_file:
+ sbml_file.write(libsbml.SBMLWriter().writeSBMLToString(sbml_document))
+ model_file = sbml_path.split('/').pop()
+ archive.addFile(sbml_path, "./{0}".format(model_file),
+ libcombine.KnownFormats.lookupFormat('sbml'), False)
+
+ # create Sed-ML document, name, and path
+ if sedml_doc is None:
+ sedml_doc = libsedml.SedDocument(1, 3)
+ sedml_document = convert_workflow_to_sedml(path, wkfl_info, model_file, sedml_doc)
+ sedml_name = os.path.dirname(path).split('/').pop().replace(".wkgp", ".xml")
+ sedml_path, _ = get_unique_file_name(sedml_name, archive_dir.name)
+
+ return {"doc":sedml_document, "name":sedml_name, "path":sedml_path}
+
+ return convert_workflow_to_sedml(path, wkfl_info, model_file, sedml_doc)
+
+
+def convert_workflow_group(path, archive, archive_dir, num_exps=None):
+ sedml_doc = libsedml.SedDocument(1, 3)
+ sedml_name = path.split('/').pop().replace(".wkgp", ".xml")
+ sedml_path, _ = get_unique_file_name(sedml_name, archive_dir.name)
+ errors = []
+
+ for wkfl in list(filter(lambda obj: obj.endswith(".wkfl"), os.listdir(path))):
+ wkfl_path = os.path.join(path, wkfl)
+ if get_status(wkfl_path) == 'complete':
+ convert_workflow(wkfl_path, archive, archive_dir, sedml_doc=sedml_doc)
+ else:
+ errors.append("The workflow {0} cannot be added to the Sed-ML file {1} \
+ until it has completed successfully".format(wkfl, sedml_name))
+
+ if sedml_doc.getNumSimulations() <= 0:
+ archive_name = os.path.dirname(path).split('/').pop().replace('.proj', '.omex')
+ if num_exps is None:
+ message = "A COMBINE archive cannot be created from a workflow group that \
+ does not contain any successfully completed workflows: {0} \
+ ".format(errors)
+ else:
+ message = "The workflow group {1} contains no workflows that have \
+ successfully completed and cannot be added to the COMBINE \
+ archive {2}: {0}".format(errors, path.split('/').pop(), archive_name)
+ raise StochSSExportCombineError(message)
+
+ sedml_writer = libsedml.SedWriter()
+ with open(sedml_path, "w") as sedml_file:
+ sedml_file.write(sedml_writer.writeSedMLToString(sedml_doc))
+
+ archive.addFile(sedml_path, "./{0}".format(sedml_name),
+ libcombine.KnownFormats.lookupFormat('sedml'), True)
+
+ return errors
+
+
+def convert_project(path, archive, archive_dir):
+ failed = 0
+ project_errors = []
+
+ workflow_groups = list(filter(lambda obj: obj.endswith(".wkgp"), os.listdir(path)))
+ for exp in workflow_groups:
+ exp_path = os.path.join(path, exp)
+ try:
+ errors = convert_workflow_group(exp_path, archive, archive_dir,
+ num_exps=len(workflow_groups))
+ project_errors.extend(errors)
+ except StochSSExportCombineError as err:
+ failed += 1
+ project_errors.append(str(err))
+
+ if len(workflow_groups) <= failed:
+ message = "Could not create the COMBINE archive as none of the workflow groups \
+ contain successfully completed workflows: {0}".format(project_errors)
+ raise StochSSExportCombineError(message)
+
+ return project_errors
+
+
+def get_wkfl_data(_path, info):
+ user_dir = "/home/jovyan"
+ if _path.startswith(user_dir):
+ path = _path
+ else:
+ path = os.path.join(user_dir, _path)
+
+ with open(info['wkfl_model'], 'r') as mdl_file:
+ mdl = json.load(mdl_file)
+ with open(os.path.join(path, "settings.json")) as settings_file:
+ wkfl_settings = json.load(settings_file)
+
+ return mdl, wkfl_settings
+
+
+def convert_workflow_to_sedml(path, info, mdl_src, sedml_doc):
+ # create the Sed-ML model
+ mdl_id = create_model_reference(sedml_doc, mdl_src)
+
+ # get data for Sed-ML simulation
+ mdl, wkfl_settings = get_wkfl_data(path, info)
+ # create the SedML simulation
+ sim_id = create_simulation(sedml_doc, mdl, wkfl_settings)
+
+ if info['type'] == "gillespy":
+ # create the Sed-ML task
+ task_id = create_task(sedml_doc, path, mdl_id, sim_id)
+ # data generators for time
+ create_data_generator(sedml_doc, "time", task_id, symbol="urn:sedml:symbol:time")
+ else:
+ # create the Sed-ML repeated task for 1D parameter sweep
+ psweep_settings = wkfl_settings['parameterSweepSettings']
+ sub_task_id = create_task(sedml_doc, path, mdl_id, sim_id, is_sub_task=True)
+ task_id = create_repeated_task(sedml_doc, path, mdl_id, sub_task_id, psweep_settings)
+ # data generators for params
+ create_data_generator(sedml_doc, "p1range", task_id, symbol="urn:sedml:symbol:p1range")
+ if not psweep_settings['is1D']:
+ # create data generator for 2D parameter sweep p2
+ create_data_generator(sedml_doc, "p2range", task_id,
+ symbol="urn:sedml:symbol:p2range")
+
+ outputs = wkfl_settings['resultsSettings']['outputs']
+ index = sedml_doc.getNumOutputs() + 1
+ if len(outputs) <= 0:
+ # default data generators for results
+ list_of_dgs, error_dgs = create_default_data_generators(sedml_doc, mdl, info,
+ wkfl_settings, task_id)
+ if info['type'] == "gillespy":
+ # default output
+ create_default_outputs(sedml_doc, index, list_of_dgs)
+ elif psweep_settings['is1D']:
+ create_default_outputs(sedml_doc, index, list_of_dgs, error_dgs=error_dgs,
+ x_ref="p1range")
+ else:
+ create_default_3d_outputs(sedml_doc, index, list_of_dgs)
+ else:
+ # data generators for saved results
+ if info['type'] == "gillespy":
+ create_data_generators(sedml_doc, info, outputs, task_id)
+ # user defined plots
+ create_saved_outputs(sedml_doc, outputs, index)
+ else:
+ create_data_generators(sedml_doc, info, outputs, task_id, is_1d=psweep_settings['is1D'])
+ if psweep_settings['is1D']:
+ create_saved_outputs(sedml_doc, outputs, index, x_ref="p1range")
+ else:
+ create_saved_3d_outputs(sedml_doc, outputs, index)
+
+ return sedml_doc
+
+
+def create_model_reference(sedml_doc, mdl_src):
+ model_id = mdl_src.split('.')[0].replace('(', '_').replace(')', '')
+ sedml_mdl = sedml_doc.createModel()
+ sedml_mdl.setId(model_id)
+ sedml_mdl.setSource(mdl_src)
+ sedml_mdl.setLanguage("urn:sedml:sbml")
+
+ return model_id
+
+
+def create_simulation(sedml_doc, mdl, wkfl_settings):
+ mdl_settings = mdl['modelSettings']
+ sim_settings = wkfl_settings['simulationSettings']
+ index = sedml_doc.getNumSimulations() + 1
+ sim_id = "sim{0}".format(index)
+
+ sedml_sim = sedml_doc.createUniformTimeCourse()
+ sedml_sim.setId(sim_id)
+ sedml_sim.setInitialTime(0)
+ sedml_sim.setOutputStartTime(0)
+ sedml_sim.setOutputEndTime(mdl_settings['endSim'])
+ sedml_sim.setNumberOfPoints(int(mdl_settings['endSim'] / mdl_settings['timeStep']))
+ # create the Sed-ML simulation algorithm
+ create_sim_algorithm(sedml_sim, sim_settings)
+
+ return sim_id
+
+
+def create_sim_algorithm(sedml_sim, sim_settings):
+ algorithm = sim_settings['algorithm']
+ sim_alg = sedml_sim.createAlgorithm()
+ sim_alg.setKisaoID(kisao_map[algorithm])
+ # create the Sed-ML simulation algorithm parameters
+ for param in params_map[algorithm]:
+ value = sim_settings[param]
+ create_algorithm_param(sim_alg, param, value)
+
+
+def create_algorithm_param(sim_alg, param, value):
+ if not (param == "seed" and value == -1):
+ alg_param = sim_alg.createAlgorithmParameter()
+ alg_param.setKisaoID(kisao_map[param])
+ alg_param.setValue(str(value))
+
+
+def create_task(sedml_doc, path, mdl_id, sim_id, is_sub_task=False):
+ task_id = path.split('/').pop().split('.')[0]
+ if is_sub_task:
+ task_id += "_sub"
+ sedml_task = sedml_doc.createTask()
+ sedml_task.setId(task_id)
+ sedml_task.setModelReference(mdl_id)
+ sedml_task.setSimulationReference(sim_id)
+
+ return task_id
+
+
+def create_repeated_task(sedml_doc, path, mdl_id, sub_task_id, settings):
+ task_id = path.split('/').pop().split('.')[0]
+
+ sedml_rtask = sedml_doc.createRepeatedTask()
+ sedml_rtask.setId(task_id)
+ sedml_rtask.setResetModel(False)
+ # create the ranges that the task will iterate over
+ # all ranges are iterated in lockstep with the primary range
+ ranges = list(create_list_of_ranges(sedml_rtask, settings))
+ sedml_rtask.setRangeId(ranges[0])
+ # create the list of changes to be made the model prior to running the subtask
+ create_list_of_changes(sedml_rtask, settings, ranges, mdl_id)
+ # create the sub task to be called during each iteration
+ create_subtask(sedml_rtask, sub_task_id)
+
+ return task_id
+
+
+def create_list_of_ranges(sedml_rtask, settings):
+ if settings['is1D']:
+ p1_range_id = create_uniform_range(sedml_rtask, settings)
+ return p1_range_id, None
+
+ p1_range = get_range_for(settings, primary=True)
+ p2_range = get_range_for(settings)
+ p1_range_id = create_vector_range(sedml_rtask, p1_range, "p1range")
+ p2_range_id = create_vector_range(sedml_rtask, p2_range, "p2range")
+
+ return p1_range_id, p2_range_id
+
+
+def create_uniform_range(sedml_rtask, settings):
+ uni_range_id = "p1range"
+ uni_range = sedml_rtask.createUniformRange()
+ uni_range.setId(uni_range_id)
+ uni_range.setStart(settings['p1Min'])
+ uni_range.setEnd(settings['p1Max'])
+ uni_range.setNumberOfPoints(settings['p1Steps'])
+ uni_range.setType("linear")
+
+ return uni_range_id
+
+
+def get_range_for(settings, primary=False):
+ if primary:
+ start = settings['p1Min']
+ end = settings['p1Max']
+ steps = settings['p1Steps']
+ else:
+ start = settings['p2Min']
+ end = settings['p2Max']
+ steps = settings['p2Steps']
+
+ _range = list(np.linspace(start, end, steps))
+
+ param_range = []
+ if primary:
+ for val in _range:
+ for _ in range(settings['p2Steps']):
+ param_range.append(val)
+ else:
+ for _ in range(settings['p1Steps']):
+ param_range.extend(_range)
+
+ return param_range
+
+
+def create_vector_range(sedml_rtask, range_vals, vec_range_id):
+ vec_range = sedml_rtask.createVectorRange()
+ vec_range.setId(vec_range_id)
+ vec_range.setValues(range_vals)
+
+ return vec_range_id
+
+
+def create_list_of_changes(sedml_rtask, settings, ranges, mdl_id):
+ p1_change = sedml_rtask.createTaskChange()
+ p1_change.setTarget("/sbml:sbml/sbml:model/sbml:listOfParameters/sbml:parameter[@id='{0}']"
+ .format(settings['parameterOne']['name']))
+ p1_change.setRange(ranges[0])
+ p1_change.setModelReference(mdl_id)
+ p1_change.setMath(libsedml.parseFormula(ranges[0]))
+
+ if ranges[1] is not None:
+ p2_change = sedml_rtask.createTaskChange()
+ p2_change.setTarget("/sbml:sbml/sbml:model/sbml:listOfParameters/sbml:parameter[@id='{0}']"
+ .format(settings['parameterTwo']['name']))
+ p2_change.setRange(ranges[1])
+ p2_change.setModelReference(mdl_id)
+ p2_change.setMath(libsedml.parseFormula(ranges[1]))
+
+
+def create_subtask(sedml_rtask, sub_task_id):
+ sub_task = sedml_rtask.createSubTask()
+ sub_task.setTask(sub_task_id)
+ sub_task.setOrder(1)
+
+
+def get_data_generator_code(wkfl_type, key=None, settings=None):
+ if key is None and settings is None:
+ raise StochSSExportCombineError("No key or settings were provided, \
+ you must provide one of either.")
+ if key is None:
+ res_settings = settings['resultsSettings']
+ sim_settings = settings['simulationSettings']
+ key = "-" + res_settings['mapper']
+ if sim_settings['realizations'] > 1:
+ key += ("-" + res_settings['reducer'])
+
+ if wkfl_type == "gillespy":
+ code_map = {"trajectories":"t", "stddevran":"sdr", "stddev":"sd", "avg":"r"}
+ code = code_map[key]
+ elif wkfl_type == "parameterSweep":
+ code_map = {"min":"n", "max":"x", "avg":"a", "var":"v", "final":"f"}
+ key = key.split("-")[1:]
+ code = ""
+ for element in key:
+ code += code_map[element]
+
+ return code
+
+
+def get_data_generator_formula(wkfl_type, code, species):
+ if wkfl_type == "gillespy":
+ func_map = {"t":species, "sdr":"mean", "sd":"sdev", "r":"mean"}
+
+ if code == "sdr_lb":
+ formula = "{0}({1}) - {2}({1})".format(func_map["r"], species, func_map["sd"])
+ elif code == "sdr_ub":
+ formula = "{0}({1}) + {2}({1})".format(func_map["r"], species, func_map["sd"])
+ elif code == "t":
+ formula = func_map[code]
+ else:
+ formula = "{0}({1})".format(func_map[code], species)
+ elif wkfl_type == "parameterSweep":
+ func_map = {"n":"min", "x":"max", "a":"mean", "v":"variance", "f":"final"}
+
+ if "_" in code:
+ code, err_code = code.split("_")
+ else:
+ err_code = None
+
+ mapper_code = code[:1]
+ reducer_code = code[1:]
+
+ _formula = "{0}({1})".format(func_map[mapper_code], species)
+ if reducer_code:
+ formula = "{0}({1})".format(func_map[reducer_code], _formula)
+ else:
+ formula = _formula
+
+ if err_code is not None and err_code == "lb":
+ formula += "- sdev({0})".format(_formula)
+ elif err_code is not None and err_code == "ub":
+ formula += "+ sdev({0})".format(_formula)
+
+ return formula
+
+
+def create_default_data_generators(sedml_doc, mdl, info, wkfl_settings, task_id):
+ list_of_dgs = []
+ error_dgs = []
+ if info['type'] == "gillespy":
+ species = list(map(lambda specie: specie['name'], mdl['species']))
+ else:
+ species = [wkfl_settings['parameterSweepSettings']['speciesOfInterest']['name']]
+ code = get_data_generator_code(info['type'], settings=wkfl_settings)
+ for specie in species:
+ target = "/sbml:sbml/sbml:model/sbml:listOfSpecies/sbml:species[@id='{0}']".format(specie)
+ if info['type'] == "gillespy":
+ data_gen = create_data_generator(sedml_doc, specie, task_id, code="t", target=target)
+ else:
+ formula = get_data_generator_formula(info['type'], code, specie)
+ data_gen = create_data_generator(sedml_doc, specie, task_id, code=code,
+ formula=formula, target=target)
+ if wkfl_settings['parameterSweepSettings']['is1D']:
+ # create the data generators for the error bars in 1D parameter sweeps
+ error_dgs.extend(create_error_data_generators(sedml_doc, info['type'], code,
+ specie, task_id, target))
+
+ list_of_dgs.append(data_gen)
+
+ return list_of_dgs, error_dgs
+
+
+def create_data_generators(sedml_doc, info, outputs, task_id, is_1d=False):
+ for output in outputs:
+ list_of_dgs = []
+ code = get_data_generator_code(info['type'], output['key'])
+ for species in output['species']:
+ formula = get_data_generator_formula(info['type'], code, species)
+ target = ("/sbml:sbml/sbml:model/sbml:listOfSpecies/sbml:species[@id='{0}']"
+ .format(species))
+ list_of_dgs.append(create_data_generator(sedml_doc, species, task_id, code=code,
+ formula=formula, target=target))
+ if code == "sdr":
+ lb_formula = get_data_generator_formula(info['type'], code+"_lb", species)
+ ub_formula = get_data_generator_formula(info['type'], code+"_ub", species)
+ list_of_dgs.append(create_data_generator(sedml_doc, species, task_id,
+ code=code+"_lb", formula=lb_formula,
+ target=target))
+ list_of_dgs.append(create_data_generator(sedml_doc, species, task_id,
+ code=code+"_ub", formula=ub_formula,
+ target=target))
+ elif info['type'] == "parameterSweep" and is_1d:
+ # create the data generators for the error bars in 1D parameter sweeps
+ output['error_dgs'] = create_error_data_generators(sedml_doc, info['type'],
+ code, species, task_id,
+ target)
+ output['data_generators'] = list_of_dgs
+
+
+def create_error_data_generators(sedml_doc, wkfl_type, code, species, task, target):
+ xle_formula = get_data_generator_formula(wkfl_type, code+"_lb", species)
+ xue_formula = get_data_generator_formula(wkfl_type, code+"_ub", species)
+ xle_dg = create_data_generator(sedml_doc, species, task, code=code+"_lb",
+ formula=xle_formula, target=target)
+ xue_dg = create_data_generator(sedml_doc, species, task, code=code+"_ub",
+ formula=xue_formula, target=target)
+
+ return [xle_dg, xue_dg]
+
+
+def create_data_generator(sedml_doc, name, task_id, code=None,
+ formula=None, symbol=None, target=None):
+ index = sedml_doc.getNumSimulations()
+ dg_id = name if code is None else "{0}_{1}".format(name, code)
+ dg_id += str(index)
+
+ if not doc_has_data_generator(sedml_doc, dg_id):
+ if formula is None:
+ formula = name
+ if symbol is None and target is None:
+ raise StochSSExportCombineError("You must have a 'symbol' or a 'target' \
+ for data generators")
+ if symbol is not None and target is not None:
+ raise StochSSExportCombineError("You cannot have a 'symbol' and a 'target' \
+ in a data generators")
+
+ # create the Sed-ML data generator
+ sedml_dg = sedml_doc.createDataGenerator()
+ sedml_dg.setId(dg_id)
+ sedml_dg.setName(name)
+ sedml_dg.setMath(libsedml.parseFormula(formula))
+ # create the Sed-ML data generator variable(s)
+ dg_var = sedml_dg.createVariable()
+ dg_var.setId(name)
+ dg_var.setName(name)
+ dg_var.setTaskReference(task_id)
+ if target is None:
+ dg_var.setSymbol(symbol)
+ else:
+ dg_var.setTarget(target)
+
+ return dg_id
+
+
+def doc_has_data_generator(sedml_doc, dg_id):
+ list_of_dgs = sedml_doc.getListOfDataGenerators()
+ list_of_dgs = list(map(lambda dg: dg.getId(), list_of_dgs))
+
+ return dg_id in list_of_dgs
+
+
+def create_default_outputs(sedml_doc, index, list_of_dgs, error_dgs=None, x_ref="time"):
+ plot = sedml_doc.createPlot2D()
+ plot.setId("p{0}".format(index))
+ for data_gen in list_of_dgs:
+ create_plot2d_curve(plot, data_gen, x_ref=x_ref, error_dgs=error_dgs)
+ plot.setLegend(True)
+
+
+def create_saved_outputs(sedml_doc, outputs, index, x_ref="time"):
+ for i, output in enumerate(outputs):
+ plot = sedml_doc.createPlot2D()
+ plot.setId("p{0}".format(index + i))
+ if "title" in output.keys():
+ plot.setName(output['title'])
+ for data_gen in output['data_generators']:
+ if 'error_dgs' in output.keys():
+ create_plot2d_curve(plot, data_gen, x_ref=x_ref,
+ error_dgs=output['error_dgs'])
+ else:
+ create_plot2d_curve(plot, data_gen, x_ref=x_ref)
+ plot.setLegend(True)
+
+
+def create_plot2d_curve(plot, y_ref, x_ref="time", error_dgs=None):
+ curve_id = y_ref.split('_')[0]
+ species = curve_id
+
+ if y_ref.endswith("lb"):
+ curve_id += "_lb"
+ elif y_ref.endswith("ub"):
+ curve_id += "_ub"
+
+ curve = plot.createCurve()
+ curve.setId(curve_id)
+ curve.setName(species)
+ curve.setLogX(False)
+ curve.setLogY(False)
+ curve.setXDataReference(x_ref)
+ curve.setYDataReference(y_ref)
+
+ if error_dgs is not None:
+ curve.setYErrorLower(error_dgs[0])
+ curve.setYErrorUpper(error_dgs[1])
+
+
+def create_default_3d_outputs(sedml_doc, index, list_of_dgs):
+ plot = sedml_doc.createPlot3D()
+ plot.setId("p{0}".format(index))
+ plot.setLegend(True)
+ for data_gen in list_of_dgs:
+ create_plot3d_surface(plot, "p1range", "p2range", data_gen)
+
+
+def create_saved_3d_outputs(sedml_doc, outputs, index):
+ for i, output in enumerate(outputs):
+ plot = sedml_doc.createPlot3D()
+ plot.setId("p{0}".format(index + i))
+ if "title" in output.keys():
+ plot.setName(output['title'])
+ for data_gen in output['data_generators']:
+ create_plot3d_surface(plot, "p1range", "p2range", data_gen)
+
+
+def create_plot3d_surface(plot, x_ref, y_ref, z_ref):
+ surface_id = z_ref.split('_')[0]
+
+ surface = plot.createSurface()
+ surface.setId(surface_id)
+ surface.setName(surface_id)
+ surface.setLogX(False)
+ surface.setLogY(False)
+ surface.setLogZ(False)
+ surface.setXDataReference(x_ref)
+ surface.setYDataReference(y_ref)
+ surface.setZDataReference(z_ref)
+ surface.setStyle("heatmap")
diff --git a/stochss/handlers/util/convert_to_model_inference_notebook.py b/stochss/handlers/util/convert_to_model_inference_notebook.py
index ba67e24277..e56200e7c7 100644
--- a/stochss/handlers/util/convert_to_model_inference_notebook.py
+++ b/stochss/handlers/util/convert_to_model_inference_notebook.py
@@ -1,43 +1,74 @@
#!/usr/bin/env python3
import json
+from os import path
+from json.decoder import JSONDecodeError
+import traceback
+import string
import nbformat
from nbformat import v4 as nbf
-from os import path
-from .rename import get_unique_file_name
+from .rename import get_unique_file_name, get_file_name
from .run_model import ModelFactory
-from json.decoder import JSONDecodeError
from .stochss_errors import ModelNotFoundError, ModelNotJSONFormatError, JSONFileNotModelError
# imports for modal notebook
-from .generate_notebook_cells import generate_imports_cell, generate_model_cell, generate_configure_simulation_cell
+from .generate_notebook_cells import generate_imports_cell, generate_model_cell, \
+ generate_configure_simulation_cell
# imports for model inference workflow
-from .generate_notebook_cells import generate_mdl_inf_simulator_cell, generate_mdl_inf_prior_cell, generate_mdl_inf_fixed_data_cell, generate_mdl_inf_reshape_data_cell
-from .generate_notebook_cells import generate_mdl_inf_summary_stats_cell, generate_mdl_inf_import_cell, get_algorithm
-from gillespy2.solvers.auto.ssa_solver import get_best_ssa_solver
+from .generate_notebook_cells import generate_mdl_inf_simulator_cell, generate_mdl_inf_prior_cell, \
+ generate_mdl_inf_fixed_data_cell, \
+ generate_mdl_inf_reshape_data_cell
+from .generate_notebook_cells import generate_mdl_inf_summary_stats_cell, \
+ generate_mdl_inf_import_cell, \
+ get_algorithm
+
+
+def get_class_name(name):
+ name = name.replace(" ", "")
-def convert_to_mdl_inference_nb(model_path, name=None, settings=None):
+ for char in string.punctuation:
+ if char in name:
+ name = name.replace(char, "")
+
+ leading_char = name[0]
+ if leading_char in string.digits:
+ name = "M{}".format(name)
+ elif leading_char in string.ascii_lowercase:
+ name = name.replace(leading_char, leading_char.upper(), 1)
+
+ return name
+
+
+def convert_to_mdl_inference_nb(model_path, name=None, settings=None, dest_path=None):
user_dir = "/home/jovyan"
- full_path = path.join(user_dir,model_path)
+ full_path = path.join(user_dir, model_path)
file = full_path.split('/').pop()
if name is None:
- name = file.split('.')[0].replace('-', '_')
- dest_path = model_path.split(file)[0]
-
+ name = get_file_name(file)
+ class_name = get_class_name(name)
+ if dest_path is None:
+ dest_path = full_path.split(file)[0]
+
# Collect .mdl Data
try:
with open(full_path, 'r') as json_file:
json_data = json.load(json_file)
json_data['name'] = name
except FileNotFoundError as err:
- raise ModelNotFoundError('Could not find model file: ' + str(err))
+ raise ModelNotFoundError('Could not find model file: ' + str(err), traceback.format_exc())
except JSONDecodeError as err:
- raise ModelNotJSONFormatError("The model is not JSON decodable: "+str(err))
+ raise ModelNotJSONFormatError("The model is not JSON decodable: "+str(err),
+ traceback.format_exc())
- is_ode = json_data['defaultMode'] == "continuous" if settings is None else settings['simulationSettings']['algorithm'] == "ODE"
+ is_ode = (json_data['defaultMode'] == "continuous"
+ if settings is None else settings['simulationSettings']['algorithm'] == "ODE")
gillespy2_model = ModelFactory(json_data, is_ode).model
- is_ssa_c = gillespy2_model.get_best_solver().name == "VariableSSACSolver"
+ if settings is None or settings['simulationSettings']['isAutomatic']:
+ algorithm, solv_name = get_algorithm(gillespy2_model)
+ else:
+ algorithm, solv_name = get_algorithm(gillespy2_model,
+ algorithm=settings['simulationSettings']['algorithm'])
# Create new notebook
cells = []
@@ -45,18 +76,25 @@ def convert_to_mdl_inference_nb(model_path, name=None, settings=None):
cells.append(nbf.new_markdown_cell('# {0}'.format(name)))
try:
# Create imports cell
- import_cell = generate_imports_cell(json_data, gillespy2_model) if settings is None else generate_imports_cell(json_data, gillespy2_model, settings=settings['simulationSettings'])
+ if settings is None:
+ import_cell = generate_imports_cell(json_data, algorithm, solv_name)
+ config_cell = generate_configure_simulation_cell(json_data, algorithm,
+ solv_name, is_mdl_inf=True)
+ else:
+ import_cell = generate_imports_cell(json_data, algorithm, solv_name,
+ settings=settings['simulationSettings'])
+ config_cell = generate_configure_simulation_cell(json_data, algorithm,
+ solv_name, is_mdl_inf=True,
+ settings=settings['simulationSettings'])
cells.append(nbf.new_code_cell(import_cell))
# Create Model Cell
- cells.append(nbf.new_code_cell(generate_model_cell(json_data, name)))
+ cells.append(nbf.new_code_cell(generate_model_cell(json_data, class_name)))
# Instantiate Model Cell
- cells.append(nbf.new_code_cell('model = {0}()'.format(name)))
- algorithm = get_algorithm(gillespy2_model) if settings is None or settings['simulationSettings']['isAutomatic'] else settings['simulationSettings']['algorithm']
- if settings is not None and not settings['isAutomatic'] and algorithm == "SSA" and is_ssa_c:
+ cells.append(nbf.new_code_cell('model = {0}()'.format(class_name)))
+ if settings is not None and not settings['isAutomatic'] and solv_name == "SSACSolver":
# Instantiate Solver Cell
cells.append(nbf.new_code_cell('solver = SSACSolver(model=model)'))
# Configure Simulation Cell
- config_cell = generate_configure_simulation_cell(json_data, gillespy2_model, is_mdl_inf=True, show_labels=False) if settings is None else generate_configure_simulation_cell(json_data, gillespy2_model, is_mdl_inf=True, show_labels=False, settings=settings['simulationSettings'])
cells.append(nbf.new_code_cell(config_cell))
# Create model inference import cell
cells.append(nbf.new_code_cell(generate_mdl_inf_import_cell()))
@@ -73,21 +111,26 @@ def convert_to_mdl_inference_nb(model_path, name=None, settings=None):
# Create local dask client cell
cells.append(nbf.new_code_cell("c = Client()\nc"))
# Create compute fixed mean cell
- cells.append(nbf.new_code_cell("# First compute the fixed(observed) mean\nabc.compute_fixed_mean(chunk_size=2)"))
+ cfmc = "# First compute the fixed(observed) mean\nabc.compute_fixed_mean(chunk_size=2)"
+ cells.append(nbf.new_code_cell(cfmc))
# Create run model inference cell
- cells.append(nbf.new_code_cell("res = abc.infer(num_samples=100, batch_size=10, chunk_size=2)"))
+ rmic = "res = abc.infer(num_samples=100, batch_size=10, chunk_size=2)"
+ cells.append(nbf.new_code_cell(rmic))
# Create absolute error cell
- cells.append(nbf.new_code_cell('mae_inference = mean_absolute_error(bound, abc.results["inferred_parameters"])'))
+ aec = 'mae_inference = mean_absolute_error(bound, abc.results["inferred_parameters"])'
+ cells.append(nbf.new_code_cell(aec))
except KeyError as err:
- raise JSONFileNotModelError("The JSON file is not formatted as a StochSS model "+str(err))
+ raise JSONFileNotModelError("The JSON file is not formatted as a StochSS model "+str(err),
+ traceback.format_exc())
# Append cells to worksheet
- nb = nbf.new_notebook(cells=cells)
+ notebook = nbf.new_notebook(cells=cells)
# Open and write to file
dest_file = get_unique_file_name('{}SciopeMI.ipynb'.format(name), dest_path)[0]
- with open(dest_file, 'w') as f:
- nbformat.write(nb, f, version=4)
- f.close()
+ with open(dest_file, 'w') as nb_file:
+ nbformat.write(notebook, nb_file, version=4)
+ nb_file.close()
- return {"Message":'{0} successfully created'.format(dest_file),"FilePath":dest_file.replace(user_dir+'/', ""),"File":dest_file.split('/').pop()}
\ No newline at end of file
+ return {"Message":'{0} successfully created'.format(dest_file),
+ "FilePath":dest_file.replace(user_dir+'/', ""), "File":dest_file.split('/').pop()}
diff --git a/stochss/handlers/util/convert_to_notebook.py b/stochss/handlers/util/convert_to_notebook.py
index ac6927f1f6..18f6daa039 100644
--- a/stochss/handlers/util/convert_to_notebook.py
+++ b/stochss/handlers/util/convert_to_notebook.py
@@ -1,25 +1,45 @@
#!/usr/bin/env python3
import json
-from json.decoder import JSONDecodeError
import nbformat
-from nbformat import v4 as nbf
+import traceback
+import string
+
from os import path
+from nbformat import v4 as nbf
+from json.decoder import JSONDecodeError
from .run_model import ModelFactory
-from .rename import get_unique_file_name
+from .rename import get_unique_file_name, get_file_name
from .generate_notebook_cells import generate_imports_cell, generate_model_cell, generate_run_cell, generate_configure_simulation_cell, get_algorithm
from .stochss_errors import ModelNotFoundError, ModelNotJSONFormatError, JSONFileNotModelError
-from gillespy2.solvers.auto.ssa_solver import get_best_ssa_solver
-def convert_to_notebook(_model_path, name=None, settings=None):
+def get_class_name(name):
+ name = name.replace(" ", "")
+
+ for char in string.punctuation:
+ if char in name:
+ name = name.replace(char, "")
+
+ leading_char = name[0]
+ if leading_char in string.digits:
+ name = "M{}".format(name)
+ elif leading_char in string.ascii_lowercase:
+ name = name.replace(leading_char, leading_char.upper(), 1)
+
+ return name
+
+
+def convert_to_notebook(_model_path, name=None, settings=None, dest_path=None):
user_dir = '/home/jovyan'
model_path = path.join(user_dir,_model_path)
file = model_path.split('/').pop()
if name is None:
- name = file.split('.')[0].replace('-', '_')
- dest_path = model_path.split(file)[0]
+ name = get_file_name(file)
+ class_name = get_class_name(name)
+ if dest_path is None:
+ dest_path = model_path.split(file)[0]
# Collect .mdl Data
try:
@@ -27,38 +47,44 @@ def convert_to_notebook(_model_path, name=None, settings=None):
json_data = json.loads(json_file.read())
json_data['name'] = name
except FileNotFoundError as e:
- raise ModelNotFoundError('Could not read the file: ' + str(e))
+ raise ModelNotFoundError('Could not read the file: ' + str(e), traceback.format_exc())
except JSONDecodeError as e:
- raise ModelNotJSONFormatError('The data is not JSON decobable: ' + str(e))
+ raise ModelNotJSONFormatError('The data is not JSON decobable: ' + str(e), traceback.format_exc())
is_ode = json_data['defaultMode'] == "continuous" if settings is None else settings['simulationSettings']['algorithm'] == "ODE"
gillespy2_model = ModelFactory(json_data, is_ode).model
- is_ssa_c = gillespy2_model.get_best_solver().name == "VariableSSACSolver"
-
+ if settings is None or settings['simulationSettings']['isAutomatic']:
+ algorithm, solv_name = get_algorithm(gillespy2_model)
+ else:
+ algorithm, solv_name = get_algorithm(gillespy2_model, algorithm=settings['simulationSettings']['algorithm'])
+
# Create new notebook
cells = []
# Create Markdown Cell with name
cells.append(nbf.new_markdown_cell('# {0}'.format(name)))
try:
+ if settings is None:
+ import_cell = generate_imports_cell(json_data, algorithm, solv_name)
+ config_cell = generate_configure_simulation_cell(json_data, algorithm, solv_name)
+ else:
+ import_cell = generate_imports_cell(json_data, algorithm, solv_name, settings=settings['simulationSettings'])
+ config_cell = generate_configure_simulation_cell(json_data, algorithm, solv_name, settings=settings['simulationSettings'])
# Create imports cell
- import_cell = generate_imports_cell(json_data, gillespy2_model) if settings is None else generate_imports_cell(json_data, gillespy2_model, settings=settings['simulationSettings'])
cells.append(nbf.new_code_cell(import_cell))
# Create Model Cell
- cells.append(nbf.new_code_cell(generate_model_cell(json_data, name)))
+ cells.append(nbf.new_code_cell(generate_model_cell(json_data, class_name)))
# Instantiate Model Cell
- cells.append(nbf.new_code_cell('model = {0}()'.format(name)))
- algorithm = get_algorithm(gillespy2_model) if settings is None or settings['simulationSettings']['isAutomatic'] else settings['simulationSettings']['algorithm']
- if settings is not None and not settings['simulationSettings']['isAutomatic'] and algorithm == "SSA" and is_ssa_c:
+ cells.append(nbf.new_code_cell('model = {0}()'.format(class_name)))
+ if settings is not None and not settings['simulationSettings']['isAutomatic'] and solv_name == "SSACSolver":
# Instantiate Solver Cell
cells.append(nbf.new_code_cell('solver = SSACSolver(model=model)'))
# Configure Simulation Cell
- config_cell = generate_configure_simulation_cell(json_data, gillespy2_model) if settings is None else generate_configure_simulation_cell(json_data, gillespy2_model, settings=settings['simulationSettings'])
cells.append(nbf.new_code_cell(config_cell))
# Model Run Cell
cells.append(nbf.new_code_cell(generate_run_cell(json_data)))
except KeyError as err:
- raise JSONFileNotModelError("Could not convert your model: " + str(err))
+ raise JSONFileNotModelError("Could not convert your model: " + str(err), traceback.format_exc())
# Plotting Cell
cells.append(nbf.new_code_cell('results.plotplotly()'))
diff --git a/stochss/handlers/util/convert_to_sbml.py b/stochss/handlers/util/convert_to_sbml.py
index b82006c90f..ecfa86f012 100644
--- a/stochss/handlers/util/convert_to_sbml.py
+++ b/stochss/handlers/util/convert_to_sbml.py
@@ -1,110 +1,122 @@
#!/usr/bin/env python3
-import libsbml
import os
+import ast
import json
+import traceback
+
from json.decoder import JSONDecodeError
-from .rename import get_unique_file_name
-from .stochss_errors import ModelNotFoundError, ModelNotJSONFormatError, JSONFileNotModelError
+import libsbml
+from .rename import get_unique_file_name, get_file_name
+from .stochss_errors import ModelNotFoundError, ModelNotJSONFormatError, \
+ JSONFileNotModelError, FileNotSBMLFormatError, \
+ ImporperMathMLFormatError
-def convert_to_sbml(_path):
+
+def convert_to_sbml(_path, write_to_file=True):
user_dir = "/home/jovyan"
-
+
path = os.path.join(user_dir, _path)
model_file = path.split('/').pop()
- model_name = model_file.split('.')[0]
+ model_name = get_file_name(model_file)
sbml_file = model_name + ".sbml"
- sbml_path, changed = get_unique_file_name(sbml_file, path.split(model_file)[0])
+ sbml_path, changed = get_unique_file_name(sbml_file, path.split(model_file)[0])
if changed:
sbml_file = sbml_path.split('/').pop()
-
+
model = get_stochss_model(path)
model['name'] = model_name
try:
- document = libsbml.SBMLDocument(3,2)
- except ValueError:
- raise SystemExit("Could not create SBML object.")
+ document = libsbml.SBMLDocument(3, 2)
+ except ValueError as err:
+ raise FileNotSBMLFormatError("Could not create SBML object."+str(err),
+ traceback.format_exc())
sbml_model = document.createModel()
sbml_model.setName(str(model['name']))
- c = sbml_model.createCompartment()
- c.setId('c')
- c.setConstant(True)
- c.setSize(1)
- c.setSpatialDimensions(3)
+ compartment = sbml_model.createCompartment()
+ compartment.setId('c')
+ compartment.setConstant(True)
+ compartment.setSize(1)
+ compartment.setSpatialDimensions(3)
try:
- species = model['species']
- convert_species(sbml_model, species)
+ convert_species(sbml_model, model['species'])
- parameters = model['parameters']
- convert_parameters(sbml_model, parameters)
+ convert_parameters(sbml_model, model['parameters'])
- reactions = model['reactions']
- convert_reactions(sbml_model, reactions)
+ convert_reactions(sbml_model, model['reactions'])
- events = model['eventsCollection']
- convert_events(sbml_model, events)
+ convert_events(sbml_model, model['eventsCollection'])
- rate_rules = list(filter(lambda r: is_valid_rate_rule(r), model['rules']))
+ rate_rules = get_rate_rules(model['rules'])
convert_rate_rules(sbml_model, rate_rules)
- assignment_rules = list(filter(lambda r: is_valid_assignment_rule(r), model['rules']))
+ assignment_rules = get_assignment_rules(model['rules'])
convert_assignment_rules(sbml_model, assignment_rules)
- function_definitions = model['functionDefinitions']
- convert_function_definitions(sbml_model, function_definitions)
+ convert_function_definitions(sbml_model, model['functionDefinitions'])
except KeyError as err:
- raise JSONFileNotModelError("Could not convert your model: " + str(err))
+ raise JSONFileNotModelError("Could not convert your model: " + str(err),
+ traceback.format_exc())
+
+ if write_to_file:
+ write_sbml_to_file(sbml_path, document)
- write_sbml_to_file(sbml_path, document)
+ return {"Message":"{0} was successfully converted to {1}".format(model_file, sbml_file),
+ "File":sbml_file}
+ return document
- return {"Message":"{0} was successfully converted to {1}".format(model_file, sbml_file),"File":sbml_file}
-
-def is_valid_rate_rule(rule):
- if rule['type'] == "Rate Rule" and not rule['expression'] == "":
- return rule
+def get_rate_rules(rules):
+ rate_rules = []
+ for rule in rules:
+ if rule['type'] == "Rate Rule" and not rule['expression'] == "":
+ rate_rules.append(rule)
+ return rate_rules
-def is_valid_assignment_rule(rule):
- if rule['type'] == "Assignment Rule" and not rule['expression'] == "":
- return rule
+def get_assignment_rules(rules):
+ assignment_rules = []
+ for rule in rules:
+ if rule['type'] == "Assignment Rule" and not rule['expression'] == "":
+ assignment_rules.append(rule)
+ return assignment_rules
def convert_species(sbml_model, species):
for specie in species:
- s = sbml_model.createSpecies()
- s.initDefaults()
- s.setCompartment('c')
- s.setId(specie['name'])
- s.setInitialAmount(specie['value'])
-
+ spec = sbml_model.createSpecies()
+ spec.initDefaults()
+ spec.setCompartment('c')
+ spec.setId(specie['name'])
+ spec.setInitialAmount(specie['value'])
+
def convert_parameters(sbml_model, parameters):
for parameter in parameters:
- p = sbml_model.createParameter()
- p.initDefaults()
- p.setId(parameter['name'])
- p.setValue(eval(parameter['expression']))
-
+ param = sbml_model.createParameter()
+ param.initDefaults()
+ param.setId(parameter['name'])
+ param.setValue(ast.literal_eval(parameter['expression']))
+
def convert_reactions(sbml_model, reactions):
for reaction in reactions:
- r = sbml_model.createReaction()
- r.initDefaults()
- r.setId(reaction['name'])
-
+ reac = sbml_model.createReaction()
+ reac.initDefaults()
+ reac.setId(reaction['name'])
+
_reactants = reaction['reactants']
- reactants = convert_reactants(r, _reactants)
+ reactants = convert_reactants(reac, _reactants)
_products = reaction['products']
- products = convert_products(r, _products)
+ convert_products(reac, _products)
- create_equation(r, reaction, reactants)
+ create_equation(reac, reaction, reactants)
def convert_reactants(sbml_reaction, _reactants):
@@ -117,10 +129,10 @@ def convert_reactants(sbml_reaction, _reactants):
reactants[specie['name']] += reactant['ratio']
for name, ratio in reactants.items():
- r = sbml_reaction.createReactant()
- r.setConstant(True)
- r.setSpecies(name)
- r.setStoichiometry(ratio)
+ react = sbml_reaction.createReactant()
+ react.setConstant(True)
+ react.setSpecies(name)
+ react.setStoichiometry(ratio)
return reactants
@@ -135,16 +147,14 @@ def convert_products(sbml_reaction, _products):
products[specie['name']] += product['ratio']
for name, ratio in products.items():
- p = sbml_reaction.createProduct()
- p.setConstant(True)
- p.setSpecies(name)
- p.setStoichiometry(ratio)
-
- return products
+ prod = sbml_reaction.createProduct()
+ prod.setConstant(True)
+ prod.setSpecies(name)
+ prod.setStoichiometry(ratio)
def create_equation(sbml_reaction, reaction, reactants):
- k = sbml_reaction.createKineticLaw()
+ kin_law = sbml_reaction.createKineticLaw()
rate = reaction['rate']
if not reaction['propensity']:
if len(reactants) == 0:
@@ -162,98 +172,115 @@ def create_equation(sbml_reaction, reaction, reactants):
equation = reaction['propensity'].replace("and", "&&").replace("or", "||")
try:
- k.setMath(libsbml.parseL3Formula(equation))
- except Exception as error:
- raise Exception('libsbml threw an error when parsing rate equation "{0}" for reaction "{1}"'.format(equation, reaction['name']))
+ kin_law.setMath(libsbml.parseL3Formula(equation))
+ except Exception:
+ raise ImporperMathMLFormatError('libsbml threw an error when parsing rate equation "{0}" \
+ for reaction "{1}"'.format(equation, reaction['name']), traceback.format_exc())
def convert_events(sbml_model, events):
for event in events:
- e = sbml_model.createEvent()
- e.setId(event['name'])
- e.setUseValuesFromTriggerTime(event['useValuesFromTriggerTime'])
+ evt = sbml_model.createEvent()
+ evt.setId(event['name'])
+ evt.setUseValuesFromTriggerTime(event['useValuesFromTriggerTime'])
if event['delay']:
delay = event['delay'].replace('and', '&&').replace('or', '||')
- d = e.createDelay()
+ dly = evt.createDelay()
try:
- d.setMath(libsbml.parseL3Formula(delay))
- except Exception as error:
- raise Exception('libsbml threw an error when parsing delay equation "{0}" for event "{1}"'.format(delay, event['name']))
+ dly.setMath(libsbml.parseL3Formula(delay))
+ except Exception:
+ raise ImporperMathMLFormatError('libsbml threw an error when parsing \
+ delay equation "{0}" for event "{1}"'.format(delay, event['name']),
+ traceback.format_exc())
priority = event['priority'].replace('and', '&&').replace('or', '||')
- p = e.createPriority()
+ prior = evt.createPriority()
try:
- p.setMath(libsbml.parseL3Formula(priority))
- except Exception as error:
- raise Exception('libsbml threw an error when parsing priority equation "{0}" for event "{1}"'.format(priority, event['name']))
-
- trigger_expression = event['triggerExpression'].replace('and','&&').replace('or','||')
- t = e.createTrigger()
+ prior.setMath(libsbml.parseL3Formula(priority))
+ except Exception:
+ raise ImporperMathMLFormatError('libsbml threw an error when parsing priority \
+ equation "{0}" for event "{1}"'.format(priority, event['name']),
+ traceback.format_exc())
+
+ trigger_expression = event['triggerExpression'].replace('and', '&&').replace('or', '||')
+ trig = evt.createTrigger()
try:
- t.setMath(libsbml.parseL3Formula(trigger_expression))
- except Exception as error:
- raise Exception('libsbml threw an error when parsing trigger equation "{0}" for event "{1}"'.format(trigger_expression, event['name']))
- t.setInitialValue(event['initialValue'])
- t.setPersistent(event['persistent'])
+ trig.setMath(libsbml.parseL3Formula(trigger_expression))
+ except Exception:
+ raise ImporperMathMLFormatError('libsbml threw an error when parsing trigger \
+ equation "{0}" for event "{1}"'.format(trigger_expression, event['name']),
+ traceback.format_exc())
+ trig.setInitialValue(event['initialValue'])
+ trig.setPersistent(event['persistent'])
assignments = event['eventAssignments']
- convert_event_assignments(event['name'], e, assignments)
+ convert_event_assignments(event['name'], evt, assignments)
def convert_event_assignments(event_name, sbml_event, assignments):
for assignment in assignments:
- a = sbml_event.createEventAssignment()
+ assign = sbml_event.createEventAssignment()
variable = assignment['variable']
- a.setVariable(variable['name'])
+ assign.setVariable(variable['name'])
- expression = assignment['expression'].replace('and','&&').replace('or','||')
+ expression = assignment['expression'].replace('and', '&&').replace('or', '||')
try:
- a.setMath(libsbml.parseL3Formula(expression))
- except Exception as error:
- raise Exception('libsbml threw an error when parsing assignment equation "{0}" for event "{1}"'.format(assignment, event_name))
+ assign.setMath(libsbml.parseL3Formula(expression))
+ except Exception:
+ raise ImporperMathMLFormatError('libsbml threw an error when parsing assignment \
+ equation "{0}" for event "{1}"'.format(assignment, event_name),
+ traceback.format_exc())
def convert_rate_rules(sbml_model, rules):
for rule in rules:
variable = rule['variable']
- r = sbml_model.createRateRule()
- r.setId(rule['name'])
- r.setVariable(variable['name'])
+ r_rule = sbml_model.createRateRule()
+ r_rule.setId(rule['name'])
+ r_rule.setVariable(variable['name'])
equation = rule['expression'].replace("and", "&&").replace("or", "||")
-
+
try:
- r.setMath(libsbml.parseL3Formula(equation))
- except Exception as error:
- raise Exception('libsbml threw an error when parsing rate equation "{0}" for rate rule "{1}"'.format(equation, rule['name']))
+ r_rule.setMath(libsbml.parseL3Formula(equation))
+ except Exception:
+ raise ImporperMathMLFormatError('libsbml threw an error when parsing rate \
+ equation "{0}" for rate rule "{1}"'.format(equation, rule['name']),
+ traceback.format_exc())
def convert_assignment_rules(sbml_model, rules):
for rule in rules:
variable = rule['variable']
- r = sbml_model.createAssignmentRule()
- r.setId(rule['name'])
- r.setVariable(variable['name'])
+ a_rule = sbml_model.createAssignmentRule()
+ a_rule.setId(rule['name'])
+ a_rule.setVariable(variable['name'])
equation = rule['expression'].replace("and", "&&").replace("or", "||")
try:
- r.setMath(libsbml.parseL3Formula(equation))
+ a_rule.setMath(libsbml.parseL3Formula(equation))
except:
- raise Exception('libsbml threw an error when parsing assignment equation "{0}" for assignment rule "{1}"'.format(equation, rule['name']))
+ raise ImporperMathMLFormatError('libsbml threw an error when parsing assignment \
+ equation "{0}" for assignment rule "{1}"'.format(equation, rule['name']),
+ traceback.format_exc())
def convert_function_definitions(sbml_model, function_definitions):
for function_definition in function_definitions:
- fd = sbml_model.createFunctionDefinition()
- fd.setId(function_definition['name'])
- function = function_definition['function'].replace("and", "&&").replace("or", "||").replace("**", "^")
+ func_def = sbml_model.createFunctionDefinition()
+ func_def.setId(function_definition['name'])
+ function = (function_definition['function']
+ .replace("and", "&&").replace("or", "||").replace("**", "^"))
try:
node = libsbml.parseL3Formula(function)
- fd.setMath(node)
+ func_def.setMath(node)
except:
- raise Exception('libsbml threw an error when parsing function "{0}" for function definition "{1}"'.format(function, function_definition['name']))
+ raise ImporperMathMLFormatError('libsbml threw an error when parsing function "{0}" \
+ for function definition "{1}"'.format(function,
+ function_definition['name']),
+ traceback.format_exc())
def write_sbml_to_file(sbml_path, sbml_doc):
@@ -269,8 +296,7 @@ def get_stochss_model(path):
model = json.loads(model_file.read())
return model
except FileNotFoundError as err:
- raise ModelNotFoundError("Could not finf model file: " + str(err))
+ raise ModelNotFoundError("Could not finf model file: " + str(err), traceback.format_exc())
except JSONDecodeError as err:
- raise ModelNotJSONFormatError("The model is not JSON decodable: " + str(err))
-
-
+ raise ModelNotJSONFormatError("The model is not JSON decodable: " + str(err),
+ traceback.format_exc())
diff --git a/stochss/handlers/util/convert_to_sciope_me.py b/stochss/handlers/util/convert_to_sciope_me.py
index 328b97fb6e..e6c89154b2 100644
--- a/stochss/handlers/util/convert_to_sciope_me.py
+++ b/stochss/handlers/util/convert_to_sciope_me.py
@@ -1,22 +1,42 @@
#!/usr/bin/env python3
import json
-from json.decoder import JSONDecodeError
import nbformat
-from nbformat import v4 as nbf
+import traceback
+import string
from os import path
+from nbformat import v4 as nbf
+from json.decoder import JSONDecodeError
from .run_model import ModelFactory
-from .rename import get_unique_file_name
+from .rename import get_unique_file_name, get_file_name
from .generate_notebook_cells import *
from .stochss_errors import ModelNotFoundError, ModelNotJSONFormatError, JSONFileNotModelError
-def convert_to_sciope_me(_model_path, settings=None):
+def get_class_name(name):
+ name = name.replace(" ", "")
+
+ for char in string.punctuation:
+ if char in name:
+ name = name.replace(char, "")
+
+ leading_char = name[0]
+ if leading_char in string.digits:
+ name = "M{}".format(name)
+ elif leading_char in string.ascii_lowercase:
+ name = name.replace(leading_char, leading_char.upper(), 1)
+
+ return name
+
+
+def convert_to_sciope_me(_model_path, settings=None, dest_path=None):
user_dir = '/home/jovyan'
model_path = path.join(user_dir,_model_path)
file = model_path.split('/').pop()
- name = file.split('.')[0].replace('-', '_')
- dest_path = model_path.split(file)[0]
+ name = get_file_name(file)
+ class_name = get_class_name(name)
+ if dest_path is None:
+ dest_path = model_path.split(file)[0]
# Collect .mdl Data
try:
@@ -24,12 +44,18 @@ def convert_to_sciope_me(_model_path, settings=None):
json_data = json.loads(json_file.read())
json_data['name'] = name
except FileNotFoundError as e:
- raise ModelNotFoundError('Could not read the file: ' + str(e))
+ raise ModelNotFoundError('Could not read the file: ' + str(e), traceback.format_exc())
except JSONDecodeError as e:
- raise ModelNotJSONFormatError('The data is not JSON decobable: ' + str(e))
+ raise ModelNotJSONFormatError('The data is not JSON decobable: ' + str(e), traceback.format_exc())
is_ode = json_data['defaultMode'] == "continuous" if settings is None else settings['simulationSettings']['algorithm'] == "ODE"
gillespy2_model = ModelFactory(json_data, is_ode).model
+
+ if settings is None or settings['simulationSettings']['isAutomatic']:
+ algorithm, solv_name = get_algorithm(gillespy2_model)
+ else:
+ algorithm, solv_name = get_algorithm(gillespy2_model, algorithm=settings['simulationSettings']['algorithm'])
+
# Create new notebook
cells = []
# Create Markdown Cell with name
@@ -37,15 +63,15 @@ def convert_to_sciope_me(_model_path, settings=None):
try:
# Create imports cell
cells.append(nbf.new_code_cell(
- generate_imports_cell(json_data, gillespy2_model,
+ generate_imports_cell(json_data, algorithm, solv_name,
interactive_backend=True)))
# Create Model Cell
- cells.append(nbf.new_code_cell(generate_model_cell(json_data, name)))
+ cells.append(nbf.new_code_cell(generate_model_cell(json_data, class_name)))
# Instantiate Model Cell
- cells.append(nbf.new_code_cell('model = {0}()'.format(name)))
+ cells.append(nbf.new_code_cell('model = {0}()'.format(class_name)))
# Sciope Wrapper Cell
cells.append(nbf.new_code_cell(generate_sciope_wrapper_cell(json_data,
- gillespy2_model)))
+ algorithm, solv_name)))
# Sciope lhc Cell
cells.append(nbf.new_code_cell(generate_sciope_lhc_cell()))
# Sciope stochmet Cell
@@ -65,7 +91,7 @@ def convert_to_sciope_me(_model_path, settings=None):
# Sciope Set Labels Cell
cells.append(nbf.new_code_cell(generate_sciope_set_labels_cell()))
except KeyError as err:
- raise JSONFileNotModelError("Could not convert your model {}: {}".format(json_data, str(err)))
+ raise JSONFileNotModelError("Could not convert your model {}: {}".format(json_data, str(err)), traceback.format_exc())
# Append cells to worksheet
nb = nbf.new_notebook(cells=cells)
diff --git a/stochss/handlers/util/convert_to_smdl_mdl.py b/stochss/handlers/util/convert_to_smdl_mdl.py
index b10a07283d..214e03151f 100644
--- a/stochss/handlers/util/convert_to_smdl_mdl.py
+++ b/stochss/handlers/util/convert_to_smdl_mdl.py
@@ -2,6 +2,7 @@
import os
import json
+import traceback
from json.decoder import JSONDecodeError
from .stochss_errors import ModelNotFoundError, ModelNotJSONFormatError, JSONFileNotModelError
@@ -36,9 +37,9 @@ def get_model_data(path, to_spatial):
model_data = json.loads(model_file.read())
return model_data
except FileNotFoundError as err:
- raise ModelNotFoundError("Could not read file: " + str(err))
+ raise ModelNotFoundError("Could not read file: " + str(err), traceback.format_exc())
except JSONDecodeError as err:
- raise ModelNotJSONFormatError("The data is not JSON decobable: " + str(e))
+ raise ModelNotJSONFormatError("The data is not JSON decobable: " + str(e), traceback.format_exc())
def convert_model(path, to_spatial):
@@ -53,7 +54,7 @@ def convert_model(path, to_spatial):
try:
model_data['is_spatial'] = to_spatial
except KeyError as err:
- raise JSONFileNotModelError("Could not convert your model: " + str(err))
+ raise JSONFileNotModelError("Could not convert your model: " + str(err), traceback.format_exc())
with open(model_path, 'w') as model_file:
json.dump(model_data, model_file)
diff --git a/stochss/handlers/util/duplicate.py b/stochss/handlers/util/duplicate.py
index 833ad3f795..1ed0b388f2 100644
--- a/stochss/handlers/util/duplicate.py
+++ b/stochss/handlers/util/duplicate.py
@@ -1,9 +1,28 @@
#!/usr/bin/env python3
import os
+import traceback
from os import path
from shutil import copyfile, copytree
-from .stochss_errors import StochSSFileNotFoundError, StochSSPermissionsError
+from .stochss_errors import StochSSFileNotFoundError, StochSSPermissionsError, ModelNotFoundError
+
+
+def get_file_name(file):
+ '''
+ Get the name of a file object
+
+ Attributes
+ ----------
+ file : str
+ String representation of a file object
+ '''
+ if file.endswith('/'):
+ file = file[:-1]
+ if '/' in file:
+ file = file.split('/').pop()
+ if '.' not in file:
+ return file
+ return '.'.join(file.split('.')[:-1])
def get_unique_file_name(_path):
@@ -24,7 +43,7 @@ def get_unique_file_name(_path):
if '-copy' in file:
name = file.split('-copy')[0]
elif '.' in file:
- name = file.split(ext)[0]
+ name = ext.join(file.split(ext)[:-1])
else:
name = file
@@ -68,9 +87,9 @@ def duplicate(file_path, is_directory=False):
else:
copyfile(full_path, unique_file_path)
except FileNotFoundError as err:
- raise StochSSFileNotFoundError("Could not read the file or directory: " + str(err))
+ raise StochSSFileNotFoundError("Could not read the file or directory: " + str(err), traceback.format_exc())
except PermissionError as err:
- raise StochSSPermissionsError("You do not have permission to copy this file or directory: " + str(err))
+ raise StochSSPermissionsError("You do not have permission to copy this file or directory: " + str(err), traceback.format_exc())
original = full_path.split('/').pop()
copy = unique_file_path.split('/').pop()
@@ -81,6 +100,8 @@ def extract_wkfl_model(model_file, mdl_parent_path, wkfl):
from .rename import get_unique_file_name
# Get unique path for the new model path
+ if ".proj" in mdl_parent_path:
+ mdl_parent_path = path.dirname(mdl_parent_path)
model_path, changed = get_unique_file_name(model_file, mdl_parent_path)
if changed:
model_file = model_path.split('/').pop()
@@ -89,9 +110,9 @@ def extract_wkfl_model(model_file, mdl_parent_path, wkfl):
copyfile(wkfl.wkfl_mdl_path, model_path)
return model_file
except FileNotFoundError as err:
- raise ModelNotFoundError("Could not read the StochSS model file: " + str(err))
+ raise ModelNotFoundError("Could not read the StochSS model file: " + str(err), traceback.format_exc())
except PermissionError as err:
- raise StochSSPermissionsError("You do not have permission to copy this file or directory: " + str(err))
+ raise StochSSPermissionsError("You do not have permission to copy this file or directory: " + str(err), traceback.format_exc())
def get_wkfl_model_parent_path(wkfl_parent_path, model_only, wkfl):
@@ -144,10 +165,10 @@ def duplicate_wkfl_as_new(wkfl_path, only_model, time_stamp):
with open(path.join(full_path, 'info.json'), 'r') as info_file:
data = json.load(info_file)
except FileNotFoundError as err:
- raise StochSSFileNotFoundError("Could not read the workflow info file: " + str(err))
+ raise StochSSFileNotFoundError("Could not read the workflow info file: " + str(err), traceback.format_exc())
except JSONDecodeError as err:
- raise FileNotJSONFormatError("The workflow info file is not JSON decodable: "+str(err))
- workflows = {"gillespy":GillesPy2Workflow,"psweep":ParameterSweep}
+ raise FileNotJSONFormatError("The workflow info file is not JSON decodable: "+str(err), traceback.format_exc())
+ workflows = {"gillespy":GillesPy2Workflow,"parameterSweep":ParameterSweep}
model_path = data['source_model']
org_wkfl = workflows[data['type']](full_path, model_path)
# Get model file from wkfl info
@@ -162,7 +183,7 @@ def duplicate_wkfl_as_new(wkfl_path, only_model, time_stamp):
resp = {"message":"A copy of the model in {0} has been created".format(wkfl_path),"mdlPath":model_path,"File":model_file}
else:
# Get base name for new workflow name (current workflow name - timestamp)
- wkfl_base_name = full_path.split('/').pop().split('.')[0]
+ wkfl_base_name = get_file_name(full_path)
try:
date, time = wkfl_base_name.split('_')[-2:]
if date.isdigit() and time.isdigit():
diff --git a/stochss/handlers/util/generate_notebook_cells.py b/stochss/handlers/util/generate_notebook_cells.py
index 404434f7dc..d8dcdb8d1b 100644
--- a/stochss/handlers/util/generate_notebook_cells.py
+++ b/stochss/handlers/util/generate_notebook_cells.py
@@ -1,10 +1,8 @@
#!/usr/bin/env python3
import json
-from gillespy2.solvers.auto.ssa_solver import get_best_ssa_solver
-
-def generate_imports_cell(json_data, gillespy2_model, is_ssa_c=False,
+def generate_imports_cell(json_data, algorithm, solv_name,
settings=None, interactive_backend=False):
# Imports cell
imports = 'import numpy as np\n'
@@ -16,19 +14,18 @@ def generate_imports_cell(json_data, gillespy2_model, is_ssa_c=False,
else:
# Non-Spatial
imports += 'import gillespy2\n'
- imports += 'from gillespy2.core import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n'
- imports += 'from gillespy2.core.events import EventAssignment, EventTrigger, Event\n'
- algorithm = get_algorithm(gillespy2_model, is_ssa_c) if settings is None or settings['isAutomatic'] else get_algorithm(gillespy2_model, is_ssa_c, algorithm=settings['algorithm'])
- if algorithm == "SSA" and get_best_ssa_solver().name == "SSACSolver":
- ssa = 'from gillespy2.solvers.cpp.ssa_c_solver import SSACSolver\n'
+ imports += 'from gillespy2 import Model, Species, Reaction, Parameter, RateRule, AssignmentRule, FunctionDefinition\n'
+ imports += 'from gillespy2 import EventAssignment, EventTrigger, Event\n'
+ if solv_name == "SSACSolver":
+ ssa = 'from gillespy2 import SSACSolver\n'
else:
ssa = '# To run a simulation using the SSA Solver simply omit the solver argument from model.run().\n'
algorithm_map = {
'SSA': ssa,
- 'V-SSA': 'from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver\n',
- 'Tau-Leaping': 'from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver\n',
- 'Hybrid-Tau-Leaping': 'from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver\n',
- 'ODE': 'from gillespy2.solvers.numpy.basic_ode_solver import BasicODESolver'
+ 'V-SSA': 'from gillespy2 import VariableSSACSolver\n',
+ 'Tau-Leaping': 'from gillespy2 import TauLeapingSolver\n',
+ 'Hybrid-Tau-Leaping': 'from gillespy2 import TauHybridSolver\n',
+ 'ODE': 'from gillespy2 import ODESolver'
}
for name, algorithm_import in algorithm_map.items():
@@ -47,7 +44,7 @@ def generate_imports_cell(json_data, gillespy2_model, is_ssa_c=False,
def create_parameter_strings(json_data, padding):
param_string = '\n' + padding + '# Parameters\n'
for param in json_data['parameters']:
- param_string += padding + 'self.add_parameter(Parameter(name="{0}", expression={1}))\n'.format(
+ param_string += padding + 'self.add_parameter(Parameter(name="{0}", expression="{1}"))\n'.format(
param['name'],
param['expression'])
return param_string
@@ -69,9 +66,15 @@ def create_reaction_strings(json_data, padding):
products = {}
# Parse Reactants/Products
for reactant in reaction['reactants']:
- reactants[reactant['specie']['name']] = reactant['ratio']
+ if reactant['specie']['name'] not in reactants.keys():
+ reactants[reactant['specie']['name']] = reactant['ratio']
+ else:
+ reactants[reactant['specie']['name']] += reactant['ratio']
for product in reaction['products']:
- products[product['specie']['name']] = product['ratio']
+ if product['specie']['name'] not in products.keys():
+ products[product['specie']['name']] = product['ratio']
+ else:
+ products[product['specie']['name']] += product['ratio']
#If custom propensity given
if reaction['reactionType'] == 'custom-propensity':
@@ -136,7 +139,7 @@ def create_rate_rule_strings(json_data, padding):
if rate_rules:
rr_string += '\n' + padding + '# Rate Rules\n'
for rr in rate_rules:
- rr_string += padding + 'self.add_rate_rule(RateRule(name="{0}", formula="{1}", variable="{2}""))\n'.format(
+ rr_string += padding + 'self.add_rate_rule(RateRule(name="{0}", formula="{1}", variable="{2}"))\n'.format(
rr['name'],
rr['expression'],
rr['variable']['name'])
@@ -213,38 +216,33 @@ def get_settings(path=None):
return settings
-def generate_configure_simulation_cell(json_data, gillespy2_model, is_ssa_c=False, is_mdl_inf=False, show_labels=True, settings=None):
+def generate_configure_simulation_cell(json_data, algorithm, solv_name, is_psweep=False, is_mdl_inf=False, settings=None):
padding = ' '
# Get stochss simulation settings
if settings is None:
settings = get_settings()
- algorithm = get_algorithm(gillespy2_model, is_ssa_c)
- elif settings['isAutomatic']:
- algorithm = get_algorithm(gillespy2_model, is_ssa_c)
- else:
- algorithm = get_algorithm(gillespy2_model, is_ssa_c, algorithm=settings['algorithm'])
-
+
is_automatic = settings['isAutomatic']
# Get settings for model.run()
- settings = get_run_settings(settings, show_labels, is_mdl_inf, algorithm)
+ settings = get_run_settings(settings, is_mdl_inf, algorithm, solv_name)
- settings_lists = {"ODE":['"solver"','"integrator_options"','"show_labels"'],
- "SSA":['"seed"','"number_of_trajectories"','"show_labels"'],
- "V-SSA":['"solver"','"seed"','"number_of_trajectories"','"show_labels"'],
- "Tau-Leaping":['"solver"','"seed"','"number_of_trajectories"','"tau_tol"','"show_labels"'],
- "Hybrid-Tau-Leaping":['"solver"','"seed"','"number_of_trajectories"','"tau_tol"','"integrator_options"','"show_labels"']
+ settings_lists = {"ODE":['"solver"','"integrator_options"'],
+ "SSA":['"seed"','"number_of_trajectories"'],
+ "V-SSA":['"solver"','"seed"','"number_of_trajectories"'],
+ "Tau-Leaping":['"solver"','"seed"','"number_of_trajectories"','"tau_tol"'],
+ "Hybrid-Tau-Leaping":['"solver"','"seed"','"number_of_trajectories"','"tau_tol"','"integrator_options"']
}
- if get_best_ssa_solver().name == "SSACSolver":
+ if solv_name == "SSACSolver":
settings_lists['SSA'].append('"solver"')
settings_map = []
for setting in settings:
- if setting.split(':')[0] == '"solver"' and is_ssa_c:
+ if setting.split(':')[0] == '"solver"' and is_psweep:
settings_map.append(padding*2 + setting)
- elif (setting.split(':')[0] == '"show_labels"' or setting.split(':')[0] == '"number_of_trajectories"') and is_mdl_inf:
+ elif setting.split(':')[0] == '"number_of_trajectories"' and is_mdl_inf:
settings_map.append(padding*2 + setting)
elif is_automatic or setting.split(':')[0] not in settings_lists[algorithm]:
settings_map.append(padding*2 + "# " + setting)
@@ -276,17 +274,17 @@ def generate_run_cell(json_data):
return run_cell
-def get_algorithm(gillespy2_model, is_ssa_c=False, algorithm=None):
+def get_algorithm(gillespy2_model, is_psweep=False, is_ssa_c=False, algorithm=None):
if algorithm is not None:
- if algorithm == "SSA" and is_ssa_c:
- return "V-SSA"
- return algorithm
+ if algorithm == "SSA" and is_psweep:
+ return "V-SSA", "VariableSSACSolver"
+ return algorithm, None
algorithm_map = {"SSACSolver":"SSA",
"VariableSSACSolver":"V-SSA",
- "BasicTauHybridSolver":"Hybrid-Tau-Leaping",
- "BasicTauLeapingSolver":"Tau-Leaping",
- "BasicODESolver":"ODE",
+ "TauHybridSolver":"Hybrid-Tau-Leaping",
+ "TauLeapingSolver":"Tau-Leaping",
+ "ODESolver":"ODE",
"NumPySSASolver":"SSA"
}
@@ -294,19 +292,19 @@ def get_algorithm(gillespy2_model, is_ssa_c=False, algorithm=None):
name = gillespy2_model.get_best_solver().name
else:
name = gillespy2_model.get_best_solver(precompile=False).name
-
- return algorithm_map[name]
+
+ return algorithm_map[name], name
-def get_run_settings(settings, show_labels, is_mdl_inf, algorithm):
+def get_run_settings(settings, is_mdl_inf, algorithm, solv_name):
# Map algorithm for GillesPy2
solver_map = {"SSA":"",
"V-SSA":'"solver":solver',
- "ODE":'"solver":BasicODESolver',
- "Tau-Leaping":'"solver":BasicTauLeapingSolver',
- "Hybrid-Tau-Leaping":'"solver":BasicTauHybridSolver'}
+ "ODE":'"solver":ODESolver',
+ "Tau-Leaping":'"solver":TauLeapingSolver',
+ "Hybrid-Tau-Leaping":'"solver":TauHybridSolver'}
- if get_best_ssa_solver().name == "SSACSolver":
+ if solv_name == "SSACSolver":
solver_map['SSA'] = '"solver":solver'
# Map seed for GillesPy2
@@ -326,8 +324,6 @@ def get_run_settings(settings, show_labels, is_mdl_inf, algorithm):
#Parse settings for algorithm
run_settings = [solver_map[algorithm]] if solver_map[algorithm] else []
- if not show_labels:
- run_settings.append('"show_labels":False')
algorithm_settings = ['"{0}":{1}'.format(key, val) for key, val in settings_map.items()]
run_settings.extend(algorithm_settings)
@@ -635,20 +631,22 @@ class ParameterSweepConfig(ParameterSweep2D):
'''
return psweep_config_cell
-def generate_sciope_wrapper_cell(json_data, gillespy2_model):
+def generate_sciope_wrapper_cell(json_data, algorithm, solv_name):
settings = get_settings()
- algorithm = get_algorithm(gillespy2_model)
soi = [species['name'] for species in json_data['species']]
+ if algorithm == "V-SSA":
+ algorithm = "SSA"
+
# Select Solver
solver_map = {
'SSA': '',
- 'Tau-Leaping': '"solver":BasicTauLeapingSolver, ',
- 'Hybrid-Tau-Leaping': '"solver":BasicTauHybridSolver, ',
- 'ODE': '"solver":BasicODESolver, '
+ 'Tau-Leaping': '"solver":TauLeapingSolver, ',
+ 'Hybrid-Tau-Leaping': '"solver":TauHybridSolver, ',
+ 'ODE': '"solver":ODESolver, '
}
sciope_wrapper_cell = '''from sciope.utilities.gillespy2 import wrapper
-settings = {{{}"number_of_trajectories":10, "show_labels":True}}
+settings = {{{}"number_of_trajectories":10}}
simulator = wrapper.get_simulator(gillespy_model=model, run_settings=settings, species_of_interest={})
expression_array = wrapper.get_parameter_expression_array(model)'''.format(solver_map[algorithm], soi)
return sciope_wrapper_cell
@@ -756,6 +754,7 @@ def simulator(params, model):
model_update = set_model_parameters(params, model)
res = model_update.run(**kwargs)
+ res = res.to_array()
tot_res = np.asarray([x.T for x in res]) # reshape to (N, S, T)
tot_res = tot_res[:,1:, :] # should not contain timepoints
@@ -794,6 +793,7 @@ def generate_mdl_inf_fixed_data_cell():
def generate_mdl_inf_reshape_data_cell():
reshape_data_cell = '''# Reshape the data to (n_points,n_species,n_timepoints) and remove timepoints array
+fixed_data = fixed_data.to_array()
fixed_data = np.asarray([x.T for x in fixed_data])
fixed_data = fixed_data[:,1:, :]'''
diff --git a/stochss/handlers/util/generate_zip_file.py b/stochss/handlers/util/generate_zip_file.py
index 10372f11ee..9320a2948d 100644
--- a/stochss/handlers/util/generate_zip_file.py
+++ b/stochss/handlers/util/generate_zip_file.py
@@ -2,12 +2,13 @@
import os
import shutil
-from .rename import get_unique_file_name
+import traceback
+from .rename import get_unique_file_name, get_file_name
from .stochss_errors import StochSSFileNotFoundError, StochSSWorkflowError, StochSSWorkflowNotCompleteError
def generate_zip_file(file_path, file_directory, target):
- file_name = file_path.split('/').pop().split('.')[0]
+ file_name = ".".join(file_path.split('/').pop().split('.')[:-1])
target = target.split('/').pop()
shutil.make_archive(os.path.join(file_directory, file_name), 'zip', file_directory, target)
@@ -31,10 +32,10 @@ def download_zip(path, action):
target = os.path.join(user_dir, path)
if not os.path.exists(target):
- raise StochSSFileNotFoundError("Could not find the file or directory: " + target)
+ raise StochSSFileNotFoundError("Could not find the file or directory: " + target, traceback.format_exc())
if action == "generate":
- full_path = "{0}.zip".format(target.split('.')[0])
+ full_path = "{0}.zip".format(os.path.join(os.path.dirname(target), get_file_name(target)))
file_directory = os.path.dirname(full_path)
file_name = full_path.split('/').pop()
@@ -46,16 +47,16 @@ def download_zip(path, action):
elif action == "resultscsv":
error_status = os.path.join(target, "ERROR")
if os.path.exists(error_status):
- raise StochSSWorkflowError("The workflow experienced an error during run: " + error_status)
+ raise StochSSWorkflowError("The workflow experienced an error during run: " + error_status, traceback.format_exc())
complete_status = os.path.join(target, "COMPLETE")
if not os.path.exists(complete_status):
- raise StochSSWorkflowNotCompleteError("The workflow has not finished running: {0} not found.".format(complete_status))
+ raise StochSSWorkflowNotCompleteError("The workflow has not finished running: {0} not found.".format(complete_status), traceback.format_exc())
results_path = os.path.join(target, "results")
try:
csv_results_dir = list(filter(lambda file: get_results_csv_dir(file, results_path), os.listdir(results_path)))[0]
except IndexError as err:
- raise StochSSFileNotFoundError("Could not find the workflow results csv directory: " + str(err))
+ raise StochSSFileNotFoundError("Could not find the workflow results csv directory: " + str(err), traceback.format_exc())
target_path = os.path.join(results_path, csv_results_dir)
zip_path = "{0}.zip".format(target_path)
diff --git a/stochss/handlers/util/ls.py b/stochss/handlers/util/ls.py
index 8290bd0687..ce92cea9af 100644
--- a/stochss/handlers/util/ls.py
+++ b/stochss/handlers/util/ls.py
@@ -2,14 +2,16 @@
import os
import json
+import traceback
from os import path
from .workflow_status import get_status
from .stochss_errors import StochSSFileNotFoundError
+from .rename import get_file_name
-def getFileSystemData(full_path, p_path):
+def get_file_system_data(full_path, p_path):
'''
- Builds a list of children for the JSTree using the contents
+ Builds a list of children for the JSTree using the contents
of the target directory. Returns an empty list if the target
directory is empty.
@@ -23,34 +25,43 @@ def getFileSystemData(full_path, p_path):
try:
_children = os.listdir(path=full_path)
except FileNotFoundError as err:
- raise StochSSFileNotFoundError("Could not find the directory: " + str(err))
-
+ raise StochSSFileNotFoundError("Could not find the directory: " + str(err),
+ traceback.format_exc())
+
if len(_children) == 0:
return _children
+ return get_children(_children, p_path, full_path)
+
+
+def get_children(_children, p_path, full_path):
children = []
for child in filter(lambda x: not x.startswith('.'), _children):
- if checkExtension(child, ".wkfl"):
- children.append(buildChild(text=child, f_type="workflow", p_path=p_path))
- elif checkExtension(child, ".mdl"):
- children.append(buildChild(text=child, f_type="nonspatial", p_path=p_path))
- elif checkExtension(child, ".smdl"):
- children.append(buildChild(text=child, f_type="spatial", p_path=p_path))
- elif checkExtension(child, ".mesh"):
- children.append(buildChild(text=child, f_type="mesh", p_path=p_path))
- elif checkExtension(child, ".ipynb"):
- children.append(buildChild(text=child, f_type="notebook", p_path=p_path))
- elif checkExtension(child, ".sbml"):
- children.append(buildChild(text=child, f_type="sbml-model", p_path=p_path))
+ if check_extension(child, ".wkfl"):
+ children.append(build_child(text=child, f_type="workflow", p_path=p_path))
+ elif check_extension(child, ".proj"):
+ children.append(build_child(text=child, f_type="project", p_path=p_path))
+ elif check_extension(child, ".wkgp"):
+ children.append(build_child(text=child, f_type="workflow-group", p_path=p_path))
+ elif check_extension(child, ".mdl"):
+ children.append(build_child(text=child, f_type="nonspatial", p_path=p_path))
+ elif check_extension(child, ".smdl"):
+ children.append(build_child(text=child, f_type="spatial", p_path=p_path))
+ elif check_extension(child, ".mesh"):
+ children.append(build_child(text=child, f_type="mesh", p_path=p_path))
+ elif check_extension(child, ".ipynb"):
+ children.append(build_child(text=child, f_type="notebook", p_path=p_path))
+ elif check_extension(child, ".sbml"):
+ children.append(build_child(text=child, f_type="sbml-model", p_path=p_path))
elif path.isdir(path.join(full_path, child)):
- children.append(buildChild(text=child, f_type="folder", p_path=p_path))
+ children.append(build_child(text=child, f_type="folder", p_path=p_path))
else:
- children.append(buildChild(text=child, f_type="other", p_path=p_path))
+ children.append(build_child(text=child, f_type="other", p_path=p_path))
return children
-def buildChild(text, f_type, p_path):
+def build_child(text, f_type, p_path):
'''
- Builds a JSON represntation of a JSTree child with the added
+ Builds a JSON represntation of a JSTree child with the added
attribute '_path'.
Attribute
@@ -66,22 +77,22 @@ def buildChild(text, f_type, p_path):
_path = text
else:
_path = path.join(p_path, text) # The child is in a sub-leve of the tree
- child = { 'text' : text, 'type' : f_type, '_path' : _path }
- child['children'] = f_type == "folder"
+ child = {'text' : text, 'type' : f_type, '_path' : _path}
+ child['children'] = f_type == "folder" or f_type == "workflow-group"
if f_type == "workflow":
status = get_status(_path)
child['_status'] = status
return child
-def buildRoot(children):
- root = {"text":"/", "type":"root", "_path":"/"}
+def build_root(children, _path="/", text="/"):
+ root = {"text":text, "type":"root", "_path":_path}
root["children"] = children
root["state"] = {"opened":True}
return [root]
-def checkExtension(child, target):
+def check_extension(child, target):
'''
Check to see if the child's extension matchs the target extension.
@@ -90,13 +101,10 @@ def checkExtension(child, target):
target : str
The extension being checked for.
'''
- if child.endswith(target):
- return True
- else:
- return False
+ return child.endswith(target)
-def ls(p_path):
+def list_files(p_path, is_root=False):
'''
Format the path to the target directory to an absolute path.
Retreive the JSTree children nodes and add them to a root node
@@ -113,8 +121,10 @@ def ls(p_path):
full_path = user_dir
else:
full_path = path.join(user_dir, p_path)
- data = getFileSystemData(full_path, p_path)
+ data = get_file_system_data(full_path, p_path)
if p_path == "none":
- data = buildRoot(data)
+ data = build_root(data)
+ elif is_root:
+ text = get_file_name(p_path)
+ data = build_root(data, _path=p_path, text=text)
return json.dumps(data)
-
diff --git a/stochss/handlers/util/molns_cloudpickle.py b/stochss/handlers/util/molns_cloudpickle.py
deleted file mode 100644
index 02f6289c6b..0000000000
--- a/stochss/handlers/util/molns_cloudpickle.py
+++ /dev/null
@@ -1,1036 +0,0 @@
-"""
-This class is defined to override standard pickle functionality
-
-The goals of it follow:
--Serialize lambdas and nested functions to compiled byte code
--Deal with main module correctly
--Deal with other non-serializable objects
-
-It does not include an unpickler, as standard python unpickling suffices
-
-Copyright (c) 2009-2012 `PiCloud, Inc. `_. All rights reserved.
-
-email: contact@picloud.com
-
-The cloud package is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-
-This package is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this package; if not, see
-http://www.gnu.org/licenses/lgpl-2.1.html
-"""
-
-
-import operator
-import os
-import pickle
-import struct
-import sys
-import types
-from functools import partial
-import itertools
-import cpoyreg
-from copyreg import _extension_registry, _inverted_registry, _extension_cache
-import types
-import dis
-import traceback
-
-#relevant opcodes
-STORE_GLOBAL = chr(dis.opname.index('STORE_GLOBAL'))
-DELETE_GLOBAL = chr(dis.opname.index('DELETE_GLOBAL'))
-LOAD_GLOBAL = chr(dis.opname.index('LOAD_GLOBAL'))
-GLOBAL_OPS = [STORE_GLOBAL, DELETE_GLOBAL, LOAD_GLOBAL]
-
-HAVE_ARGUMENT = chr(dis.HAVE_ARGUMENT)
-EXTENDED_ARG = chr(dis.EXTENDED_ARG)
-
-import logging
-cloudLog = logging.getLogger("Cloud.Transport")
-
-try:
- import ctypes
-except (MemoryError, ImportError):
- logging.warning('Exception raised on importing ctypes. Likely python bug.. some functionality will be disabled', exc_info = True)
- ctypes = None
- PyObject_HEAD = None
-else:
-
- # for reading internal structures
- PyObject_HEAD = [
- ('ob_refcnt', ctypes.c_size_t),
- ('ob_type', ctypes.c_void_p),
- ]
-
-
-from io import StringIO
-
-def xrange_params(xrangeobj):
- """Returns a 3 element tuple describing the xrange start, step, and len respectively
- Note: Only guarentees that elements of xrange are the same. parameters may be different. e.g. xrange(1,1) is interpretted as xrange(0,0); both behave the same though w/ iteration
- """
- xrange_len = len(xrangeobj)
- if not xrange_len: #empty
- return (0,1,0)
- start = xrangeobj[0]
- if xrange_len == 1: #one element
- return start, 1, 1
- return (start, xrangeobj[1] - xrangeobj[0], xrange_len)
-
-def islambda(func):
- return getattr(func,'func_name') == ''
-
-#debug variables intended for developer use:
-printSerialization = False
-printMemoization = False
-
-useForcedImports = True # Should I use forced imports for tracking?
-
-def error_msg(msg, loglevel=logging.WARN, exc_info = 0):
- """Print an error message to pilog if running on cloud; otherwise send to stderr"""
- from .. import _getcloud
- roc = _getcloud().running_on_cloud()
- if roc:
- pilog_module = __import__('pimployee.log', fromlist=['log'])
- pilog_module.pilogger.log(loglevel, msg, exc_info = exc_info)
- else:
- print >> sys.stderr, msg
- if exc_info:
- ei = sys.exc_info()
- traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
-
-class CloudPickler(pickle.Pickler):
-
- dispatch = copyreg.dispatch_table.copy()
- savedForceImports = False
- savedDjangoEnv = False #hack tro transport django environment
- os_env_vars = [] # OS environment variables to copy over
-
- def __init__(self, file, protocol=None, min_size_to_save= 0):
- pickle.Pickler.__init__(self,file,protocol)
- self.modules = set() #set of modules needed to depickle
- self.globals_ref = {} # map ids to dictionary. used to ensure that functions can share global env
-
- def dump(self, obj):
- # note: not thread safe
- # minimal side-effects, so not fixing
- recurse_limit = 3000
- base_recurse = sys.getrecursionlimit()
- if base_recurse < recurse_limit:
- sys.setrecursionlimit(recurse_limit)
- self.inject_addons()
- try:
- return pickle.Pickler.dump(self, obj)
- except RuntimeError as e:
- if 'recursion' in e.args[0]:
- msg = """Could not pickle object as excessively deep recursion required.
- Try _fast_serialization=2 or contact PiCloud support"""
- raise pickle.PicklingError(msg)
- raise
- finally:
- new_recurse = sys.getrecursionlimit()
- if new_recurse == recurse_limit:
- sys.setrecursionlimit(base_recurse)
-
- def save_buffer(self, obj):
- """Fallback to save_string"""
- pickle.Pickler.save_string(self,str(obj))
- dispatch[buffer] = save_buffer
-
- #block broken objects
- def save_unsupported(self, obj, pack=None):
- raise pickle.PicklingError("Cannot pickle objects of type %s" % type(obj))
- dispatch[types.GeneratorType] = save_unsupported
-
- #python2.6+ supports slice pickling. some py2.5 extensions might as well. We just test it
- try:
- slice(0,1).__reduce__()
- except TypeError: #can't pickle -
- dispatch[slice] = save_unsupported
-
- #itertools objects do not pickle!
- for v in itertools.__dict__.values():
- if type(v) is type:
- dispatch[v] = save_unsupported
-
-
- def save_dict(self, obj):
- """hack fix
- If the dict is a global, deal with it in a special way
- """
- #print('saving', obj)
- if obj is __builtins__:
- self.save_reduce(_get_module_builtins, (), obj=obj)
- else:
- pickle.Pickler.save_dict(self, obj)
- dispatch[pickle.DictionaryType] = save_dict
-
-
- def save_module(self, obj, pack=struct.pack):
- """
- Save a module as an import
- """
- #print('try save import', obj.__name__)
- self.modules.add(obj)
- self.save_reduce(subimport,(obj.__name__,), obj=obj)
- dispatch[types.ModuleType] = save_module #new type
-
- def save_codeobject(self, obj, pack=struct.pack):
- """
- Save a code object
- """
- #print('try to save codeobj: ', obj)
- args = (
- obj.co_argcount, obj.co_nlocals, obj.co_stacksize, obj.co_flags, obj.co_code,
- obj.co_consts, obj.co_names, obj.co_varnames, obj.co_filename, obj.co_name,
- obj.co_firstlineno, obj.co_lnotab, obj.co_freevars, obj.co_cellvars
- )
- self.save_reduce(types.CodeType, args, obj=obj)
- dispatch[types.CodeType] = save_codeobject #new type
-
- def save_function(self, obj, name=None, pack=struct.pack):
- """ Registered with the dispatch to handle all function types.
-
- Determines what kind of function obj is (e.g. lambda, defined at
- interactive prompt, etc) and handles the pickling appropriately.
- """
- write = self.write
-
- name = obj.__name__
- modname = pickle.whichmodule(obj, name)
- #print('which gives %s %s %s' % (modname, obj, name))
- try:
- themodule = sys.modules[modname]
- except KeyError: # eval'd items such as namedtuple give invalid items for their function __module__
- modname = '__main__'
-
- if modname == '__main__':
- themodule = None
-
- if themodule:
- self.modules.add(themodule)
-
- if self.os_env_vars:
-
- # recursion hackery
- os_env_vars = self.os_env_vars
- self.os_env_vars = []
- old_saved_django = self.savedDjangoEnv
- self.savedDjangoEnv = True
-
- write(pickle.MARK)
-
- if isinstance(os_env_vars, dict):
- os_mapping = os_env_vars
- else:
- os_mapping = {}
- for env_var in os_env_vars:
- if env_var in os.environ:
- os_mapping[env_var] = os.environ[env_var]
- self.save_reduce(env_vars_load, (os_mapping,)) # note: nothing sensible to memoize
- write(pickle.POP_MARK)
-
- self.savedDjangoEnv = old_saved_django
-
- if modname == 'cloud.shell':
- # don't save django environment if we are using shell.exec
- self.savedDjangoEnv = True
-
- elif not self.savedDjangoEnv:
- # hack for django - if we detect the settings module, we transport it
- # unfortunately this module is dynamically, not statically, resolved, so
- # dependency analysis never detects it
-
- django_settings = os.environ.get('DJANGO_SETTINGS_MODULE', '')
- if django_settings:
- django_mod = sys.modules.get(django_settings)
- if django_mod:
- cloudLog.debug('Transporting django settings %s during save of %s', django_mod, name)
- self.savedDjangoEnv = True
- self.modules.add(django_mod)
- write(pickle.MARK)
- self.save_reduce(django_settings_load, (django_mod.__name__,), obj=django_mod)
- write(pickle.POP_MARK)
-
-
- # if func is lambda, def'ed at prompt, is in main, or is nested, then
- # we'll pickle the actual function object rather than simply saving a
- # reference (as is done in default pickler), via save_function_tuple.
- if islambda(obj) or obj.func_code.co_filename == '' or themodule == None:
- #Force server to import modules that have been imported in main
- modList = None
- if themodule == None and not self.savedForceImports:
- mainmod = sys.modules['__main__']
- if useForcedImports and hasattr(mainmod,'___pyc_forcedImports__'):
- modList = list(mainmod.___pyc_forcedImports__)
- self.savedForceImports = True
- self.save_function_tuple(obj, modList)
- return
- else: # func is nested
- klass = getattr(themodule, name, None)
- if klass is None or klass is not obj:
- self.save_function_tuple(obj, [themodule])
- return
-
- if obj.__dict__:
- # essentially save_reduce, but workaround needed to avoid recursion
- self.save(_restore_attr)
- write(pickle.MARK + pickle.GLOBAL + modname + '\n' + name + '\n')
- self.memoize(obj)
- self.save(obj.__dict__)
- write(pickle.TUPLE + pickle.REDUCE)
- else:
- write(pickle.GLOBAL + modname + '\n' + name + '\n')
- self.memoize(obj)
- dispatch[types.FunctionType] = save_function
-
- def save_function_tuple(self, func, forced_imports):
- """ Pickles an actual func object.
-
- A func comprises: code, globals, defaults, closure, and dict. We
- extract and save these, injecting reducing functions at certain points
- to recreate the func object. Keep in mind that some of these pieces
- can contain a ref to the func itself. Thus, a naive save on these
- pieces could trigger an infinite loop of save's. To get around that,
- we first create a skeleton func object using just the code (this is
- safe, since this won't contain a ref to the func), and memoize it as
- soon as it's created. The other stuff can then be filled in later.
- """
- save = self.save
- write = self.write
-
- # save the modules (if any)
- if forced_imports:
- write(pickle.MARK)
- save(_modules_to_main)
- #print('forced imports are', forced_imports)
-
- # do not save our own references
- forced_names = [m.__name__ for m in forced_imports if not m.__name__.startswith('cloud')]
- save((forced_names,))
-
- #save((forced_imports,))
- write(pickle.REDUCE)
- write(pickle.POP_MARK)
-
- code, f_globals, defaults, closure, dct, base_globals = self.extract_func_data(func)
-
- save(_fill_function) # skeleton function updater
- write(pickle.MARK) # beginning of tuple that _fill_function expects
-
- # create a skeleton function object and memoize it
- save(_make_skel_func)
- save((code, len(closure), base_globals))
- write(pickle.REDUCE)
- self.memoize(func)
-
- # save the rest of the func data needed by _fill_function
- save(f_globals)
- save(defaults)
- save(closure)
- save(dct)
- write(pickle.TUPLE)
- write(pickle.REDUCE) # applies _fill_function on the tuple
-
- @staticmethod
- def extract_code_globals(co):
- """
- Find all globals names read or written to by codeblock co
- """
- code = co.co_code
- names = co.co_names
- out_names = set()
-
- n = len(code)
- i = 0
- extended_arg = 0
- while i < n:
- op = code[i]
-
- i = i+1
- if op >= HAVE_ARGUMENT:
- oparg = ord(code[i]) + ord(code[i+1])*256 + extended_arg
- extended_arg = 0
- i = i+2
- if op == EXTENDED_ARG:
- extended_arg = oparg*65536
- if op in GLOBAL_OPS:
- out_names.add(names[oparg])
- #print('extracted', out_names, ' from ', names)
- return out_names
-
- def extract_func_data(self, func):
- """
- Turn the function into a tuple of data necessary to recreate it:
- code, globals, defaults, closure, dict
- """
- code = func.func_code
-
- # extract all global ref's
- func_global_refs = CloudPickler.extract_code_globals(code)
- if code.co_consts: # see if nested function have any global refs
- for const in code.co_consts:
- if type(const) is types.CodeType and const.co_names:
- func_global_refs = func_global_refs.union( CloudPickler.extract_code_globals(const))
- # process all variables referenced by global environment
- f_globals = {}
- for var in func_global_refs:
- #Some names, such as class functions are not global - we don't need them
- if func.func_globals.has_key(var):
- f_globals[var] = func.func_globals[var]
-
- # defaults requires no processing
- defaults = func.func_defaults
-
- def get_contents(cell):
- try:
- return cell.cell_contents
- except ValueError as e: #cell is empty error on not yet assigned
- raise pickle.PicklingError('Function to be pickled has free variables that are referenced before assignment in enclosing scope')
-
-
- # process closure
- if func.func_closure:
- closure = map(get_contents, func.func_closure)
- else:
- closure = []
-
- # save the dict
- dct = func.func_dict
-
- if printSerialization:
- outvars = ['code: ' + str(code) ]
- outvars.append('globals: ' + str(f_globals))
- outvars.append('defaults: ' + str(defaults))
- outvars.append('closure: ' + str(closure))
- print('function ', func, 'is extracted to: ', ', '.join(outvars))
-
- base_globals = self.globals_ref.get(id(func.func_globals), {})
- self.globals_ref[id(func.func_globals)] = base_globals
-
- return (code, f_globals, defaults, closure, dct, base_globals)
-
- def save_class_obj(self, cobj, name=None, pack=struct.pack):
- """Save a class object that a reference cannot be provided to"""
-
- #note: Third party types might crash this - add better checks!
- d = dict(cobj.__dict__) #copy dict proxy to a dict
- constructor_dct = {'__doc__' : d.pop('__doc__')}
- if not isinstance(d.get('__dict__', None), property): # don't extract dict that are properties
- d.pop('__dict__',None)
- elif '__dict__' in d:
- constructor_dct['__dict__'] = d.pop('__dict__')
- #pass
-
- d.pop('__weakref__',None) # never needed in serialization
-
- # hack as __new__ is stored differently in the __dict__
- new_override = d.get('__new__', None)
- if new_override:
- constructor_dct['__new__'] = cobj.__new__
- d.pop('__new__', None)
-
- # beginning of class logic
-
- self.save(_fill_class)
-
- self.write(pickle.MARK) # beginning of tuple that _fill_class expects
-
- self.save(type(cobj))
- self.save((cobj.__name__,cobj.__bases__,constructor_dct)) # inject rest of dictionary later
- self.write(pickle.REDUCE)
- self.memoize(cobj)
-
- #print('save %s' % d['__dict__'])
- # save dct needed
- self.save(d)
- self.write(pickle.TUPLE)
- self.write(pickle.REDUCE) # apply _fill_class on tuple
-
- #self.save_reduce(type(cobj), (cobj.__name__, cobj.__bases__, d), obj = cobj)
-
- def save_global(self, obj, name=None, pack=struct.pack):
- write = self.write
- memo = self.memo
-
- if name is None:
- name = obj.__name__
-
- modname = getattr(obj, "__module__", None)
- if modname is None:
- modname = pickle.whichmodule(obj, name)
-
- try:
- __import__(modname)
- themodule = sys.modules[modname]
- except (ImportError, KeyError, AttributeError): #should never occur
- raise pickle.PicklingError(
- "Can't pickle %r: Module %s cannot be found" %
- (obj, modname))
-
- if modname == '__main__':
- themodule = None
-
- if themodule:
- self.modules.add(themodule)
-
- sendRef = True
- typ = type(obj)
- #print('saving', obj, typ)
- try:
- try: #Deal with case when getattribute fails with exceptions
- klass = getattr(themodule, name)
- except (AttributeError):
- if modname == '__builtin__': #new.* are misrepeported
- modname = 'new'
- __import__(modname)
- themodule = sys.modules[modname]
- try:
- klass = getattr(themodule, name)
- except AttributeError as a:
- #print(themodule, name, obj, type(obj))
- raise pickle.PicklingError("Can't pickle builtin %s" % obj)
- else:
- raise
-
- except (ImportError, KeyError, AttributeError):
- if typ == types.TypeType or typ == types.ClassType:
- sendRef = False
- else: #we can't deal with this
- raise
- else:
- if klass is not obj and (typ == types.TypeType or typ == types.ClassType):
- sendRef = False
- if not sendRef:
- self.save_class_obj(obj, name, pack)
- return
-
- if self.proto >= 2:
- code = _extension_registry.get((modname, name))
- if code:
- assert code > 0
- if code <= 0xff:
- write(pickle.EXT1 + chr(code))
- elif code <= 0xffff:
- write("%c%c%c" % (pickle.EXT2, code&0xff, code>>8))
- else:
- write(pickle.EXT4 + pack("= 2 and getattr(func, "__name__", "") == "__newobj__":
- #Added fix to allow transient
- cls = args[0]
- if not hasattr(cls, "__new__"):
- raise pickle.PicklingError(
- "args[0] from __newobj__ args has no __new__")
- if obj is not None and cls is not obj.__class__:
- raise pickle.PicklingError(
- "args[0] from __newobj__ args has the wrong class")
- args = args[1:]
- save(cls)
-
- #Don't pickle transient entries
- if hasattr(obj, '__transient__'):
- transient = obj.__transient__
- state = state.copy()
-
- for k in list(state.keys()):
- if k in transient:
- del state[k]
-
- save(args)
- write(pickle.NEWOBJ)
- else:
- save(func)
- save(args)
- write(pickle.REDUCE)
-
- if obj is not None:
- self.memoize(obj)
-
- # More new special cases (that work with older protocols as
- # well): when __reduce__ returns a tuple with 4 or 5 items,
- # the 4th and 5th item should be iterators that provide list
- # items and dict items (as (key, value) tuples), or None.
-
- if listitems is not None:
- self._batch_appends(listitems)
-
- if dictitems is not None:
- self._batch_setitems(dictitems)
-
- if state is not None:
- #print('obj %s has state %s' % (obj, state))
- save(state)
- write(pickle.BUILD)
-
-
- def save_xrange(self, obj):
- """Save an xrange object in python 2.5
- Python 2.6 supports this natively
- """
- range_params = xrange_params(obj)
- self.save_reduce(_build_xrange,range_params)
-
- #python2.6+ supports xrange pickling. some py2.5 extensions might as well. We just test it
- try:
- xrange(0).__reduce__()
- except TypeError: #can't pickle -- use PiCloud pickler
- dispatch[xrange] = save_xrange
-
- def save_partial(self, obj):
- """Partial objects do not serialize correctly in python2.x -- this fixes the bugs"""
- self.save_reduce(_genpartial, (obj.func, obj.args, obj.keywords))
-
- if sys.version_info < (2,7): #2.7 supports partial pickling
- dispatch[partial] = save_partial
-
-
- def save_file(self, obj):
- """Save a file"""
- from ..transport.adapter import SerializingAdapter
-
- if not hasattr(obj, 'name') or not hasattr(obj, 'mode'):
- raise pickle.PicklingError("Cannot pickle files that do not map to an actual file")
- if obj.name == '':
- return self.save_reduce(getattr, (sys,'stdout'), obj=obj)
- if obj.name == '':
- return self.save_reduce(getattr, (sys,'stderr'), obj=obj)
- if obj.name == '':
- raise pickle.PicklingError("Cannot pickle standard input")
- if hasattr(obj, 'isatty') and obj.isatty():
- raise pickle.PicklingError("Cannot pickle files that map to tty objects")
- if 'r' not in obj.mode:
- raise pickle.PicklingError("Cannot pickle files that are not opened for reading")
- name = obj.name
- try:
- fsize = os.stat(name).st_size
- except OSError:
- raise pickle.PicklingError("Cannot pickle file %s as it cannot be stat" % name)
-
- if obj.closed:
- #create an empty closed string io
- retval = StringIO("")
- retval.close()
- elif not fsize: #empty file
- retval = StringIO("")
- try:
- tmpfile = file(name)
- tst = tmpfile.read(1)
- except IOError:
- raise pickle.PicklingError("Cannot pickle file %s as it cannot be read" % name)
- tmpfile.close()
- if tst != '':
- raise pickle.PicklingError("Cannot pickle file %s as it does not appear to map to a physical, real file" % name)
- elif fsize > SerializingAdapter.max_transmit_data:
- raise pickle.PicklingError("Cannot pickle file %s as it exceeds cloudconf.py's max_transmit_data of %d" %
- (name,SerializingAdapter.max_transmit_data))
- else:
- try:
- tmpfile = file(name)
- contents = tmpfile.read(SerializingAdapter.max_transmit_data)
- tmpfile.close()
- except IOError:
- raise pickle.PicklingError("Cannot pickle file %s as it cannot be read" % name)
- retval = StringIO(contents)
- curloc = obj.tell()
- retval.seek(curloc)
-
- retval.name = name
- self.save(retval) #save stringIO
- self.memoize(obj)
-
- dispatch[file] = save_file
- """Special functions for Add-on libraries"""
-
- def inject_numpy(self):
- numpy = sys.modules.get('numpy')
- if not numpy or not hasattr(numpy, 'ufunc'):
- return
- self.dispatch[numpy.ufunc] = self.__class__.save_ufunc
-
- numpy_tst_mods = ['numpy', 'scipy.special']
- def save_ufunc(self, obj):
- """Hack function for saving numpy ufunc objects"""
- name = obj.__name__
- for tst_mod_name in self.numpy_tst_mods:
- tst_mod = sys.modules.get(tst_mod_name, None)
- if tst_mod:
- if name in tst_mod.__dict__:
- self.save_reduce(_getobject, (tst_mod_name, name))
- return
- raise pickle.PicklingError('cannot save %s. Cannot resolve what module it is defined in' % str(obj))
-
- def inject_timeseries(self):
- """Handle bugs with pickling scikits timeseries"""
- tseries = sys.modules.get('scikits.timeseries.tseries')
- if not tseries or not hasattr(tseries, 'Timeseries'):
- return
- self.dispatch[tseries.Timeseries] = self.__class__.save_timeseries
-
- def save_timeseries(self, obj):
- import scikits.timeseries.tseries as ts
-
- func, reduce_args, state = obj.__reduce__()
- if func != ts._tsreconstruct:
- raise pickle.PicklingError('timeseries using unexpected reconstruction function %s' % str(func))
- state = (1,
- obj.shape,
- obj.dtype,
- obj.flags.fnc,
- obj._data.tostring(),
- ts.getmaskarray(obj).tostring(),
- obj._fill_value,
- obj._dates.shape,
- obj._dates.__array__().tostring(),
- obj._dates.dtype, #added -- preserve type
- obj.freq,
- obj._optinfo,
- )
- return self.save_reduce(_genTimeSeries, (reduce_args, state))
-
- def inject_email(self):
- """Block email LazyImporters from being saved"""
- email = sys.modules.get('email')
- if not email:
- return
- self.dispatch[email.LazyImporter] = self.__class__.save_unsupported
-
- def inject_addons(self):
- """Plug in system. Register additional pickling functions if modules already loaded"""
- self.inject_numpy()
- self.inject_timeseries()
- self.inject_email()
-
- """Python Imaging Library"""
- def save_image(self, obj):
- if not obj.im and obj.fp and 'r' in obj.fp.mode and obj.fp.name \
- and not obj.fp.closed and (not hasattr(obj, 'isatty') or not obj.isatty()):
- #if image not loaded yet -- lazy load
- self.save_reduce(_lazyloadImage,(obj.fp,), obj=obj)
- else:
- #image is loaded - just transmit it over
- self.save_reduce(_generateImage, (obj.size, obj.mode, obj.tostring()), obj=obj)
-
- """
- def memoize(self, obj):
- pickle.Pickler.memoize(self, obj)
- if printMemoization:
- print('memoizing ' + str(obj))
- """
-
-
-
-# Shorthands for legacy support
-
-def dump(obj, file, protocol=2):
- CloudPickler(file, protocol).dump(obj)
-
-def dumps(obj, protocol=2):
- file = StringIO()
-
- cp = CloudPickler(file,protocol)
- cp.dump(obj)
-
- #print('cloud dumped', str(obj), str(cp.modules))
-
- return file.getvalue()
-
-def loads(s):
- return pickle.loads(s)
-
-#hack for __import__ not working as desired
-def subimport(name):
- __import__(name)
- return sys.modules[name]
-
-#hack to load django settings:
-def django_settings_load(name):
- modified_env = False
-
- if 'DJANGO_SETTINGS_MODULE' not in os.environ:
- os.environ['DJANGO_SETTINGS_MODULE'] = name # must set name first due to circular deps
- modified_env = True
- try:
- module = subimport(name)
- except Exception as i:
- error_msg('Could not import django settings %s:' % (name), exc_info = True)
- if modified_env:
- del os.environ['DJANGO_SETTINGS_MODULE']
- else:
- #add project directory to sys,path:
- if hasattr(module,'__file__'):
- dirname = os.path.split(module.__file__)[0] + '/'
- sys.path.append(dirname)
-
- error_msg('Loaded Django settings', logging.DEBUG)
-
-def env_vars_load(env_dct):
- #print('loading environment vars %s' % env_dct)
- for var, value in env_dct.items():
- os.environ[var] = value
- error_msg('Loaded Environment variables %s' % env_dct.keys(), logging.DEBUG)
-
-# restores function attributes
-def _restore_attr(obj, attr):
- for key, val in attr.items():
- setattr(obj, key, val)
- return obj
-
-def _get_module_builtins():
- return pickle.__builtins__
-
-def _modules_to_main(modList):
- """Force every module in modList to be placed into main"""
- if not modList:
- return
-
- main = sys.modules['__main__']
-
- seen_errors = set() # avoid excessive exceptions; cache top-level module failing and reason
- for modname in modList:
- if type(modname) is str:
- try:
- mod = __import__(modname)
- except Exception as i: #catch all...
- key = modname.split('.',1)[0], str(i)
- if key not in seen_errors:
- seen_errors.add(key)
- error_msg('could not import %s\n. Your function may unexpectedly error due to this import failing; \
- Likely due to version mismatch or non-transferred python extension. Specific error was:\n' % modname, exc_info = True)
- else:
- setattr(main,mod.__name__, mod)
- else:
- #REVERSE COMPATIBILITY FOR CLOUD CLIENT 1.5 (WITH EPD)
- #In old version actual module was sent
- setattr(main,modname.__name__, modname)
-
-#object generators:
-def _build_xrange(start, step, len):
- """Built xrange explicitly"""
- return xrange(start, start + step*len, step)
-
-def _genpartial(func, args, kwds):
- if not args:
- args = ()
- if not kwds:
- kwds = {}
- return partial(func, *args, **kwds)
-
-
-def _fill_function(func, globals, defaults, closure, dct):
- """ Fills in the rest of function data into the skeleton function object
- that were created via _make_skel_func().
- """
- func.func_globals.update(globals)
- func.func_defaults = defaults
- func.func_dict = dct
-
- if len(closure) != len(func.func_closure):
- raise pickle.UnpicklingError("closure lengths don't match up")
- for i in range(len(closure)):
- _change_cell_value(func.func_closure[i], closure[i])
-
- return func
-
-def _fill_class(cls, dct):
- """Fill in a class dictionary
- This hack is necessary because functions in class dictionary may reference class
- """
- for key, val in dct.items():
- setattr(cls, key, val)
-
- return cls
-
-def _make_skel_func(code, num_closures, base_globals = None):
- """ Creates a skeleton function object that contains just the provided
- code and the correct number of cells in func_closure. All other
- func attributes (e.g. func_globals) are empty.
- """
- #build closure (cells):
- if not ctypes:
- raise Exception('ctypes failed to import; cannot build function')
-
- cellnew = ctypes.pythonapi.PyCell_New
- cellnew.restype = ctypes.py_object
- cellnew.argtypes = (ctypes.py_object,)
- dummy_closure = tuple(map(lambda i: cellnew(None), range(num_closures)))
-
- if base_globals is None:
- base_globals = {}
- base_globals['__builtins__'] = __builtins__
-
- return types.FunctionType(code, base_globals,
- None, None, dummy_closure)
-
-# this piece of opaque code is needed below to modify 'cell' contents
-cell_changer_code = new.code(
- 1, 1, 2, 0,
- ''.join([
- chr(dis.opmap['LOAD_FAST']), '\x00\x00',
- chr(dis.opmap['DUP_TOP']),
- chr(dis.opmap['STORE_DEREF']), '\x00\x00',
- chr(dis.opmap['RETURN_VALUE'])
- ]),
- (), (), ('newval',), '', 'cell_changer', 1, '', ('c',), ()
-)
-
-def _change_cell_value(cell, newval):
- """ Changes the contents of 'cell' object to newval """
- return types.LambdaType(cell_changer_code, {}, None, (), (cell,))(newval)
-
-"""Constructors for 3rd party libraries
-Note: These can never be renamed due to client compatibility issues"""
-
-def _getobject(modname, attribute):
- mod = __import__(modname)
- return mod.__dict__[attribute]
-
-def _generateImage(size, mode, str_rep):
- """Generate image from string representation"""
- import Image
- i = Image.new(mode, size)
- i.fromstring(str_rep)
- return i
-
-def _lazyloadImage(fp):
- import Image
- fp.seek(0) #works in almost any case
- return Image.open(fp)
-
-"""Timeseries"""
-def _genTimeSeries(reduce_args, state):
- import scikits.timeseries.tseries as ts
- from numpy import ndarray
- from numpy.ma import MaskedArray
-
-
- time_series = ts._tsreconstruct(*reduce_args)
-
- #from setstate modified
- (ver, shp, typ, isf, raw, msk, flv, dsh, dtm, dtyp, frq, infodict) = state
- #print('regenerating %s' % dtyp)
-
- MaskedArray.__setstate__(time_series, (ver, shp, typ, isf, raw, msk, flv))
- _dates = time_series._dates
- #_dates.__setstate__((ver, dsh, typ, isf, dtm, frq)) #use remote typ
- ndarray.__setstate__(_dates,(dsh,dtyp, isf, dtm))
- _dates.freq = frq
- _dates._cachedinfo.update(dict(full=None, hasdups=None, steps=None,
- toobj=None, toord=None, tostr=None))
- # Update the _optinfo dictionary
- time_series._optinfo.update(infodict)
- return time_series
diff --git a/stochss/handlers/util/parameter_sweep.py b/stochss/handlers/util/parameter_sweep.py
index 0ef007ed5a..1676f2dce2 100755
--- a/stochss/handlers/util/parameter_sweep.py
+++ b/stochss/handlers/util/parameter_sweep.py
@@ -13,8 +13,7 @@
except ModuleNotFoundError:
pass
-from gillespy2.solvers.auto.ssa_solver import get_best_ssa_solver
-from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver
+from gillespy2 import VariableSSACSolver
def setup_species_results(c, is_2d):
@@ -146,8 +145,6 @@ def get_data_for_csv(c, keys):
class ParameterSweep1D():
def run(c, settings, verbose=False, is_ssa=False, solver=None):
- if not c.ps_model:
- raise Exception("The parameter sweep has not been configured!")
c.verbose = verbose
results = setup_results(c)
for i,v1 in enumerate(c.p1_range):
@@ -176,7 +173,7 @@ def to_csv(c, path='.', nametag='results_csv', stamp=None, keys=None):
if stamp is None:
now = datetime.now()
stamp = datetime.timestamp(now)
- directory = os.path.join(path, nametag + stamp)
+ directory = os.path.join(path, nametag + str(stamp))
filename = os.path.join(directory, keys+".csv")
if not os.path.exists(directory):
os.mkdir(directory)
@@ -262,8 +259,6 @@ def configure(self, gillespy2_model, settings, trajectories):
class ParameterSweep2D():
def run(c, settings, verbose=False, is_ssa=False, solver=None):
- if not c.ps_model:
- raise Exception("The parameter sweep has not been configured!")
c.verbose = verbose
results = setup_results(c, is_2d=True)
for i,v1 in enumerate(c.p1_range):
@@ -295,7 +290,7 @@ def to_csv(c, path='.', nametag='results_csv', stamp=None, keys=None):
if stamp is None:
now = datetime.now()
stamp = datetime.timestamp(now)
- directory = os.path.join(path, nametag + stamp)
+ directory = os.path.join(path, nametag + str(stamp))
filename = os.path.join(directory, keys+".csv")
if not os.path.exists(directory):
os.mkdir(directory)
diff --git a/stochss/handlers/util/plot_results.py b/stochss/handlers/util/plot_results.py
index fb3d7ccbc5..bd19f8986f 100755
--- a/stochss/handlers/util/plot_results.py
+++ b/stochss/handlers/util/plot_results.py
@@ -4,6 +4,7 @@
import os
import json
import pickle
+import traceback
from os import path
from .stochss_errors import StochSSFileNotFoundError, PlotNotAvailableError
@@ -28,8 +29,9 @@ def read_pickled_results(pickle_path):
results = pickle.load(pickle_file)
return results
except FileNotFoundError as err:
- raise StochSSFileNotFoundError("Could not find the plot file: {0}".format(err))
-
+ raise StochSSFileNotFoundError("Could not find the plot file: {0}".format(err),
+ traceback.format_exc())
+
def get_plot_fig(plots_file_path, plt_key):
'''
@@ -51,15 +53,14 @@ def get_plot_fig(plots_file_path, plt_key):
if os.path.exists(pickle_path):
results = read_pickled_results(pickle_path)
return get_plot_fig_from_results(results, plt_key)
- else:
- raise PlotNotAvailableError("The plot is not available: "+str(err))
+ raise PlotNotAvailableError("The plot is not available: "+str(err), traceback.format_exc())
else:
results = read_pickled_results(pickle_path)
return get_plot_fig_from_results(results, plt_key)
def get_plot_fig_from_results(results, plt_key):
- es_keys = ["stddevran","trajectories","stddev","avg"]
+ es_keys = ["stddevran", "trajectories", "stddev", "avg"]
if plt_key == "stddevran":
plt_fig = results.plotplotly_std_dev_range(return_plotly_figure=True)
@@ -88,7 +89,6 @@ def edit_plot_fig(plt_fig, plt_data):
plt_data : str
The data that needs to be applied to the plot.
'''
- plt_data = json.loads(plt_data)
for key in plt_data.keys():
if key == "title":
plt_fig['layout']['title']['text'] = plt_data[key]
@@ -102,14 +102,13 @@ def plot_results(plots_path, plt_key, plt_data=None):
user_dir = "/home/jovyan"
full_path = path.join(user_dir, plots_path)
-
+
plt_fig = get_plot_fig(full_path, plt_key)
- if type(plt_fig) is str:
+ if isinstance(plt_fig, str):
return plt_fig
if not plt_data:
return json.dumps(plt_fig)
plt_fig = edit_plot_fig(plt_fig, plt_data)
return json.dumps(plt_fig)
-
\ No newline at end of file
diff --git a/stochss/handlers/util/rename.py b/stochss/handlers/util/rename.py
index 2e2ba38cb9..3e6003ec25 100644
--- a/stochss/handlers/util/rename.py
+++ b/stochss/handlers/util/rename.py
@@ -3,12 +3,31 @@
import os
import json
import shutil
+import traceback
try:
from .stochss_errors import StochSSFileNotFoundError, StochSSPermissionsError
except:
from stochss_errors import StochSSFileNotFoundError, StochSSPermissionsError
+def get_file_name(file):
+ '''
+ Get the name of a file object
+
+ Attributes
+ ----------
+ file : str
+ String representation of a file object
+ '''
+ if file.endswith('/'):
+ file = file[:-1]
+ if '/' in file:
+ file = file.split('/').pop()
+ if '.' not in file:
+ return file
+ return '.'.join(file.split('.')[:-1])
+
+
def get_unique_file_name(new_name, dir_path):
'''
Get a unique new name for the target file.
@@ -25,7 +44,7 @@ def get_unique_file_name(new_name, dir_path):
i = 1
if exists:
ext = "." + new_name.split('.').pop()
- name = new_name.split(ext)[0]
+ name = get_file_name(new_name)
if "(" in name and ")" in name:
_i = name.split('(').pop().split(')')[0]
if _i.isdigit():
@@ -74,9 +93,9 @@ def rename(path, new_name):
try:
shutil.move(old_path, new_path)
except FileNotFoundError as err:
- raise StochSSFileNotFoundError("Could not read the file or directory: " + str(err))
+ raise StochSSFileNotFoundError("Could not read the file or directory: " + str(err), traceback.format_exc())
except PermissionError as err:
- raise StochSSPermissionsError("You do not have permission to copy this file or directory: " + str(err))
+ raise StochSSPermissionsError("You do not have permission to copy this file or directory: " + str(err), traceback.format_exc())
if old_path.endswith('/'):
new_path = new_path[:-1]
@@ -93,6 +112,7 @@ def rename(path, new_name):
info_file.truncate()
if changed:
+ new_name = new_path.split('/').pop()
message = "A file already exists with that name, {0} was renamed to {1} in order to prevent a file from being overwriten.".format(old_path.split('/').pop(), new_name)
else:
message = 'Success! {0} was renamed to {1}'.format(old_name, new_name)
diff --git a/stochss/handlers/util/run_model.py b/stochss/handlers/util/run_model.py
index 0b8de45e0d..74d3aea88f 100755
--- a/stochss/handlers/util/run_model.py
+++ b/stochss/handlers/util/run_model.py
@@ -3,10 +3,12 @@
import os
import sys
import json
+import numpy
import argparse
import logging
import pickle
import plotly
+import traceback
from io import StringIO
from gillespy2.core import log
@@ -15,16 +17,11 @@
if type(handler) is logging.StreamHandler:
handler.stream = log_stream
-
-from gillespy2 import Species, Parameter, Reaction, RateRule, Model, AssignmentRule, FunctionDefinition
-
-import numpy
import gillespy2.core.gillespySolver
-from gillespy2.core.events import EventAssignment, EventTrigger, Event
-from gillespy2.core.gillespyError import ModelError, SolverError, DirectoryError, BuildError, ExecutionError
-from gillespy2.solvers.numpy.basic_tau_leaping_solver import BasicTauLeapingSolver
-from gillespy2.solvers.numpy.basic_tau_hybrid_solver import BasicTauHybridSolver
-from gillespy2.solvers.cpp.variable_ssa_c_solver import VariableSSACSolver
+from gillespy2 import Species, Parameter, Reaction, RateRule, Model, AssignmentRule, FunctionDefinition
+from gillespy2 import EventAssignment, EventTrigger, Event
+from gillespy2 import ModelError, SimulationError, SolverError, DirectoryError, BuildError, ExecutionError
+from gillespy2 import TauLeapingSolver, TauHybridSolver, VariableSSACSolver, SSACSolver
import warnings
warnings.simplefilter("ignore")
@@ -234,7 +231,8 @@ def __init__(self, data, is_ode):
self.species = list(map(lambda s: self.build_specie(s, is_ode), data['species']))
self.parameters = list(map(lambda p: self.build_parameter(p), data['parameters']))
self.reactions = list(map(lambda r: self.build_reaction(r, self.parameters), data['reactions']))
- self.events = list(map(lambda e: self.build_event(e, self.species, self.parameters), data['eventsCollection']))
+ events = list(filter(lambda e: self.is_valid_event(e), data['eventsCollection']))
+ self.events = list(map(lambda e: self.build_event(e, self.species, self.parameters), events))
rate_rules = list(filter(lambda rr: self.is_valid_rate_rule(rr), data['rules']))
assignment_rules = list(filter(lambda rr: self.is_valid_assignment_rule(rr), data["rules"]))
self.rate_rules = list(map(lambda rr: self.build_rate_rules(rr, self.species, self.parameters), rate_rules))
@@ -358,6 +356,19 @@ def build_event_assignment(self, args, species, parameters):
return EventAssignment(variable=variable[0], expression=expression)
+ def is_valid_event(self, event):
+ if event['triggerExpression'] != "":
+ assignments = list(filter(lambda assignment: self.is_valid_assignment(assignment), event['eventAssignments']))
+ if len(assignments) > 0:
+ event['eventAssignments'] = assignments
+ return event
+
+
+ def is_valid_assignment(self, assignment):
+ if assignment['expression'] != "":
+ return assignment
+
+
def is_valid_rate_rule(self, rr):
if rr['type'] == "Rate Rule" and not rr['expression'] == "":
return rr
@@ -423,7 +434,10 @@ def build_stoich_species_dict(self, args):
for stoich_specie in args:
key = stoich_specie['specie']['name']
value = stoich_specie['ratio']
- d[key] = value
+ if key not in d.keys():
+ d[key] = value
+ else:
+ d[key] += value
return d
@@ -450,17 +464,12 @@ def get_models(full_path, name):
stochss_model['name'] = name
is_ode = stochss_model['defaultMode'] == "continuous"
except FileNotFoundError as error:
- print(str(error))
+ print("{0}\n{1}".format(error, traceback.format_exc()))
log.critical("Failed to find the model file: {0}".format(error))
- try:
- _model = ModelFactory(stochss_model, is_ode) # build GillesPy2 model
- gillespy2_model = _model.model
- except Exception as error:
- print(str(error))
- log.error(str(error))
- gillespy2_model = None
-
+ _model = ModelFactory(stochss_model, is_ode) # build GillesPy2 model
+ gillespy2_model = _model.model
+
return gillespy2_model, stochss_model
@@ -475,7 +484,8 @@ def run_model(model_path):
model_path : str
Path to the model file.
'''
- gillespy2_model, stochss_model = get_models(model_path, model_path.split('/').pop().split('.')[0])
+ from rename import get_file_name
+ gillespy2_model, stochss_model = get_models(model_path, get_file_name(model_path))
workflow = GillesPy2Workflow(None, model_path)
results = workflow.run_preview(gillespy2_model, stochss_model)
return results
@@ -511,7 +521,6 @@ def run_solver(model, data, run_timeout, is_ssa=False, solver=None, rate1=None,
def chooseForMe(model, run_timeout, is_ssa, solver, rate1, rate2):
- print("running choose for me")
if solver is None:
solver = model.get_best_solver(precompile=False)
@@ -530,7 +539,7 @@ def chooseForMe(model, run_timeout, is_ssa, solver, rate1, rate2):
def basicODESolver(model, data, run_timeout):
'''
- Run the model with the GillesPy2 BasicODESolver.
+ Run the model with the GillesPy2 ODESolver.
Attributes
----------
@@ -543,7 +552,7 @@ def basicODESolver(model, data, run_timeout):
'''
# print("running ode solver")
results = model.run(
- solver = BasicTauHybridSolver,
+ solver = TauHybridSolver,
timeout = run_timeout,
integrator_options = { 'atol' : data['absoluteTol'], 'rtol' : data['relativeTol']}
)
@@ -563,11 +572,12 @@ def ssaSolver(model, data, run_timeout):
run_timeout : int
Number of seconds until the simulation times out.
'''
- print("running ssa solver")
+ solver = SSACSolver(model=model)
seed = data['seed']
if(seed == -1):
seed = None
results = model.run(
+ solver = solver,
timeout = run_timeout,
number_of_trajectories = data['realizations'],
seed = seed
@@ -594,7 +604,7 @@ def v_ssa_solver(model, data, run_timeout, solver, rate1, rate2):
def basicTauLeapingSolver(model, data, run_timeout):
'''
- Run the model with the GillesPy2 BasicTauLeapingSolver.
+ Run the model with the GillesPy2 TauLeapingSolver.
Attributes
----------
@@ -610,7 +620,7 @@ def basicTauLeapingSolver(model, data, run_timeout):
if(seed == -1):
seed = None
results = model.run(
- solver = BasicTauLeapingSolver,
+ solver = TauLeapingSolver,
timeout = run_timeout,
number_of_trajectories = data['realizations'],
seed = seed,
@@ -621,7 +631,7 @@ def basicTauLeapingSolver(model, data, run_timeout):
def basicTauHybridSolver(model, data, run_timeout):
'''
- Run the model with the GillesPy2 BasicTauHybridSolver.
+ Run the model with the GillesPy2 TauHybridSolver.
Attributes
----------
@@ -637,7 +647,7 @@ def basicTauHybridSolver(model, data, run_timeout):
if(seed == -1):
seed = None
results = model.run(
- solver = BasicTauHybridSolver,
+ solver = TauHybridSolver,
timeout = run_timeout,
number_of_trajectories = data['realizations'],
seed = seed,
@@ -680,7 +690,9 @@ def get_parsed_args():
if 'GillesPy2 simulation exceeded timeout.' in logs:
resp['timeout'] = True
except ModelError as error:
- resp['errors'] = str(error)
+ resp['errors'] = "{0}".format(error)
+ except SimulationError as error:
+ resp['errors'] = "{0}".format(error)
with open(outfile, "w") as fd:
json.dump(resp, fd)
open(outfile + ".done", "w").close()
diff --git a/stochss/handlers/util/run_workflow.py b/stochss/handlers/util/run_workflow.py
index e2b9f2a79b..cc0071ac2a 100755
--- a/stochss/handlers/util/run_workflow.py
+++ b/stochss/handlers/util/run_workflow.py
@@ -8,6 +8,7 @@
import plotly
import argparse
import logging
+import traceback
from shutil import copyfile
from datetime import datetime, timezone, timedelta
@@ -63,7 +64,9 @@ def save_existing_workflow(wkfl, wkfl_type, initialize):
is_new : boolean
Represents whether the workflow is new or not.
'''
- old_model_path = os.path.join(wkfl.wkfl_path, wkfl.mdl_file) # path to the old model
+ with open(wkfl.info_path, 'r') as info_file:
+ file_name = json.load(info_file)['source_model'].split('/').pop()
+ old_model_path = os.path.join(wkfl.wkfl_path, file_name) # path to the old model
os.remove(old_model_path) # remove the old model
try:
copyfile(wkfl.mdl_path, wkfl.wkfl_mdl_path) # copy the new model into the workflow directory
diff --git a/stochss/handlers/util/stochss_errors.py b/stochss/handlers/util/stochss_errors.py
index 061f9c4b4b..00bc72084d 100644
--- a/stochss/handlers/util/stochss_errors.py
+++ b/stochss/handlers/util/stochss_errors.py
@@ -1,74 +1,92 @@
class StochSSAPIError(Exception):
- pass
+
+ def __init__(self, status_code, reason, msg, trace):
+ super().__init__()
+ self.status_code = status_code
+ self.reason = reason
+ self.message = msg
+ self.traceback = trace
class ModelNotFoundError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 404
- self.reason = "Model File Not Found"
- self.message = msg
+ def __init__(self, msg, trace=None):
+ super().__init__(404, "Model File Not Found", msg, trace)
class StochSSFileNotFoundError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 404
- self.reason = "StochSS File or Directory Not Found"
- self.message = msg
+ def __init__(self, msg, trace=None):
+ super().__init__(404, "StochSS File or Directory Not Found", msg, trace)
class StochSSPermissionsError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 403
- self.reason = "Permission Denied"
- self.message = msg
+ def __init__(self, msg, trace=None):
+ super().__init__(403, "Permission Denied", msg, trace)
class ModelNotJSONFormatError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 406
- self.reason = "Model Data Not JSON Format"
- self.message = msg
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "Model Data Not JSON Format", msg, trace)
class FileNotJSONFormatError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 406
- self.reason = "File Data Not JSON Format"
- self.message = msg
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "File Data Not JSON Format", msg, trace)
class JSONFileNotModelError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 406
- self.reason = "JSON File Not StochSS Model Format"
- self.message = msg
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "JSON File Not StochSS Model Format", msg, trace)
class PlotNotAvailableError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 406
- self.reason = "Plot Figure Not Available"
- self.message = msg
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "Plot Figure Not Available", msg, trace)
class StochSSWorkflowError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 403
- self.reason = "Workflow Errored on Run"
- self.message = msg
+ def __init__(self, msg, trace=None):
+ super().__init__(403, "Workflow Errored on Run", msg, trace)
class StochSSWorkflowNotCompleteError(StochSSAPIError):
- def __init__(self, msg):
- self.status_code = 403
- self.reason = "Workflow Run Not Complete"
- self.message = msg
\ No newline at end of file
+ def __init__(self, msg, trace=None):
+ super().__init__(403, "Workflow Run Not Complete", msg, trace)
+
+
+class StochSSExportCombineError(StochSSAPIError):
+
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "No Completed Workflows Found", msg, trace)
+
+
+class FileNotSBMLFormatError(StochSSAPIError):
+
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "File Not SBML Format", msg, trace)
+
+
+class ImporperMathMLFormatError(StochSSAPIError):
+
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "Imporper Math-ML Format", msg, trace)
+
+
+class FileNotZipArchiveError(StochSSAPIError):
+
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "File Not Zip Archive", msg, trace)
+
+
+class StochSSFileExistsError(StochSSAPIError):
+
+ def __init__(self, msg, trace=None):
+ super().__init__(406, "File Already Exists", msg, trace)
\ No newline at end of file
diff --git a/stochss/handlers/util/upload_file.py b/stochss/handlers/util/upload_file.py
old mode 100644
new mode 100755
index 66e63364e1..b9e14aa2fc
--- a/stochss/handlers/util/upload_file.py
+++ b/stochss/handlers/util/upload_file.py
@@ -2,9 +2,17 @@
import os
import json
-from .rename import get_unique_file_name
-from .convert_sbml_to_model import convert_to_gillespy_model, convert_to_stochss_model
-
+import zipfile
+import shutil
+# from .rename import get_unique_file_name
+# from .convert_sbml_to_model import convert_to_gillespy_model, convert_to_stochss_model
+# try:
+# from stochss_errors import FileNotZipArchiveError
+# except ImportError:
+# from .stochss_errors import FileNotZipArchiveError
+from stochss.handlers.util.rename import get_unique_file_name
+from stochss.handlers.util.convert_sbml_to_model import convert_to_gillespy_model, convert_to_stochss_model
+from stochss.handlers.util.stochss_errors import FileNotZipArchiveError, StochSSFileExistsError
def validate_model(body, file_name):
try:
@@ -12,9 +20,8 @@ def validate_model(body, file_name):
except json.decoder.JSONDecodeError:
return False, False, "The file {0} is not in JSON format.".format(file_name)
- test_keys = ["is_spatial","defaultID","defaultMode","modelSettings","simulationSettings",
- "parameterSweepSettings","species","parameters","reactions","eventsCollection",
- "rules","functionDefinitions","meshSettings","initialConditions"]
+ test_keys = ["species","parameters","reactions","eventsCollection",
+ "rules","functionDefinitions"]
other_keys = []
keys = list(body.keys())
for key in keys:
@@ -22,8 +29,6 @@ def validate_model(body, file_name):
test_keys.remove(key)
else:
other_keys.append(key)
- if len(other_keys):
- return False, True, "The following keys were found in {0} that don't exist within a StochSS model: {1}".format(file_name, ', '.join(other_keys))
if len(test_keys):
return False, True, "The following keys are missing from {0}: {1}".format(file_name, ', '.join(test_keys))
return True, True, ""
@@ -89,12 +94,15 @@ def upload_sbml_file(dir_path, _file_name, name, body):
def unzip_file(full_path, dir_path):
- import zipfile
- import shutil
-
with zipfile.ZipFile(full_path, "r") as zip_file:
+ par_path = os.path.dirname(full_path)
+ member_list = list(map(lambda member: os.path.exists(os.path.join(par_path, member)), zip_file.namelist()))
+ if True in member_list:
+ os.remove(full_path)
+ raise StochSSFileExistsError("Unable to upload {0} as the parent directory in {0} already exists.".format(full_path.split("/").pop()))
zip_file.extractall(dir_path)
- shutil.rmtree(os.path.join(dir_path, "__MACOSX"))
+ if "__MACOSX" in os.listdir(dir_path):
+ shutil.rmtree(os.path.join(dir_path, "__MACOSX"))
def upload_file(dir_path, file_name, name, ext, body, file_type, exts):
@@ -113,7 +121,10 @@ def upload_file(dir_path, file_name, name, ext, body, file_type, exts):
else:
file.write(body)
if ext == "zip":
- unzip_file(full_path, dir_path)
+ try:
+ unzip_file(full_path, dir_path)
+ except zipfile.BadZipFile as err:
+ errors.append(str(err))
dir_path = dir_path.replace("/home/jovyan", "")
if is_valid:
message = "{0} was successfully uploaded to {1}".format(file_name, dir_path)
@@ -168,3 +179,71 @@ def upload(file_data, file_info):
return resp
+
+def upload_from_link(path):
+ import urllib
+
+ user_dir = "/home/jovyan"
+ response = urllib.request.urlopen(path)
+ zip_path = os.path.join(user_dir, path.split('/').pop())
+ if os.path.exists(zip_path):
+ resp = {"message":"Could not upload this file as the {} \
+ already exists".format(path.split("/").pop()),
+ "reason":"Zip Archive Already Exists"}
+ return resp
+ with open(zip_path, "wb") as zip_file:
+ zip_file.write(response.read())
+ try:
+ unzip_file(zip_path, user_dir)
+ except StochSSFileExistsError as err:
+ return {"message":err.message, "reason":err.reason}
+ file_path = get_file_path(user_dir).replace(user_dir+"/", "")
+ target_file = path.split('/').pop()
+ resp = {"message":"Successfully uploaded the file {} to {}".format(target_file,
+ file_path),
+ "file_path":file_path}
+ return resp
+
+
+def get_file_path(path):
+ files = os.listdir(path)
+ paths = list(map(lambda file: os.path.join(path, file), files))
+ return max(paths, key=os.path.getctime)
+
+def get_parsed_args():
+ '''
+ Initializes an argparser to document this script and returns a dict of
+ the arguments that were passed to the script from the command line.
+
+ Attributes
+ ----------
+
+ '''
+ import argparse
+
+ parser = argparse.ArgumentParser(description="Upload a file from an external link")
+ parser.add_argument("file_path", help="The path to the external file.")
+ parser.add_argument("outfile", help="The path to the response file")
+ args = parser.parse_args()
+
+ return args
+
+
+if __name__ == "__main__":
+ args = get_parsed_args()
+ if args.file_path != 'None':
+ resp = upload_from_link(args.file_path)
+ with open(args.outfile, "w") as fd:
+ json.dump(resp, fd)
+ open(args.outfile + ".done", "w").close()
+ else:
+ done = os.path.exists(args.outfile + ".done")
+ if done:
+ with open(args.outfile, 'r') as response_file:
+ resp = json.load(response_file)
+ os.remove(args.outfile)
+ os.remove(args.outfile+".done")
+ else:
+ resp = {}
+ resp['done'] = done
+ print(json.dumps(resp))
diff --git a/stochss/handlers/workflows.py b/stochss/handlers/workflows.py
index c8bffe5715..e57852e37b 100644
--- a/stochss/handlers/workflows.py
+++ b/stochss/handlers/workflows.py
@@ -7,9 +7,11 @@
import logging
import json
import os
+import ast
import subprocess
-from notebook.base.handlers import APIHandler
+import traceback
from json.decoder import JSONDecodeError
+from notebook.base.handlers import APIHandler
from tornado import web
from .util.workflow_status import get_status
@@ -21,14 +23,16 @@
from .util.convert_to_model_inference_notebook import convert_to_mdl_inference_nb
from .util.stochss_errors import StochSSAPIError
from .util.run_workflow import initialize
+from .util.rename import get_file_name
log = logging.getLogger('stochss')
+# pylint: disable=abstract-method
class LoadWorkflowAPIHandler(APIHandler):
'''
########################################################################
- Handler for getting the Workflow's status, info, type, model for the
+ Handler for getting the Workflow's status, info, type, model for the
Workflow manager page.
########################################################################
'''
@@ -45,68 +49,111 @@ async def get(self):
path = self.get_query_argument(name="path")
self.set_header('Content-Type', 'application/json')
user_dir = "/home/jovyan"
- log.debug("Time stamp of the workflow: {0}".format(stamp))
- log.debug("The type of the workflow: {0}".format(wkfl_type))
- log.debug("The path to the workflow/model: {0}".format(path))
- title_types = {"gillespy":"Ensemble Simulation","parameterSweep":"Parameter Sweep"}
- name_types = {"gillespy":"_ES","parameterSweep":"_PS"}
- parent_path = os.path.dirname(path)
+ log.debug("Time stamp of the workflow: %s", stamp)
+ log.debug("The type of the workflow: %s", wkfl_type)
+ log.debug("The path to the workflow/model: %s", path)
+ title_types = {"gillespy":"Ensemble Simulation", "parameterSweep":"Parameter Sweep"}
+ name_types = {"gillespy":"_ES", "parameterSweep":"_PS"}
+ parent_path = self.get_query_argument(name='parentPath', default=os.path.dirname(path))
if path.endswith('.mdl'):
- resp = {"mdlPath":path,"timeStamp":stamp,"type":wkfl_type,
- "status":"new","titleType":title_types[wkfl_type],
- "wkflParPath": parent_path}
- name = path.split('/').pop().split('.')[0]
- resp["wkflName"] = name + name_types[wkfl_type] + stamp
+ resp = {"mdlPath":path, "timeStamp":stamp, "type":wkfl_type,
+ "status":"new", "titleType":title_types[wkfl_type],
+ "wkflParPath": parent_path, "startTime":None}
+ resp["wkflName"] = (get_file_name(path) +
+ name_types[wkfl_type] + stamp)
resp["wkflDir"] = resp['wkflName'] + ".wkfl"
- resp["startTime"] = None
elif path.endswith('.wkfl'):
- resp = {"wkflDir":path.split('/').pop(), "wkflParPath":parent_path}
+ resp = {"wkflDir":path.split('/').pop(), "wkflParPath":parent_path,
+ "wkflName":get_file_name(path)}
resp["status"] = get_status(path)
- name = path.split('/').pop().split('.')[0]
- resp["wkflName"] = name
- try:
- resp["timeStamp"] = "_"+"_".join(name.split('_')[-2:])
- except:
- resp["timeStamp"] = None
+ resp["timeStamp"] = "_"+"_".join(resp['wkflName'].split('_')[-2:])
try:
with open(os.path.join(user_dir, path, "info.json"), "r") as info_file:
info = json.load(info_file)
resp["type"] = info['type']
resp["startTime"] = info['start_time']
- resp["mdlPath"] = info['source_model'] if resp['status'] == "ready" else info['wkfl_model']
+ resp["mdlPath"] = (info['source_model'] if resp['status'] == "ready"
+ else info['wkfl_model'])
resp["titleType"] = title_types[info['type']]
except FileNotFoundError as err:
self.set_status(404)
- error = {"Reason":"Info File Not Found","Message":"Could not find the workflow info file: "+str(err)}
- log.error("Exception information: {0}".format(error))
- self.write(error)
+ error = {"Reason":"Info File Not Found",
+ "Message":"Could not find the workflow info file: "+str(err)}
+ self.respond_with_error(error)
except JSONDecodeError as err:
self.set_status(406)
- error = {"Reason":"File Not JSON Format","Message":"The workflow info file is not JSON decodable: "+str(err)}
- log.error("Exception information: {0}".format(error))
- self.write(error)
+ error = {"Reason":"File Not JSON Format",
+ "Message":"The workflow info file is not JSON decodable: "+str(err)}
+ self.respond_with_error(error)
try:
with open(os.path.join(user_dir, resp['mdlPath']), "r") as model_file:
resp["model"] = json.load(model_file)
- except:
+ self.update_model_data(resp["model"])
+ except FileNotFoundError:
resp["model"] = None
- resp["error"] = {"Reason":"Model Not Found","Message":"Could not find the model file: "+resp['mdlPath']}
- resp["settings"] = self.get_settings(os.path.join(resp['wkflParPath'], resp['wkflDir']), resp['mdlPath'])
- log.debug("Response: {0}".format(resp))
+ resp["error"] = {"Reason":"Model Not Found",
+ "Message":"Could not find the model file: "+resp['mdlPath']}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", resp["error"], trace)
+ resp["settings"] = self.get_settings(os.path.join(resp['wkflParPath'], resp['wkflDir']),
+ resp['mdlPath'])
+ log.debug("Response: %s", resp)
self.write(resp)
self.finish()
- def get_settings(self, wkfl_path, mdl_path):
+ @classmethod
+ def update_model_data(cls, data):
+ param_ids = []
+ for param in data['parameters']:
+ param_ids.append(param['compID'])
+ if isinstance(param['expression'], str):
+ try:
+ param['expression'] = ast.literal_eval(param['expression'])
+ except ValueError:
+ pass
+ for reaction in data['reactions']:
+ if reaction['rate'].keys() and isinstance(reaction['rate']['expression'], str):
+ try:
+ reaction['rate']['expression'] = ast.literal_eval(reaction['rate']['expression'])
+ except ValueError:
+ pass
+ for event in data['eventsCollection']:
+ for assignment in event['eventAssignments']:
+ if assignment['variable']['compID'] in param_ids:
+ try:
+ assignment['variable']['expression'] = ast.literal_eval(assignment['variable']['expression'])
+ except ValueError:
+ pass
+ for rule in data['rules']:
+ if rule['variable']['compID'] in param_ids:
+ try:
+ rule['variable']['expression'] = ast.literal_eval(rule['variable']['expression'])
+ except ValueError:
+ pass
+
+
+ @classmethod
+ def get_settings(cls, wkfl_path, mdl_path):
+ '''
+ Get the settings for the workflow.
+
+ Attributes
+ ----------
+ wkfl_path : string
+ The path to the workflow
+ mdl_path : string
+ The path to the model used by the workflow
+ '''
settings_path = os.path.join(wkfl_path, "settings.json")
-
+
if os.path.exists(settings_path):
with open(settings_path, "r") as settings_file:
return json.load(settings_file)
with open("/stochss/stochss_templates/workflowSettingsTemplate.json", "r") as template_file:
settings_template = json.load(template_file)
-
+
if os.path.exists(mdl_path):
with open(mdl_path, "r") as mdl_file:
mdl = json.load(mdl_file)
@@ -115,12 +162,27 @@ def get_settings(self, wkfl_path, mdl_path):
"parameterSweepSettings":mdl['parameterSweepSettings'],
"resultsSettings":settings_template['resultsSettings']}
return settings
- except:
+ except KeyError:
return settings_template
else:
return settings_template
+ def respond_with_error(self, error):
+ '''
+ Respond to the api request with an error
+
+ Attributes
+ ----------
+ error : dict
+ Information on the error being reported
+ '''
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
+ self.write(error)
+
+
class RunWorkflowAPIHandler(APIHandler):
'''
########################################################################
@@ -131,28 +193,30 @@ class RunWorkflowAPIHandler(APIHandler):
async def get(self):
'''
Start running a workflow and record the time in UTC in the workflow_info file.
- Creates workflow directory and workflow_info file if running a new workflow. Copys
+ Creates workflow directory and workflow_info file if running a new workflow. Copys
model into the workflow directory.
Attributes
----------
'''
data = json.loads(self.get_query_argument(name="data"))
- log.debug("Handler query string: {0}".format(data))
+ log.debug("Handler query string: %s", data)
opt_type = data['optType']
wkfl_type = data['type']
model_path = data['mdlPath']
workflow_path = data['wkflPath']
- log.debug("Actions for the workflow: {0}".format(opt_type))
- log.debug("Type of workflow: {0}".format(wkfl_type))
- log.debug("Path to the model: {0}".format(model_path))
- log.debug("Path to the workflow: {0}".format(workflow_path))
- exec_cmd = ["/stochss/stochss/handlers/util/run_workflow.py", "{}".format(model_path), "{0}".format(workflow_path), "{0}".format(wkfl_type) ] # Script commands
+ log.debug("Actions for the workflow: %s", opt_type)
+ log.debug("Type of workflow: %s", wkfl_type)
+ log.debug("Path to the model: %s", model_path)
+ log.debug("Path to the workflow: %s", workflow_path)
+ exec_cmd = ["/stochss/stochss/handlers/util/run_workflow.py",
+ "{}".format(model_path), "{0}".format(workflow_path),
+ "{0}".format(wkfl_type)] # Script commands
opt_type = list(map(lambda el: "-" + el, list(opt_type))) # format the opt_type for argparse
exec_cmd.extend(opt_type) # Add opt_type to exec_cmd
- log.debug("Exec command sent to the subprocess: {0}".format(exec_cmd))
+ log.debug("Exec command sent to the subprocess: %s", exec_cmd)
log.debug('Sending the workflow run cmd')
- pipe = subprocess.Popen(exec_cmd)
+ subprocess.Popen(exec_cmd)
log.debug('The workflow has started')
self.finish()
@@ -173,17 +237,17 @@ async def get(self):
----------
'''
data = json.loads(self.get_query_argument(name="data"))
- log.debug("Handler query string: {0}".format(data))
+ log.debug("Handler query string: %s", data)
opt_type = data['optType']
wkfl_type = data['type']
model_path = data['mdlPath']
workflow_path = data['wkflPath']
settings = data['settings']
- log.debug("Actions for the workflow: {0}".format(opt_type))
- log.debug("Type of workflow: {0}".format(wkfl_type))
- log.debug("Path to the model: {0}".format(model_path))
- log.debug("Path to the workflow: {0}".format(workflow_path))
- kwargs = {"save":True,"settings":settings}
+ log.debug("Actions for the workflow: %s", opt_type)
+ log.debug("Type of workflow: %s", wkfl_type)
+ log.debug("Path to the model: %s", model_path)
+ log.debug("Path to the workflow: %s", workflow_path)
+ kwargs = {"save":True, "settings":settings}
if 'n' in opt_type:
kwargs['new'] = True
else:
@@ -191,11 +255,9 @@ async def get(self):
if 'r' in opt_type:
kwargs['run'] = True
resp = initialize(model_path, workflow_path, wkfl_type, **kwargs)
- log.debug("Response to the command: {0}".format(resp))
+ log.debug("Response to the command: %s", resp)
if resp:
self.write(resp)
- else:
- self.write(errors)
self.finish()
@@ -216,7 +278,7 @@ async def get(self):
workflow_path = self.get_query_argument(name="path")
log.debug('Getting the status of the workflow')
status = get_status(workflow_path)
- log.debug('The status of the workflow is: {0}\n'.format(status))
+ log.debug('The status of the workflow is: %s', status)
self.write(status)
self.finish()
@@ -230,34 +292,40 @@ class PlotWorkflowResultsAPIHandler(APIHandler):
@web.authenticated
async def get(self):
'''
- Retrieve a plot figure of the workflow results based on the plot type
+ Retrieve a plot figure of the workflow results based on the plot type
in the request body.
Attributes
----------
'''
workflow_path = self.get_query_argument(name="path")
- log.debug("The path to the workflow: {0}\n".format(workflow_path))
+ log.debug("The path to the workflow: %s", workflow_path)
body = json.loads(self.get_query_argument(name='data'))
- log.debug("Plot args passed to the plot: {0}\n".format(body))
+ log.debug("Plot args passed to the plot: %s", body)
results_path = os.path.join(workflow_path, 'results/plots.json')
- log.debug("Path to the workflow results: {0}\n".format(results_path))
+ log.debug("Path to the workflow results: %s", results_path)
plt_key = body['plt_key']
- log.debug("Key identifying the requested plot: {0}\n".format(plt_key))
+ log.debug("Key identifying the requested plot: %s", plt_key)
plt_data = body['plt_data']
- log.debug("Title and axis data for the plot: {0}\n".format(plt_data))
+ log.debug("Title and axis data for the plot: %s", plt_data)
self.set_header('Content-Type', 'application/json')
try:
if "None" in plt_data:
plt_fig = plot_results(results_path, plt_key)
else:
- plt_fig = plot_results(results_path, plt_key, plt_data) # Add plot data to the exec cmd if its not "None"
- log.debug("Plot figure: {0}\n".format(plt_fig))
+ # Add plot data to the exec cmd if its not "None"
+ plt_fig = plot_results(results_path, plt_key, plt_data)
+ log.debug("Plot figure: %s", plt_fig)
self.write(plt_fig)
except StochSSAPIError as err:
self.set_status(err.status_code)
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}\n".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -277,24 +345,27 @@ async def get(self):
----------
'''
logs_path = self.get_query_argument(name="path")
- log.debug("Path to the workflow logs file: {0}\n".format(logs_path))
+ log.debug("Path to the workflow logs file: %s", logs_path)
full_path = os.path.join("/home/jovyan/", logs_path)
- log.debug("Full path to the workflow logs file: {0}\n".format(full_path))
+ log.debug("Full path to the workflow logs file: %s", full_path)
try:
with open(full_path, 'r') as log_file:
data = log_file.read()
- log.debug("Contents of the log file: {0}\n".format(data))
+ log.debug("Contents of the log file: %s", data)
if data:
resp = data
else:
resp = "No logs were recoded for this workflow."
- log.debug("Response: {0}\n".format(resp))
+ log.debug("Response: %s", resp)
self.write(resp)
except FileNotFoundError as err:
self.set_status(404)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":"StochSS File or Directory Not Found","Message":"Could not find the workflow log file: "+str(err)}
- log.error("Exception information: {0}\n".format(error))
+ error = {"Reason":"StochSS File or Directory Not Found",
+ "Message":"Could not find the workflow log file: "+str(err)}
+ trace = traceback.format_exc()
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
self.finish()
@@ -302,7 +373,7 @@ async def get(self):
class WorkflowNotebookHandler(APIHandler):
'''
##############################################################################
- Handler for handling conversions from model (.mdl) file or workflows (.wkfl)
+ Handler for handling conversions from model (.mdl) file or workflows (.wkfl)
to Jupyter Notebook (.ipynb) file for notebook workflows.
##############################################################################
'''
@@ -316,38 +387,122 @@ async def get(self):
'''
log.setLevel(logging.DEBUG)
workflow_type = self.get_query_argument(name="type")
- path = self.get_query_argument(name="path")
+ path = os.path.join("/home/jovyan", self.get_query_argument(name="path"))
settings = None
if path.endswith('.wkfl'):
- name = path.split('/').pop().split('.')[0].replace('-', '_')
+ name = get_file_name(path)
with open(os.path.join(path, "info.json"), "r") as info_file:
info = json.load(info_file)
workflow_type = info['type']
with open(os.path.join(path, "settings.json"), "r") as settings_file:
settings = json.load(settings_file)
if workflow_type == "parameterSweep":
- workflow_type = "1d_parameter_sweep" if settings['parameterSweepSettings']['is1D'] else "2d_parameter_sweep"
+ workflow_type = ("1d_parameter_sweep" if settings['parameterSweepSettings']['is1D']
+ else "2d_parameter_sweep")
+ dest_path = os.path.dirname(path)
path = info['source_model'] if info['wkfl_model'] is None else info['wkfl_model']
- log.debug("Name for the notebook: {0}".format(name))
+ log.debug("Name for the notebook: %s", name)
+ else:
+ dest_path = self.get_query_argument(name="parentPath")
- log.debug("Type of workflow to be run: {0}\n".format(workflow_type))
- log.debug("Path to the model: {0}\n".format(path))
+ log.debug("Type of workflow to be run: %s", workflow_type)
+ log.debug("Path to the model: %s", path)
workflows = {"gillespy":convert_to_notebook,
- "1d_parameter_sweep":convert_to_1d_psweep_nb,
- "2d_parameter_sweep":convert_to_2d_psweep_nb,
- "sciope_model_exploration":convert_to_sciope_me,
- "model_inference":convert_to_mdl_inference_nb}
+ "1d_parameter_sweep":convert_to_1d_psweep_nb,
+ "2d_parameter_sweep":convert_to_2d_psweep_nb,
+ "sciope_model_exploration":convert_to_sciope_me,
+ "model_inference":convert_to_mdl_inference_nb}
try:
- resp = workflows[workflow_type](path, name=name, settings=settings) if settings is not None else workflows[workflow_type](path)
- log.debug("Response: {0}\n".format(resp))
+ resp = (workflows[workflow_type](path, name=name, settings=settings,
+ dest_path=dest_path)
+ if settings is not None else workflows[workflow_type](path,
+ dest_path=dest_path))
+ log.debug("Response: %s", resp)
self.write(resp)
except StochSSAPIError as err:
self.set_status(err.status_code)
self.set_header('Content-Type', 'application/json')
- error = {"Reason":err.reason,"Message":err.message}
- log.error("Exception information: {0}\n".format(error))
+ error = {"Reason":err.reason, "Message":err.message}
+ if err.traceback is None:
+ trace = traceback.format_exc()
+ else:
+ trace = err.traceback
+ log.error("Exception information: %s\n%s", error, trace)
+ error['Traceback'] = trace
self.write(error)
log.setLevel(logging.WARNING)
self.finish()
+
+class SavePlotAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for handling conversions from model (.mdl) file or workflows (.wkfl)
+ to Jupyter Notebook (.ipynb) file for notebook workflows.
+ ##############################################################################
+ '''
+ @web.authenticated
+ async def post(self):
+ '''
+ Create a jupyter notebook workflow using a stochss model.
+
+ Attributes
+ ----------
+ '''
+ self.set_header('Content-Type', 'application/json')
+ path = self.get_query_argument(name="path")
+ plot = json.loads(self.request.body.decode())
+ log.debug("The path to the workflow setting file: %s", path)
+ log.debug("The plot to be saved: %s", plot)
+
+ with open(path, "r") as settings_file:
+ settings = json.load(settings_file)
+ log.debug("Original settings: %s", settings)
+
+ settings['resultsSettings']['outputs'].append(plot)
+ log.debug("New settings: %s", settings)
+
+ with open(path, "w") as settings_file:
+ json.dump(settings, settings_file)
+
+ resp = {"message":"The plot was successfully saved", "data":plot}
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ self.finish()
+
+
+class SaveAnnotationAPIHandler(APIHandler):
+ '''
+ ##############################################################################
+ Handler for saving annotations for workflows.
+ ##############################################################################
+ '''
+ @web.authenticated
+ async def post(self):
+ '''
+ Adds/updates the workflows annotation in the info file.
+
+ Attributes
+ ----------
+ '''
+ self.set_header('Content-Type', 'application/json')
+ path = self.get_query_argument(name="path")
+ annotation = json.loads(self.request.body.decode())['annotation']
+ log.debug("The path to the workflow info file: %s", path)
+ log.debug("The annotation to be saved: %s", annotation)
+
+ with open(path, "r") as info_file:
+ info = json.load(info_file)
+ log.debug("Original info: %s", info)
+
+ info['annotation'] = annotation
+ log.debug("New info: %s", info)
+
+ with open(path, "w") as info_file:
+ json.dump(info, info_file)
+
+ resp = {"message":"The annotation was successfully saved", "data":annotation}
+ log.debug("Response message: %s", resp)
+ self.write(resp)
+ self.finish()
diff --git a/stochss/tests/run_tests.py b/stochss/tests/run_tests.py
index 33c8f82a31..e8ea377acf 100755
--- a/stochss/tests/run_tests.py
+++ b/stochss/tests/run_tests.py
@@ -1,6 +1,8 @@
#!/usr/bin/env python3
-import unittest, sys, os
+import unittest
+import sys
+import os
import argparse
parser = argparse.ArgumentParser()
@@ -15,11 +17,23 @@
import test_model_template
import test_settings_template
import test_convert_sbml
+ import test_upload_file
+ import test_rename
+ import test_generate_zip_file
+ import test_workflow_status
+ import test_ls
+ import test_duplicate
modules = [
test_model_template,
test_settings_template,
- test_convert_sbml
+ test_convert_sbml,
+ test_rename,
+ test_upload_file,
+ test_generate_zip_file,
+ test_workflow_status,
+ test_ls,
+ test_duplicate
]
for module in modules:
diff --git a/stochss/tests/test_duplicate.py b/stochss/tests/test_duplicate.py
new file mode 100644
index 0000000000..80449c7cfa
--- /dev/null
+++ b/stochss/tests/test_duplicate.py
@@ -0,0 +1,325 @@
+import unittest, os, tempfile
+from pathlib import Path
+from handlers.util.duplicate import *
+
+class TestDuplicate(unittest.TestCase):
+
+ #unit tests for method get_unique_file_name
+
+ def test_get_unique_file_name_notcopy_noext(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filename = "test_file"
+ test_filepath = os.path.join(tempdir, test_filename)
+ assert get_unique_file_name(test_filepath) == os.path.join(tempdir,"test_file-copy")
+
+ def test_get_unique_file_name_iscopy_noext(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filename = "test_file-copy"
+ test_filepath = os.path.join(tempdir, test_filename)
+ assert get_unique_file_name(test_filepath) == os.path.join(tempdir, 'test_file-copy(2)')
+
+ def test_get_unique_file_name_notcopy_hasext(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filename = "test_file.sample"
+ test_filepath = os.path.join(tempdir, test_filename)
+ assert get_unique_file_name(test_filepath) == os.path.join(tempdir, 'test_file-copy.sample')
+
+ def test_get_unique_file_name_iscopy_hasext(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filename = "test_file-copy.sample"
+ test_filepath = os.path.join(tempdir, test_filename)
+ assert get_unique_file_name(test_filepath) == os.path.join(tempdir,"test_file-copy(2).sample")
+
+ def test_get_unique_file_name_multiple_copies(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filename = "test_file"
+ test_filepath = os.path.join(tempdir, test_filename)
+ for i in range(2):
+ test_filepath = get_unique_file_name(test_filepath)
+ assert test_filepath == os.path.join(tempdir,"test_file-copy(2)")
+
+ #unit tests for method duplicate
+
+ def test_duplicate_file_not_found_raise_error(self):
+ from handlers.util.stochss_errors import StochSSFileNotFoundError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filepath = os.path.join(tempdir,"nonexistent_file")
+ with self.assertRaises(StochSSFileNotFoundError):
+ duplicate(test_filepath)
+
+ def test_duplicate_file_not_found_no_new_file(self):
+ from handlers.util.stochss_errors import StochSSFileNotFoundError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filepath = os.path.join(tempdir,"nonexistent_file")
+ try:
+ duplicate(test_filepath)
+ except StochSSFileNotFoundError:
+ pass
+ tempdir_contents = os.listdir(tempdir)
+ assert len(tempdir_contents) == 0
+
+ def test_duplicate_permission_not_granted_raise_error(self):
+ from handlers.util.stochss_errors import StochSSPermissionsError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filepath = os.path.join(tempdir,"existent_file")
+ Path(test_filepath).touch()
+ os.chmod(test_filepath,000)
+ with self.assertRaises(StochSSPermissionsError):
+ duplicate(test_filepath)
+
+ def test_duplicate_permission_not_granted_no_new_file(self):
+ from handlers.util.stochss_errors import StochSSPermissionsError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filepath = os.path.join(tempdir,"existent_file")
+ Path(test_filepath).touch()
+ os.chmod(test_filepath,000)
+ try:
+ duplicate(test_filepath)
+ except StochSSPermissionsError:
+ pass
+ tempdir_contents = os.listdir(tempdir)
+ assert len(tempdir_contents) == 1
+
+
+ def test_duplicate_copy_successful(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filepath = os.path.join(tempdir,"existent_file")
+ Path(test_filepath).touch()
+ duplicate(test_filepath)
+ tempdir_contents = os.listdir(tempdir)
+ assert os.path.isfile(os.path.join(tempdir,'existent_file-copy'))
+
+ #unit tests for method extract_wkfl_model
+
+ def test_extract_wkfl_model_path_changed(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_model_path=os.path.join(tempdir,"test_model")
+ Path(test_model_path).touch()
+ class Test_Workflow:
+ wkfl_mdl_path = ""
+ test_wkfl= Test_Workflow()
+ setattr(test_wkfl,"wkfl_mdl_path",test_model_path)
+ test_extract_target="test_model"
+ extract_wkfl_model(wkfl=test_wkfl,mdl_parent_path=tempdir,model_file=test_extract_target)
+ assert os.path.isfile(os.path.join(tempdir,"test_model(1)"))
+
+ def test_extract_wkfl_model_path_not_changed(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_model_path=os.path.join(tempdir,"test_model")
+ Path(test_model_path).touch()
+ class Test_Workflow:
+ wkfl_mdl_path = ""
+ test_wkfl= Test_Workflow()
+ setattr(test_wkfl,"wkfl_mdl_path",test_model_path)
+ test_extract_target="test_model_extracted"
+ extract_wkfl_model(wkfl=test_wkfl,mdl_parent_path=tempdir,model_file=test_extract_target)
+ assert os.path.isfile(os.path.join(tempdir,test_extract_target))
+
+ def test_extract_wkfl_model_file_not_found_raise_error(self):
+ from handlers.util.stochss_errors import ModelNotFoundError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_model_path=os.path.join(tempdir,"test_model")
+ class Test_Workflow:
+ wkfl_mdl_path = ""
+ test_wkfl= Test_Workflow()
+ setattr(test_wkfl,"wkfl_mdl_path",test_model_path)
+ with self.assertRaises(ModelNotFoundError):
+ extract_wkfl_model(wkfl=test_wkfl,mdl_parent_path=tempdir,model_file="test_model")
+
+ def test_extract_wkfl_model_file_not_found_no_new_file(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_model_path=os.path.join(tempdir,"test_model")
+ class Test_Workflow:
+ wkfl_mdl_path = ""
+ test_wkfl= Test_Workflow()
+ setattr(test_wkfl,"wkfl_mdl_path",test_model_path)
+ tempdir_contents = os.listdir(tempdir)
+ assert len(tempdir_contents) == 0
+
+ def test_extract_wkfl_model_permission_not_granted_raise_error(self):
+ from handlers.util.stochss_errors import StochSSPermissionsError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_model_path=os.path.join(tempdir,"test_model")
+ Path(test_model_path).touch()
+ class Test_Workflow:
+ wkfl_mdl_path = ""
+ test_wkfl= Test_Workflow()
+ setattr(test_wkfl,"wkfl_mdl_path",test_model_path)
+ os.chmod(test_model_path,000)
+ with self.assertRaises(StochSSPermissionsError):
+ extract_wkfl_model(wkfl=test_wkfl,mdl_parent_path=tempdir,model_file="test_model")
+
+ def test_extract_wkfl_model_permission_not_granted_no_new_file(self):
+ from handlers.util.stochss_errors import StochSSPermissionsError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_model_path=os.path.join(tempdir,"test_model")
+ Path(test_model_path).touch()
+ class Test_Workflow:
+ wkfl_mdl_path = ""
+ test_wkfl= Test_Workflow()
+ setattr(test_wkfl,"wkfl_mdl_path",test_model_path)
+ os.chmod(test_model_path,000)
+ try:
+ extract_wkfl_model(wkfl=test_wkfl,mdl_parent_path=tempdir,model_file="test_model")
+ except StochSSPermissionsError:
+ pass
+ tempdir_contents = os.listdir(tempdir)
+ assert len(tempdir_contents) == 1
+
+ #unit tests for method get_wkfl_model_parent_path
+
+ def test_get_wkfl_model_parent_path_model_only(self):
+ assert get_wkfl_model_parent_path("test_path", True, "no wkfl") == "test_path"
+
+ def test_get_wkfl_model_parent_path_does_not_exist(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_model_path=os.path.join(tempdir,"test_model")
+ class Test_Workflow:
+ wkfl_mdl_path = ""
+ mdl_path = ""
+ test_wkfl= Test_Workflow()
+ setattr(test_wkfl, "",test_model_path)
+ assert get_wkfl_model_parent_path("path_does_not_exist", False, test_wkfl) == "path_does_not_exist"
+
+ def test_get_wkfl_model_parent_path_exists(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dir_path=os.path.join(tempdir,'test_directory')
+ os.mkdir(test_dir_path)
+ test_file_path = os.path.join(test_dir_path,"test_file")
+ class Test_Workflow:
+ mdl_path = ""
+ test_wkfl= Test_Workflow()
+ setattr(test_wkfl, "mdl_path", test_file_path)
+ Path(test_file_path).touch()
+ assert get_wkfl_model_parent_path("path_does_not_exist", False, test_wkfl) == test_dir_path
+
+ #unit tests for method get_model_path
+
+ def test_get_model_path_only_model(self):
+ assert get_model_path("test_wkfl_parent_path", "test_mdl_parent_path", "test_mdl_file", True) == (os.path.join("test_wkfl_parent_path","test_mdl_file"), "")
+
+ def test_get_model_path_wkfl_parent_path_equals_mdl_parent_path_and_exists(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dual_parent_dir = os.path.join(tempdir, "test_dual_parent_dir")
+ test_model_path = os.path.join(test_dual_parent_dir,"test_model")
+ os.mkdir(test_dual_parent_dir)
+ Path(test_model_path).touch()
+ assert get_model_path(test_dual_parent_dir, test_dual_parent_dir, "test_model", False) == (os.path.join(test_dual_parent_dir,"test_model"), "")
+
+ def test_get_model_path_mdl_file_in_wkfl_parent_path_directory(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_wkfl_parent_dir = os.path.join(tempdir, "test_wkfl_parent_dir")
+ os.mkdir(test_wkfl_parent_dir)
+ test_model_parent_dir = os.path.join(tempdir, "test_model_parent_dir")
+ os.mkdir(test_model_parent_dir)
+ test_model_path = os.path.join(test_wkfl_parent_dir,"test_model")
+ Path(test_model_path).touch()
+ assert get_model_path(test_wkfl_parent_dir, "", "test_model", False) == (os.path.join(test_wkfl_parent_dir,"test_model"), "")
+
+
+ def test_get_model_path_mdl_file_in_mdl_parent_path_directory(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_wkfl_parent_dir = os.path.join(tempdir, "test_wkfl_parent_dir")
+ os.mkdir(test_wkfl_parent_dir)
+ test_model_parent_dir = os.path.join(tempdir, "test_model_parent_dir")
+ os.mkdir(test_model_parent_dir)
+ test_model_path = os.path.join(test_model_parent_dir,"test_model")
+ Path(test_model_path).touch()
+ assert get_model_path(test_wkfl_parent_dir, test_model_parent_dir, "test_model", False) == (os.path.join(test_model_parent_dir,"test_model"), "")
+
+
+ def test_get_model_path_mdl_file_in_mdl_and_wkfl_parent_path_directory(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_wkfl_parent_dir = os.path.join(tempdir, "test_wkfl_parent_dir")
+ os.mkdir(test_wkfl_parent_dir)
+ test_model_parent_dir = os.path.join(tempdir, "test_model_parent_dir")
+ os.mkdir(test_model_parent_dir)
+ test_model_path = os.path.join(test_model_parent_dir,"test_model")
+ Path(test_model_path).touch()
+ test_model_path2 = os.path.join(test_wkfl_parent_dir,"test_model")
+ Path(test_model_path2).touch()
+ assert get_model_path(test_wkfl_parent_dir, test_model_parent_dir, "test_model", False) == (os.path.join(test_wkfl_parent_dir,"test_model"), "")
+
+
+ def test_get_model_path_mdl_file_not_found(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_wkfl_parent_dir = os.path.join(tempdir, "test_wkfl_parent_dir")
+ os.mkdir(test_wkfl_parent_dir)
+ test_model_parent_dir = os.path.join(tempdir, "test_model_parent_dir")
+ os.mkdir(test_model_parent_dir)
+ assert get_model_path(test_wkfl_parent_dir, test_model_parent_dir, "test_model", False) == (os.path.join(test_wkfl_parent_dir,"test_model"), "The model file {0} could not be found. To edit the model or run the workflow you will need to update the path to the model or extract the model from the workflow.".format("test_model"))
+
+
+ #unit tests for method duplicate_wkfl_as_new
+
+ def test_duplicate_wkfl_as_new_wkfl_file_not_found(self):
+ from handlers.util.stochss_errors import StochSSFileNotFoundError
+ with tempfile.TemporaryDirectory() as tempdir:
+ with self.assertRaises(StochSSFileNotFoundError):
+ duplicate_wkfl_as_new(os.path.join(tempdir,"nonexistent_wkfl"), False, "timestamp")
+
+ def test_duplicate_wkfl_as_new_not_JSON_decodable(self):
+ from handlers.util.stochss_errors import FileNotJSONFormatError
+ with tempfile.TemporaryDirectory() as tempdir:
+ Path(os.path.join(tempdir,"info.json")).touch()
+ with self.assertRaises(FileNotJSONFormatError):
+ duplicate_wkfl_as_new(os.path.join(tempdir), False, "timestamp")
+
+
+ def test_duplicate_wkfl_as_new_only_model(self):
+ #from json import load
+ from unittest import mock
+ from handlers.util.run_model import GillesPy2Workflow
+ from handlers.util.stochss_errors import FileNotJSONFormatError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dict={"type":"gillespy","source_model":"test_source_model"}
+ test_path = os.path.join(tempdir,"test_wkfl_dir")
+ os.mkdir(test_path)
+ Path(os.path.join(test_path,"info.json")).touch()
+ test_source_model_path = os.path.join(test_path,"test_source_model")
+ Path(test_source_model_path).touch()
+ with mock.patch("handlers.util.run_model.GillesPy2Workflow.get_settings") as mock_settings:
+ mock_settings.return_value = None
+ with mock.patch("json.load") as mock_json:
+ mock_json.return_value = test_dict
+ test_return = duplicate_wkfl_as_new(test_path, True, "timestamp")
+ assert test_return == {'message': 'A copy of the model in {0} has been created'.format(test_path),"mdlPath":os.path.join(tempdir,"test_source_model"),"File":"test_source_model"}
+
+ def test_duplicate_wkfl_as_new_model_file_not_found(self):
+ #from json import load
+ from unittest import mock
+ from handlers.util.run_model import GillesPy2Workflow
+ from handlers.util.stochss_errors import FileNotJSONFormatError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dict={"type":"gillespy","source_model":"test_source_model"}
+ test_path = os.path.join(tempdir,"test_wkfl_dir")
+ os.mkdir(test_path)
+ Path(os.path.join(test_path,"info.json")).touch()
+ test_source_model_path = os.path.join(test_path,"test_source_model")
+ Path(test_source_model_path).touch()
+ with mock.patch("handlers.util.run_model.GillesPy2Workflow.get_settings") as mock_settings:
+ mock_settings.return_value = None
+ with mock.patch("json.load") as mock_json:
+ mock_json.return_value = test_dict
+ test_return = duplicate_wkfl_as_new(test_path, False, "timestamp")
+ assert test_return == {'message': 'A new workflow has been created from {0}'.format(test_path), 'wkflPath': test_path+"timestamp.wkfl", 'mdlPath': os.path.join(tempdir,"test_source_model"), 'File': 'test_wkfl_dirtimestamp.wkfl', 'mdl_file': 'test_source_model', 'error': 'The model file test_source_model could not be found. To edit the model or run the workflow you will need to update the path to the model or extract the model from the workflow.'}
+
+ def test_duplicate_wkfl_as_new_model_file_exists(self):
+ #from json import load
+ from unittest import mock
+ from handlers.util.run_model import GillesPy2Workflow
+ from handlers.util.stochss_errors import FileNotJSONFormatError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dict={"type":"gillespy","source_model":"test_source_model"}
+ test_path = os.path.join(tempdir,"test_wkfl_dir")
+ os.mkdir(test_path)
+ Path(os.path.join(test_path,"info.json")).touch()
+ test_source_model_path = os.path.join(test_path,"test_source_model")
+ Path(test_source_model_path).touch()
+ Path(os.path.join(tempdir,"test_source_model")).touch()
+ with mock.patch("handlers.util.run_model.GillesPy2Workflow.get_settings") as mock_settings:
+ mock_settings.return_value = None
+ with mock.patch("json.load") as mock_json:
+ mock_json.return_value = test_dict
+ test_return = duplicate_wkfl_as_new(test_path, False, "timestamp")
+ assert test_return == {'message': 'A new workflow has been created from {0}'.format(test_path), 'wkflPath': test_path+"timestamp.wkfl", 'mdlPath': os.path.join(tempdir,"test_source_model"), 'File': 'test_wkfl_dirtimestamp.wkfl', 'mdl_file': 'test_source_model'}
diff --git a/stochss/tests/test_generate_zip_file.py b/stochss/tests/test_generate_zip_file.py
new file mode 100644
index 0000000000..4806ad9173
--- /dev/null
+++ b/stochss/tests/test_generate_zip_file.py
@@ -0,0 +1,68 @@
+import os
+import unittest
+import tempfile
+import handlers.util.generate_zip_file as generate_zip_file
+import handlers.util.stochss_errors as stochss_errors
+
+class TestGenerateZipFile(unittest.TestCase):
+
+ #unit tests for method generate_zip_file
+
+ def test_generate_zip_file(self):
+ test_file = "test_file.foo"
+ test_path = os.path.join("test_path", test_file)
+ test_dir = "test_dir"
+ test_target = "test_target"
+ with unittest.mock.patch("shutil.make_archive") as mock_make_archive:
+ generate_zip_file.generate_zip_file(test_path, test_dir, test_target)
+ correct_filepath = os.path.join(test_dir, "test_file")
+ mock_make_archive.assert_called_with(correct_filepath, 'zip', test_dir, test_target)
+
+ #unit tests for method get_zip_file_data
+
+ def test_get_zip_file_data(self):
+ with unittest.mock.patch("builtins.open", unittest.mock.mock_open(read_data="foo")):
+ assert generate_zip_file.get_zip_file_data("placeholder") == "foo"
+
+ #unit tests for method get_results_csv_dir
+
+ def test_get_results_csv_dir_not_found(self):
+ test_file = "results_csv"
+ test_path = "placeholder"
+ assert generate_zip_file.get_results_csv_dir(test_file, test_path) is None
+
+ def test_get_results_csv_dir_is_found(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dir = os.path.join(tempdir, "results_csv")
+ os.mkdir(test_dir)
+ assert generate_zip_file.get_results_csv_dir(test_dir, tempdir) == test_dir
+
+ #unit tests for method download_zip
+
+ def test_download_zip_file_invalid_path(self):
+ with self.assertRaises(stochss_errors.StochSSFileNotFoundError):
+ generate_zip_file.download_zip("placeholder_path", "placeholder_action")
+
+ def test_download_zip_file_calls_generate_zip_file(self):
+ test_path = "test_dir/test_path.foo"
+ test_action = "generate"
+ with unittest.mock.patch("os.path.exists"):
+ with unittest.mock.patch("handlers.util.generate_zip_file.get_unique_file_name",\
+ return_value="test_path"):
+ with unittest.mock.patch("handlers.util.generate_zip_file.generate_zip_file")\
+ as mock_generate:
+ generate_zip_file.download_zip(test_path, test_action)
+ mock_generate.assert_called_with("t", os.path.join("/home/jovyan", "test_dir"), \
+ os.path.join("/home/jovyan", test_path))
+
+ def test_download_zip_file_action_generate(self):
+ test_path = "test_dir/test_path.foo"
+ test_action = "generate"
+ test_resp = {"Message":"Successfully created t", "Path":"t",}
+ with unittest.mock.patch("os.path.exists"):
+ with unittest.mock.patch("handlers.util.generate_zip_file.get_unique_file_name",\
+ return_value="test_path"):
+ with unittest.mock.patch("handlers.util.generate_zip_file.generate_zip_file"):
+ assert generate_zip_file.download_zip(test_path, test_action) == test_resp
+
+ #download_zip action resultscsv is not covered pending refactor of user dir from /home/jovyan
diff --git a/stochss/tests/test_ls.py b/stochss/tests/test_ls.py
new file mode 100644
index 0000000000..e5d6f3b7e9
--- /dev/null
+++ b/stochss/tests/test_ls.py
@@ -0,0 +1,228 @@
+"""Unit tests for handlers.util.ls.py"""
+import unittest
+import os
+import tempfile
+from pathlib import Path
+
+import handlers.util.ls as ls
+from handlers.util.stochss_errors import StochSSFileNotFoundError
+
+class TestLS(unittest.TestCase):
+ """Unit test container for handlers.util.ls.py"""
+
+ #unit tests for method get_file_system_data
+
+ def test_get_file_system_data_dir_not_found(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "nonexistent_dir")
+ with self.assertRaises(StochSSFileNotFoundError):
+ ls.get_file_system_data(test_path, tempdir)
+
+ @classmethod
+ def test_get_file_system_data_no_children(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "empty_dir")
+ os.mkdir(test_path)
+ children = ls.get_file_system_data(test_path, tempdir)
+ assert len(children) == 0
+
+ @classmethod
+ def test_get_file_system_data_child_is_wkfl(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_file_path = os.path.join(test_path, "test_file.wkfl")
+ Path(test_file_path).touch()
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with \
+ (text="test_file.wkfl", f_type="workflow", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_mdl(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_file_path = os.path.join(test_path, "test_file.mdl")
+ Path(test_file_path).touch()
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_file.mdl", f_type="nonspatial", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_smdl(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_file_path = os.path.join(test_path, "test_file.smdl")
+ Path(test_file_path).touch()
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_file.smdl", f_type="spatial", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_mesh(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_file_path = os.path.join(test_path, "test_file.mesh")
+ Path(test_file_path).touch()
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_file.mesh", f_type="mesh", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_ipynb(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_file_path = os.path.join(test_path, "test_file.ipynb")
+ Path(test_file_path).touch()
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_file.ipynb", f_type="notebook", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_sbml(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_file_path = os.path.join(test_path, "test_file.sbml")
+ Path(test_file_path).touch()
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_file.sbml", f_type="sbml-model", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_dir(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_dir_path = os.path.join(test_path, "test_dir")
+ os.mkdir(test_dir_path)
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_dir", f_type="folder", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_other(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_file_path = os.path.join(test_path, "test_file.foo")
+ Path(test_file_path).touch()
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_file.foo", f_type="other", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_exp(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_dir_path = os.path.join(test_path, "test_dir.wkgp")
+ os.mkdir(test_dir_path)
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_dir.wkgp", f_type="workflow-group", p_path=tempdir)
+
+ @classmethod
+ def test_get_file_system_data_child_is_proj(cls):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "parent_dir")
+ os.mkdir(test_path)
+ test_dir_path = os.path.join(test_path, "test_dir.proj")
+ os.mkdir(test_dir_path)
+ with unittest.mock.patch("handlers.util.ls.build_child") as mock_build_child:
+ ls.get_file_system_data(test_path, tempdir)
+ mock_build_child.assert_called_once_with\
+ (text="test_dir.proj", f_type="project", p_path=tempdir)
+
+ #unit tests for method build_child
+
+ @classmethod
+ def test_build_child_top_level(cls):
+ with tempfile.TemporaryDirectory():
+ test_p_path = "none"
+ test_text = "test_text"
+ test_f_type = "test_f_type"
+ assert ls.build_child(text=test_text, f_type=test_f_type, p_path=test_p_path) ==\
+ {"text" : "test_text", "type" : "test_f_type", \
+ "_path" : "test_text", "children" : False}
+
+ @classmethod
+ def test_build_child_sub_level(cls):
+ with tempfile.TemporaryDirectory():
+ test_p_path = "test_p_path"
+ test_text = "test_text"
+ test_f_type = "test_f_type"
+ assert ls.build_child(text=test_text, f_type=test_f_type, p_path=test_p_path) == \
+ {"text" : "test_text", "type" : "test_f_type", \
+ "_path" : os.path.join(test_p_path, test_text), "children" : False}
+
+ @classmethod
+ def test_build_child_wkfl_calls_get_status(cls):
+ with tempfile.TemporaryDirectory():
+ test_p_path = "test_p_path"
+ test_text = "test_text"
+ test_f_type = "workflow"
+ with unittest.mock.patch("handlers.util.ls.get_status") as mock_get_status:
+ ls.build_child(text=test_text, p_path=test_p_path, f_type=test_f_type)
+ mock_get_status.assert_called()
+
+ #unit tests for method build_root
+
+ @classmethod
+ def test_build_root(cls):
+ test_children = "test_children"
+ assert ls.build_root(test_children) ==\
+ [{"text":"/", "type":"root", "_path":"/", \
+ "children":"test_children", "state":{"opened":True}}]
+
+ #unit tests for method check_extension
+
+ @classmethod
+ def test_check_extension_true(cls):
+ test_str = "test"
+ test_target = "target"
+ test_name = test_str + test_target
+ assert ls.check_extension(test_name, test_target)
+
+ @classmethod
+ def test_check_extension_false(cls):
+ test_str = "test"
+ test_target = "target"
+ test_name = test_str
+ assert not ls.check_extension(test_name, test_target)
+
+ #unit tests for method list_files
+
+ @classmethod
+ def test_ls_p_path_none(cls):
+ test_p_path = "none"
+ with unittest.mock.patch("handlers.util.ls.build_root") as mock_build_root:
+ with unittest.mock.patch("handlers.util.ls.get_file_system_data", \
+ return_value="test_return") as mock_get_file_system_data:
+ with unittest.mock.patch("json.dumps"):
+ ls.list_files(p_path=test_p_path)
+ mock_get_file_system_data.assert_called()
+ mock_build_root.assert_called_with("test_return")
+
+ @classmethod
+ def test_ls_p_path_not_none(cls):
+ test_p_path = "test_p_path"
+ test_full_path = os.path.join("/home/jovyan", test_p_path)
+ with unittest.mock.patch("handlers.util.ls.build_root"):
+ with unittest.mock.patch("handlers.util.ls.get_file_system_data", \
+ return_value="test_return") as mock_get_file_system_data:
+ with unittest.mock.patch("json.dumps"):
+ ls.list_files(p_path=test_p_path)
+ mock_get_file_system_data.assert_called_with(test_full_path, test_p_path)
diff --git a/stochss/tests/test_rename.py b/stochss/tests/test_rename.py
new file mode 100644
index 0000000000..7940647080
--- /dev/null
+++ b/stochss/tests/test_rename.py
@@ -0,0 +1,130 @@
+import unittest, os, tempfile
+from pathlib import Path
+from handlers.util.rename import *
+
+class TestRename(unittest.TestCase):
+
+ #unit tests for method get_unique_file_name
+
+ def test_get_unique_file_name_target_does_not_exist(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ gufn_return_filepath = os.path.join(tempdir,"nonexistent_file")
+ gufn_return_tuple = (gufn_return_filepath, False)
+ assert get_unique_file_name("nonexistent_file", tempdir) == (gufn_return_tuple)
+
+ def test_get_unique_file_name_target_exists(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filepath = os.path.join(tempdir,"existent_file")
+ Path(test_filepath).touch()
+ gufn_return_filepath = os.path.join(tempdir,"existent_file(1)")
+ gufn_return_tuple = (gufn_return_filepath, True)
+ assert get_unique_file_name("existent_file", tempdir) == gufn_return_tuple
+
+ def test_get_unique_file_name_numbered_target_exists(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filepath = os.path.join(tempdir,"existent_file(1)")
+ Path(test_filepath).touch()
+ gufn_return_filepath = os.path.join(tempdir,"existent_file(2)")
+ gufn_return_tuple = (gufn_return_filepath, True)
+ assert get_unique_file_name("existent_file(1)", tempdir) == gufn_return_tuple
+
+ def test_get_unique_file_name_with_extension_target_does_not_exist(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ gufn_return_filepath = os.path.join(tempdir,"nonexistent_file.foo")
+ gufn_return_tuple = (gufn_return_filepath, False)
+ assert get_unique_file_name("nonexistent_file.foo", tempdir) == (gufn_return_tuple)
+
+ def test_get_unique_file_name_with_extension_target_exists(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filename = "existent_file.foo"
+ test_filepath = os.path.join(tempdir,test_filename)
+ Path(test_filepath).touch()
+ gufn_return_filepath = os.path.join(tempdir,"existent_file(1).foo")
+ gufn_return_tuple = (gufn_return_filepath, True)
+ assert get_unique_file_name(test_filename, tempdir) == gufn_return_tuple
+
+
+ def test_get_unique_file_name_iterated(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_filename = "existent_file"
+ test_filepath = os.path.join(tempdir, test_filename)
+ Path(test_filepath).touch()
+ for i in range(3):
+ test_filename, placeholder = get_unique_file_name(test_filename, tempdir)
+ Path(test_filename).touch()
+ test_filename = test_filename.split('/').pop()
+ assert len(os.listdir(tempdir)) == 4
+
+ def test_get_unique_file_name_invalid_path(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dirpath = os.path.join(tempdir,"invalid_directory")
+ with self.assertRaises(FileNotFoundError):
+ get_unique_file_name("nonexistent_file", test_dirpath)
+
+ #unit tests for method rename
+
+ def test_rename_file(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_file = "test_file"
+ test_path = os.path.join(tempdir,test_file)
+ Path(test_path).touch()
+ rename(test_path, "test_file2")
+ test_new_path = os.path.join(tempdir, "test_file2")
+ assert os.path.isfile(test_new_path)
+
+ def test_rename_directory(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dir = "test_dir"
+ test_path = os.path.join(tempdir, test_dir)
+ os.mkdir(test_path)
+ rename(test_path, "test_dir2")
+ test_new_path = os.path.join(tempdir, "test_dir2")
+ assert os.path.isdir(test_new_path)
+
+ def test_rename_permission_error(self):
+ from handlers.util.stochss_errors import StochSSPermissionsError
+ from unittest import mock
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_dir = "test_dir"
+ test_file = "test_file"
+ test_dir_path = os.path.join(tempdir,test_dir)
+ os.mkdir(test_dir_path)
+ test_path = os.path.join(test_dir_path,test_file)
+ Path(test_path).touch()
+ with mock.patch("shutil.move", side_effect=StochSSPermissionsError('test_error')) as mock_shutil:
+ with self.assertRaises(StochSSPermissionsError):
+ rename(test_path, "test_file2")
+
+ def test_rename_file_not_found_error(self):
+ from handlers.util.stochss_errors import StochSSFileNotFoundError
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_file = "test_file"
+ test_path = os.path.join(tempdir,test_file)
+ with self.assertRaises(StochSSFileNotFoundError):
+ rename(test_path, "test_file2")
+
+ def test_rename_target_exists(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_file = "test_file"
+ test_path = os.path.join(tempdir, test_file)
+ Path(test_path).touch()
+ test_file2 = "test_file2"
+ test_path2 = os.path.join(tempdir, test_file2)
+ Path(test_path2).touch()
+ resp = rename(test_path, "test_file2")
+ assert resp["changed"] == True
+
+ def test_rename_running_wkfl(self):
+ from unittest import mock
+ with tempfile.TemporaryDirectory() as tempdir:
+ with mock.patch("json.dump") as mock_dump:
+ with mock.patch("json.load") as mock_json:
+ with mock.patch('builtins.open', mock.mock_open(read_data="foo")) as m:
+ test_file = "test_file.wkfl"
+ test_path = os.path.join(tempdir, test_file)
+ target_path = os.path.join(tempdir, "test_file2")
+ os.mkdir(test_path)
+ os.mkdir(target_path)
+ Path(os.path.join(target_path,"RUNNING")).touch()
+ rename(test_path, "test_file2")
+ m.assert_called_with(os.path.join(target_path, "info.json"), 'r+')
diff --git a/stochss/tests/test_upload_file.py b/stochss/tests/test_upload_file.py
new file mode 100644
index 0000000000..404c863166
--- /dev/null
+++ b/stochss/tests/test_upload_file.py
@@ -0,0 +1,115 @@
+import os
+import unittest
+from unittest import mock
+import tempfile
+from pathlib import Path
+
+from handlers.util.upload_file import *
+
+class TestUploadFile(unittest.TestCase):
+
+ #unit tests for method validate_model
+
+ def test_validate_model_json_decode_error(self):
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_file = "non_json_file"
+ test_path = os.path.join(tempdir, test_file)
+ Path(test_path).touch()
+ assert validate_model(test_path, test_file) == \
+ (False, False, "The file {0} is not in JSON format.".format(test_file))
+
+ def test_validate_model_valid_keys(self):
+ test_keys = ("is_spatial", "defaultID", "defaultMode", "modelSettings",
+ "simulationSettings", "parameterSweepSettings", "species",
+ "parameters", "reactions", "eventsCollection", "rules",
+ "functionDefinitions", "meshSettings", "initialConditions")
+ class TestKeychain():
+ def keys(self):
+ return test_keys
+
+ complete_keychain = TestKeychain()
+ with mock.patch("json.loads", return_value=complete_keychain):
+ assert validate_model("", "") == (True, True, "")
+
+ def test_validate_model_missing_keys(self):
+ test_keys = ("species","parameters","reactions","eventsCollection",
+ "rules","functionDefinitions")
+
+ class TestKeychain():
+ def keys(self):
+ return ()
+
+ complete_keychain = TestKeychain()
+ with mock.patch("json.loads", return_value=complete_keychain):
+ assert validate_model("", "") == (False, True, \
+ "The following keys are missing from {0}: {1}".format("", ", ".join(test_keys)))
+
+ #unit tests for method upload_model_file
+
+ def test_upload_model_file_is_valid(self):
+ test_valid = True
+ test_json = False
+ test_error = ""
+ predicted_name = ".".join(["some_name", "mdl"])
+ with mock.patch("handlers.util.upload_file.get_unique_file_name",\
+ return_value=("some_path", False)):
+ with mock.patch("handlers.util.upload_file.validate_model",\
+ return_value=(test_valid, test_json, test_error)):
+ with mock.patch("builtins.open", mock.mock_open(read_data="foo")):
+ assert upload_model_file("some_path", "some_file_name", "some_name", None)\
+ ['message'] == "{0} was successfully uploaded to {1}".format(\
+ predicted_name, "some_path")
+
+ def test_upload_model_file_not_valid(self):
+ test_valid = False
+ test_json = False
+ test_error = ""
+ predicted_name = ".".join(["some_name", "json"])
+ with mock.patch("handlers.util.upload_file.get_unique_file_name",\
+ return_value=("some_path", False)):
+ with mock.patch("handlers.util.upload_file.validate_model",\
+ return_value=(test_valid, test_json, test_error)):
+ with mock.patch("builtins.open", mock.mock_open(read_data="foo")):
+ assert upload_model_file("some_path",\
+ "some_file_name", "some_name", None)['message'] ==\
+ "{0} could not be validated as a Model file and was uploaded as {1} to {2}"\
+ .format("some_file_name", predicted_name, "some_path")
+
+ def test_upload_model_file_error(self):
+ test_valid = False
+ test_json = False
+ test_error = "test_error"
+ with mock.patch("handlers.util.upload_file.get_unique_file_name",\
+ return_value=("some_path", False)):
+ with mock.patch("handlers.util.upload_file.validate_model", return_value=\
+ (test_valid, test_json, test_error)):
+ with mock.patch("builtins.open", mock.mock_open(read_data="foo")):
+ assert upload_model_file("some_path", "some_file_name", "some_name", None)\
+ ['errors'] == ['test_error']
+
+ def test_upload_model_file_name_changed(self):
+ test_valid = False
+ test_json = False
+ test_error = ""
+ predicted_name = "some_file"
+ with mock.patch("handlers.util.upload_file.get_unique_file_name",\
+ return_value=(os.path.join("some_parent", "some_file"), True)):
+ with mock.patch("handlers.util.upload_file.validate_model", \
+ return_value=(test_valid, test_json, test_error)):
+ with mock.patch("builtins.open", mock.mock_open(read_data="foo")):
+ assert upload_model_file("some_path", "some_file_name", "some_name", None)['message'] ==\
+ "{0} could not be validated as a Model file and was uploaded as {1} to {2}"\
+ .format("some_file_name", predicted_name, "some_path")
+
+ def test_upload_model_file_json(self):
+ test_valid = True
+ test_json = True
+ test_error = ""
+ with mock.patch("handlers.util.upload_file.get_unique_file_name",\
+ return_value=("some_path", False)):
+ with mock.patch("handlers.util.upload_file.validate_model", return_value=\
+ (test_valid, test_json, test_error)):
+ with mock.patch("builtins.open", mock.mock_open(read_data="foo")):
+ with mock.patch("json.loads", return_value="mock_return") as mock_json_loads:
+ upload_model_file("some_path", "some_file_name", "some_name", None)
+ mock_json_loads.assert_called()
diff --git a/stochss/tests/test_workflow_status.py b/stochss/tests/test_workflow_status.py
new file mode 100644
index 0000000000..36e890c31e
--- /dev/null
+++ b/stochss/tests/test_workflow_status.py
@@ -0,0 +1,52 @@
+import os
+import unittest
+import tempfile
+from pathlib import Path
+
+from handlers.util.workflow_status import get_status
+
+class TestWorkflow_Status(unittest.TestCase):
+
+ #unit tests for method get_status
+
+ def test_get_status_complete(self):
+ from unittest import mock
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "test_dir")
+ os.mkdir(test_path)
+ test_status = "COMPLETE"
+ test_file = os.path.join(test_path, test_status)
+ Path(test_file).touch()
+ with mock.patch("os.path.join",return_value = test_path) as mock_join:
+ assert get_status("") == "complete"
+
+
+ def test_get_status_error(self):
+ from unittest import mock
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "test_dir")
+ os.mkdir(test_path)
+ test_status = "ERROR"
+ test_file = os.path.join(test_path, test_status)
+ Path(test_file).touch()
+ with mock.patch("os.path.join",return_value = test_path) as mock_join:
+ assert get_status("") == "error"
+
+ def test_get_status_running(self):
+ from unittest import mock
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "test_dir")
+ os.mkdir(test_path)
+ test_status = "RUNNING"
+ test_file = os.path.join(test_path, test_status)
+ Path(test_file).touch()
+ with mock.patch("os.path.join",return_value = test_path) as mock_join:
+ assert get_status("") == "running"
+
+ def test_get_status_ready(self):
+ from unittest import mock
+ with tempfile.TemporaryDirectory() as tempdir:
+ test_path = os.path.join(tempdir, "test_dir")
+ os.mkdir(test_path)
+ with mock.patch("os.path.join",return_value = test_path) as mock_join:
+ assert get_status("") == "ready"
diff --git a/stochss_templates/nonSpatialModelTemplate.json b/stochss_templates/nonSpatialModelTemplate.json
index 419ad4695d..894fb677c0 100644
--- a/stochss_templates/nonSpatialModelTemplate.json
+++ b/stochss_templates/nonSpatialModelTemplate.json
@@ -2,6 +2,7 @@
"is_spatial": false,
"defaultID": 1,
"defaultMode": "",
+ "annotation": "",
"modelSettings": {
"endSim": 20,
"timeStep": 0.05,
diff --git a/webpack.config.js b/webpack.config.js
index 8a2215b49f..4534b401c1 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -4,11 +4,14 @@ const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'development',
entry: {
+ home: './client/pages/users-home.js',
quickstart: './client/pages/quickstart.js',
browser: './client/pages/file-browser.js',
editor: './client/pages/model-editor.js',
workflowSelection: './client/pages/workflow-selection.js',
workflowEditor: './client/pages/workflow-manager.js',
+ projectBrowser: './client/pages/project-browser.js',
+ projectManager: './client/pages/project-manager.js'
},
output: {
filename: 'stochss-[name].bundle.js',
@@ -16,6 +19,13 @@ module.exports = {
},
devtool: 'inline-source-map',
plugins: [
+ new HtmlWebpackPlugin({
+ title: 'StochSS | Home',
+ filename: 'stochss-user-home.html',
+ template: 'page_template.pug',
+ name: 'home',
+ inject: false
+ }),
new HtmlWebpackPlugin({
title: 'StochSS | Quickstart',
filename: 'stochss-quickstart.html',
@@ -51,6 +61,20 @@ module.exports = {
name: 'workflowEditor',
inject: false
}),
+ new HtmlWebpackPlugin({
+ title: 'StochSS | Project Browser',
+ filename: 'stochss-project-browser.html',
+ template: 'page_template.pug',
+ name: 'projectBrowser',
+ inject: false
+ }),
+ new HtmlWebpackPlugin({
+ title: 'StochSS | Project Manager',
+ filename: 'stochss-project-manager.html',
+ template: 'page_template.pug',
+ name: 'projectManager',
+ inject: false
+ })
],
optimization: {
splitChunks: {