Commit 6a2f19ee authored by Randy Heiland's avatar Randy Heiland
Browse files

v3.1 updates

parent 1d0d6386
# pc4covid19 - COVID19 (SARS-CoV-2) tissue simulator nanoHUB app
**Version:** 3.0
**Version:** 3.1
**Release date:** 3 July 2020
......@@ -21,6 +21,9 @@ for a summary of changes to the model.
**This model will be continually refined with input from the community, particularly experts in infectious diseases. The validation state will be updated as this progresses.**
## Release summary:
### 3.1:
Minor updates to `About` text, e.g., explaining nature of stochastic results. Edits to `immune_submodels.cpp` (see details in the core model repository).
### 3.0:
The major change to the GUI in this release is the addition of a 'Cell Types' tab.
This allows editing parameters associated with `<cell_definitions>` in the configuration file.
......
This diff is collapsed.
......@@ -112,15 +112,15 @@ class UserTab(object):
param_name11.style.button_color = 'lightgreen'
self.CD8_Tcell_recruitment_min_signal = FloatText(
value=0.3,
step=0.01,
value=0.4,
step=0.1,
style=style, layout=widget_layout)
param_name12 = Button(description='CD8_Tcell_recruitment_saturation_signal', disabled=True, layout=name_button_layout)
param_name12.style.button_color = 'tan'
self.CD8_Tcell_recruitment_saturation_signal = FloatText(
value=0.5,
value=0.7,
step=0.1,
style=style, layout=widget_layout)
......
......@@ -286,16 +286,16 @@
<secretion>
<substrate name="interferon 1">
<secretion_target units="substrate density">1</secretion_target>
<secretion_target units="dimensionless substrate concentration">1</secretion_target>
</substrate>
<substrate name="pro-inflammatory cytokine">
<secretion_target units="substrate density">1</secretion_target>
<secretion_target units="dimensionless substrate concentration">1</secretion_target>
</substrate>
<substrate name="chemokine">
<secretion_target units="substrate density">1</secretion_target>
<secretion_target units="dimensionless substrate concentration">1</secretion_target>
</substrate>
<substrate name="debris">
<secretion_target units="substrate density">1</secretion_target>
<secretion_target units="dimensionless substrate concentration">1</secretion_target>
</substrate>
</secretion>
......@@ -328,13 +328,13 @@
description="rate at which a virion is exported from a live cell">0.01</virion_export_rate>
<!-- ACE2 receptor trafficking -->
<unbound_external_ACE2 type="double" units="none"
<unbound_external_ACE2 type="double" units="receptors"
description="initial number of unbound ACE2 receptors on surface">1000</unbound_external_ACE2>
<bound_external_ACE2 type="double" units="none"
<bound_external_ACE2 type="double" units="receptors"
description="initial number of bound ACE2 receptors on surface">0</bound_external_ACE2>
<unbound_internal_ACE2 type="double" units="none"
<unbound_internal_ACE2 type="double" units="receptors"
description="initial number of internalized unbound ACE2 receptors">0</unbound_internal_ACE2>
<bound_internal_ACE2 type="double" units="none"
<bound_internal_ACE2 type="double" units="receptors"
description="initial number of internalized bound ACE2 receptors">0</bound_internal_ACE2>
<ACE2_binding_rate type="double" units="1/min"
......@@ -384,6 +384,8 @@
<!-- more immmune cell parameters -->
<phagocytosis_rate units="1/min" type="double"
desription="rate of phagocytosing a nearby target">0.167</phagocytosis_rate>
<phagocytosis_relative_target_cutoff_size unit="dimensionless" type="double"
desription="do not phagocytose anything over this size (relative to cell's volume)">1.1</phagocytosis_relative_target_cutoff_size>
<sensitivity_to_debris_chemotaxis units="dimensionless" type="double"
description="relative sensitivity to debris in chemotaxis">1.0</sensitivity_to_debris_chemotaxis>
<sensitivity_to_chemokine_chemotaxis units="dimensionless" type="double"
......@@ -530,7 +532,7 @@
<total units="micron^3">4849</total>
<nuclear units="micron^3">485</nuclear>
<cytoplasmic_biomass_change_rate units="1/min">0.045</cytoplasmic_biomass_change_rate>
<cytoplasmic_biomass_change_rate units="1/min">0.01</cytoplasmic_biomass_change_rate>
<!-- set this higher so that cells "digest" phagocytosed materials faster -->
</volume>
......@@ -620,25 +622,25 @@
description="immune cell position over the epithelium">0</immune_z_offset>
<macrophage_max_recruitment_rate type="double" units="cells/min/micron^3"
description="max macrophage recruitment rate (for saturated signal)">4e-9</macrophage_max_recruitment_rate> <!-- 8e-9 debug -->
description="max macrophage recruitment rate (for saturated signal)">4e-9</macrophage_max_recruitment_rate> <!-- 4e-9 debug -->
<macrophage_recruitment_min_signal type="double" units="substrate/micron^3"
description="min concentration to attract macrophages">0.1</macrophage_recruitment_min_signal> <!--0.1 debug -->
<macrophage_recruitment_saturation_signal type="double" units="substrate/micron^3"
description="saturating concentration to attract macrophages">0.3</macrophage_recruitment_saturation_signal> <!-- 0.3 debug -->
<neutrophil_max_recruitment_rate type="double" units="cells/min/micron^3"
description="max neutrophil recruitment rate (for saturated signal)">4e-9</neutrophil_max_recruitment_rate> <!-- 8e-9 debug -->
description="max neutrophil recruitment rate (for saturated signal)">4e-9</neutrophil_max_recruitment_rate> <!-- 4e-9 debug -->
<neutrophil_recruitment_min_signal type="double" units="substrate/micron^3"
description="min concentration to attract neutrophils">0.1</neutrophil_recruitment_min_signal> <!--0.1 debug -->
<neutrophil_recruitment_saturation_signal type="double" units="substrate/micron^3"
description="saturating concentration to attract neutrophils">0.3</neutrophil_recruitment_saturation_signal> <!-- 0.3 debug -->
<CD8_Tcell_max_recruitment_rate type="double" units="cells/min/micron^3"
description="max CD8 T cell recruitment rate (for saturated signal)">4e-9</CD8_Tcell_max_recruitment_rate> <!-- 4e-8 debug -->
description="max CD8 T cell recruitment rate (for saturated signal)">4e-9</CD8_Tcell_max_recruitment_rate> <!-- 4e-9 debug -->
<CD8_Tcell_recruitment_min_signal type="double" units="substrate/micron^3"
description="min concentration to attract CD8 T cells">0.3</CD8_Tcell_recruitment_min_signal> <!-- 0.3 debug -->
description="min concentration to attract CD8 T cells">0.4</CD8_Tcell_recruitment_min_signal> <!-- 0.3 debug -->
<CD8_Tcell_recruitment_saturation_signal type="double" units="substrate/micron^3"
description="saturating concentration to attract CD8 T cells">0.5</CD8_Tcell_recruitment_saturation_signal> <!-- 0.5 debug -->
description="saturating concentration to attract CD8 T cells">0.7</CD8_Tcell_recruitment_saturation_signal> <!-- 0.7 debug -->
<div_initialization type="divider" description="---Initialization Options--"/>
<multiplicity_of_infection type="double" units="none"
......
Using PhysiCell version 1.7.2beta
Please cite DOI: 10.1371/journal.pcbi.1005991
Project website: http://PhysiCell.MathCancer.org
/*
#############################################################################
# If you use BioFVM in your project, please cite BioFVM and the version #
# number, such as below: #
# #
# We solved the diffusion equations using BioFVM (Version 1.1.7) [1] #
# #
# [1] A. Ghaffarizadeh, S.H. Friedman, and P. Macklin, BioFVM: an efficient #
# parallelized diffusive transport solver for 3-D biological simulations,#
# Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 #
# #
#############################################################################
# #
# BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) #
# #
# Copyright (c) 2015-2017, Paul Macklin and the BioFVM Project #
# All rights reserved. #
# #
# Redistribution and use in source and binary forms, with or without #
# modification, are permitted provided that the following conditions are #
# met: #
# #
# 1. Redistributions of source code must retain the above copyright notice, #
# this list of conditions and the following disclaimer. #
# #
# 2. Redistributions in binary form must reproduce the above copyright #
# notice, this list of conditions and the following disclaimer in the #
# documentation and/or other materials provided with the distribution. #
# #
# 3. Neither the name of the copyright holder nor the names of its #
# contributors may be used to endorse or promote products derived from this #
# software without specific prior written permission. #
# #
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS #
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED #
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A #
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER #
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, #
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, #
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR #
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF #
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING #
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS #
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #
# #
#############################################################################
*/
#ifndef __BioFVM_h__
#define __BioFVM_h__
#include <iostream>
#include <fstream>
namespace BioFVM{
extern std::string BioFVM_Version;
extern std::string BioFVM_URL;
};
#include "BioFVM_utilities.h"
#include "BioFVM_vector.h"
#include "BioFVM_vector.h"
#include "BioFVM_mesh.h"
#include "BioFVM_microenvironment.h"
#include "BioFVM_solvers.h"
#include "BioFVM_basic_agent.h"
#endif
This diff is collapsed.
/*
#############################################################################
# If you use BioFVM in your project, please cite BioFVM and the version #
# number, such as below: #
# #
# We solved the diffusion equations using BioFVM (Version 1.1.7) [1] #
# #
# [1] A. Ghaffarizadeh, S.H. Friedman, and P. Macklin, BioFVM: an efficient #
# parallelized diffusive transport solver for 3-D biological simulations,#
# Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 #
# #
#############################################################################
# #
# BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) #
# #
# Copyright (c) 2015-2017, Paul Macklin and the BioFVM Project #
# All rights reserved. #
# #
# Redistribution and use in source and binary forms, with or without #
# modification, are permitted provided that the following conditions are #
# met: #
# #
# 1. Redistributions of source code must retain the above copyright notice, #
# this list of conditions and the following disclaimer. #
# #
# 2. Redistributions in binary form must reproduce the above copyright #
# notice, this list of conditions and the following disclaimer in the #
# documentation and/or other materials provided with the distribution. #
# #
# 3. Neither the name of the copyright holder nor the names of its #
# contributors may be used to endorse or promote products derived from this #
# software without specific prior written permission. #
# #
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS #
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED #
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A #
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER #
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, #
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, #
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR #
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF #
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING #
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS #
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #
# #
#############################################################################
*/
#ifndef __BioFVM_MultiCellDS_h__
#define __BioFVM_MultiCellDS_h__
#include "pugixml.hpp"
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <cstring>
#include <vector>
#include <fstream>
namespace BioFVM{
extern std::string MultiCellDS_version_string;
extern std::string MultiCellDS_clinical_snapshot_type_string;
extern int MultiCellDS_clinical_snapshot_code;
extern std::string MultiCellDS_experimental_snapshot_type_string;
extern int MultiCellDS_experimental_snapshot_code;
extern std::string MultiCellDS_simulation_snapshot_type_string;
extern int MultiCellDS_simulation_snapshot_code;
extern std::string MultiCellDS_digital_cell_line_type_string;
extern int MultiCellDS_digital_cell_line_code;
/* options */
extern bool save_mesh_as_matlab;
extern bool save_density_data_as_matlab;
extern bool save_cells_as_custom_matlab;
extern bool save_cell_data;
class Microenvironment;
extern pugi::xml_document biofvm_doc;
class Person_Metadata
{
private:
bool is_empty;
public:
std::string type; // author, creator, user, curator
std::string surname;
std::string given_names;
std::string email;
std::string URL;
std::string organization;
std::string department;
std::string ORCID;
Person_Metadata( );
void display_information( std::ostream& os );
void insert_in_open_xml_pugi( pugi::xml_node& insert_here );
};
class Citation_Metadata
{
private:
public:
std::string DOI;
std::string PMID;
std::string PMCID;
std::string text;
std::string notes;
std::string URL;
Citation_Metadata();
void display_information( std::ostream& os );
void insert_in_open_xml_pugi( pugi::xml_node& insert_here );
};
class Software_Metadata
{
private:
public:
// basic program information
std::string program_name;
std::string program_version;
std::string program_URL;
Person_Metadata creator;
Person_Metadata user;
Citation_Metadata citation;
Software_Metadata();
void display_information( std::ostream& os );
void insert_in_open_xml_pugi( pugi::xml_node& insert_here );
};
class MultiCellDS_Metadata
{
private:
public:
std::string MultiCellDS_type;
Software_Metadata program;
Citation_Metadata data_citation;
// scientific information
std::string spatial_units;
std::string time_units;
std::string runtime_units;
double current_time;
double current_runtime;
std::string description; // any optional text -- not implemented
MultiCellDS_Metadata();
void display_information( std::ostream& os);
void sync_to_microenvironment( Microenvironment& M );
void restart_runtime( void );
void add_to_open_xml_pugi( double current_simulation_time, pugi::xml_document& xml_dom );
};
extern MultiCellDS_Metadata BioFVM_metadata;
/* setting up the main MultiCellDS tree structure */
void add_MultiCellDS_main_structure_to_open_xml_pugi( pugi::xml_document& xml_dom );
/* set options */
void set_save_biofvm_mesh_as_matlab( bool newvalue ); // default: true
void set_save_biofvm_data_as_matlab( bool newvalue ); // default: true
void set_save_biofvm_cell_data( bool newvalue ); // default: true
void set_save_biofvm_cell_data_as_custom_matlab( bool newvalue ); // default: true
/* writing parts of BioFVM to a MultiCellDS file */
void add_BioFVM_substrates_to_open_xml_pugi( pugi::xml_document& xml_dom , std::string filename_base , Microenvironment& M );
void add_BioFVM_basic_agent_to_open_xml_pugi( pugi::xml_document& xml_dom, Basic_Agent& BA ); // not implemented -- future edition
void add_BioFVM_agents_to_open_xml_pugi( pugi::xml_document& xml_dom, std::string filename_base, Microenvironment& M );
void add_BioFVM_to_open_xml_pugi( pugi::xml_document& xml_dom , std::string filename_base, double current_simulation_time , Microenvironment& M );
void save_BioFVM_to_MultiCellDS_xml_pugi( std::string filename_base , Microenvironment& M , double current_simulation_time);
/* future / not yet supported */
void read_BioFVM_from_open_xml_pugi( pugi::xml_document& xml_dom , std::string filename_base, double& current_simulation_time , Microenvironment& M );
void read_BioFVM_to_MultiCellDS_xml_pugi( std::string filename_base , Microenvironment& M , double& current_simulation_time );
/* partly-implemented code snippets -- not to be used as of March 2016 */
// functions to read multiscale_microenvironment from MultiCellDS file (requires pugixml)
void read_microenvironment_from_MultiCellDS_xml( Microenvironment& M_destination , std::string filename );
void read_microenvironment_from_MultiCellDS_xml( Microenvironment& M_destination , pugi::xml_document& xml_dom );
};
#endif
/*
#############################################################################
# If you use BioFVM in your project, please cite BioFVM and the version #
# number, such as below: #
# #
# We solved the diffusion equations using BioFVM (Version 1.1.7) [1] #
# #
# [1] A. Ghaffarizadeh, S.H. Friedman, and P. Macklin, BioFVM: an efficient #
# parallelized diffusive transport solver for 3-D biological simulations,#
# Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 #
# #
#############################################################################
# #
# BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) #
# #
# Copyright (c) 2015-2017, Paul Macklin and the BioFVM Project #
# All rights reserved. #
# #
# Redistribution and use in source and binary forms, with or without #
# modification, are permitted provided that the following conditions are #
# met: #
# #
# 1. Redistributions of source code must retain the above copyright notice, #
# this list of conditions and the following disclaimer. #
# #
# 2. Redistributions in binary form must reproduce the above copyright #
# notice, this list of conditions and the following disclaimer in the #
# documentation and/or other materials provided with the distribution. #
# #
# 3. Neither the name of the copyright holder nor the names of its #
# contributors may be used to endorse or promote products derived from this #
# software without specific prior written permission. #
# #
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS #
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED #
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A #
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER #
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, #
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, #
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR #
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF #
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING #
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS #
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #
# #
#############################################################################
*/
#include "BioFVM_agent_container.h"
#include "BioFVM_basic_agent.h"
#include "BioFVM_vector.h"
namespace BioFVM{
Agent_Container::Agent_Container(){}
void Agent_Container::initialize(int num_voxels){}
void Agent_Container::register_agent( Basic_Agent* agent ){}
void Agent_Container::remove_agent(Basic_Agent* agent ){}
void Agent_Container::add_agent_to_outer_voxel(Basic_Agent* agent){}
void Agent_Container::remove_agent_from_voxel(Basic_Agent* agent, int voxel_index){}
void Agent_Container::add_agent_to_voxel(Basic_Agent* agent, int voxel_index){}
void Agent_Container::update_all_cells(double dt){}
};
\ No newline at end of file
/*
#############################################################################
# If you use BioFVM in your project, please cite BioFVM and the version #
# number, such as below: #
# #
# We solved the diffusion equations using BioFVM (Version 1.1.7) [1] #
# #
# [1] A. Ghaffarizadeh, S.H. Friedman, and P. Macklin, BioFVM: an efficient #
# parallelized diffusive transport solver for 3-D biological simulations,#
# Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 #
# #
#############################################################################
# #
# BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) #
# #
# Copyright (c) 2015-2017, Paul Macklin and the BioFVM Project #
# All rights reserved. #
# #
# Redistribution and use in source and binary forms, with or without #
# modification, are permitted provided that the following conditions are #
# met: #
# #
# 1. Redistributions of source code must retain the above copyright notice, #
# this list of conditions and the following disclaimer. #
# #
# 2. Redistributions in binary form must reproduce the above copyright #
# notice, this list of conditions and the following disclaimer in the #
# documentation and/or other materials provided with the distribution. #
# #
# 3. Neither the name of the copyright holder nor the names of its #
# contributors may be used to endorse or promote products derived from this #
# software without specific prior written permission. #
# #
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS #
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED #
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A #
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER #
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, #
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, #
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR #
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF #
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING #
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS #
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #
# #
#############################################################################
*/
#ifndef __BioFVM_agent_container_h__
#define __BioFVM_agent_container_h__
#include <vector>
namespace BioFVM{
class Basic_Agent;
class Microenvironment;
class Agent_Container
{
private:
public:
std::vector<std::vector<Basic_Agent*> > agent_grid;
Agent_Container();
void register_agent( Basic_Agent* agent );
void initialize( int num_voxels );
void remove_agent(Basic_Agent* agent );
void add_agent_to_outer_voxel(Basic_Agent* agent);
void remove_agent_from_voxel(Basic_Agent* agent, int voxel_index);
void add_agent_to_voxel(Basic_Agent* agent, int voxel_index);
void update_all_cells(double dt);
};
int find_escaping_face_index(Basic_Agent* agent);
};
#endif
/*
#############################################################################
# If you use BioFVM in your project, please cite BioFVM and the version #
# number, such as below: #
# #
# We solved the diffusion equations using BioFVM (Version 1.1.7) [1] #
# #
# [1] A. Ghaffarizadeh, S.H. Friedman, and P. Macklin, BioFVM: an efficient #
# parallelized diffusive transport solver for 3-D biological simulations,#
# Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 #
# #
#############################################################################
# #
# BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) #
# #
# Copyright (c) 2015-2017, Paul Macklin and the BioFVM Project #
# All rights reserved. #
# #
# Redistribution and use in source and binary forms, with or without #
# modification, are permitted provided that the following conditions are #
# met: #
# #
# 1. Redistributions of source code must retain the above copyright notice, #
# this list of conditions and the following disclaimer. #
# #
# 2. Redistributions in binary form must reproduce the above copyright #
# notice, this list of conditions and the following disclaimer in the #
# documentation and/or other materials provided with the distribution. #
# #
# 3. Neither the name of the copyright holder nor the names of its #
# contributors may be used to endorse or promote products derived from this #
# software without specific prior written permission. #
# #
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS #
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED #
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A #
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER #
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, #
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, #
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR #
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF #