Skip to content

Commit 71031b5

Browse files
authored
Gh93 Maternal Deposition work (#104)
Adding MaternalDeposition functionality to the vector genetics model. For details, please see https://github.com/EMOD-Hub/EMOD/issues/93
1 parent c647e93 commit 71031b5

File tree

58 files changed

+8873
-126
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+8873
-126
lines changed

Eradication/GeneticProbabilityConfig.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ namespace Kernel
5959

6060
jsonConfigurable::ConstrainedString species_name;
6161
species_name.constraint_param = &r_species_name_set;
62-
species_name.constraints = "<configuration>:Vector_Species_Params.Name";
62+
species_name.constraints = m_pSpeciesCollection->SPECIES_NAME_CONSTRAINTS;
6363

6464
initConfigTypeMap( "Species", &species_name, Insecticide_Species_Name_DESC_TEXT );
6565

@@ -76,15 +76,12 @@ namespace Kernel
7676
// --- Now that we have the species parameters, we can make sure
7777
// --- that the alleles entered are valid.
7878
// -------------------------------------------------------------
79-
const char* constraint_schema = "<configuration>:Vector_Species_Params.Genes.*";
80-
8179
std::set<std::string> allowed_values = m_pVectorSpeciesParameters->genes.GetDefinedAlleleNames();
8280
allowed_values.insert( "*" );
83-
8481
float probability = 0.0;
8582
std::vector<std::vector<std::string>> combo_strings;
8683

87-
initConfigTypeMap( "Allele_Combinations", &combo_strings, ACPC_Allele_Combinations_DESC_TEXT, constraint_schema, allowed_values );
84+
initConfigTypeMap( "Allele_Combinations", &combo_strings, ACPC_Allele_Combinations_DESC_TEXT, "Vector_Species_Params[X].Genes", allowed_values );
8885
initConfigTypeMap( "Probability", &probability, ACPC_Probability_DESC_TEXT, 0.0f, 1.0f, 0.0f );
8986

9087
bool is_configured = JsonConfigurable::Configure( inputJson );

Eradication/Insecticides.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ namespace Kernel
4848

4949
jsonConfigurable::ConstrainedString species_name;
5050
species_name.constraint_param = &r_species_name_set;
51-
species_name.constraints = "<configuration>:Vector_Species_Params.Name";
51+
species_name.constraints = m_pSpeciesCollection->SPECIES_NAME_CONSTRAINTS;
5252

5353
initConfigTypeMap( "Species", &species_name, Insecticide_Species_Name_DESC_TEXT );
5454

@@ -66,7 +66,7 @@ namespace Kernel
6666
allowed_values = r_species_params.genes.GetDefinedAlleleNames();
6767
}
6868
allowed_values.insert( "*" );
69-
const char* constraint_schema = "<configuration>:Vector_Species_Params.Genes.*";
69+
const char* constraint_schema = "Vector_Species_Params[X].Genes";
7070

7171
std::vector<std::vector<std::string>> combo_strings;
7272
float modifier_larval = 1.0f;
@@ -360,7 +360,7 @@ namespace Kernel
360360
// because insecticides has the real thing.
361361
this->constraint_param = &(p_vp->insecticides.GetInsecticideNames());
362362
}
363-
this->constraints = "<configuration>:Insecticides.Name";
363+
this->constraints = "Insecticides[X].Name";
364364
}
365365

366366
InsecticideName::InsecticideName( const InsecticideName& rMaster )

Eradication/MigrationInfoVector.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ namespace Kernel
4242

4343
bool MigrationMetadataVector::Configure( const Configuration* config )
4444
{
45-
const char* constraint_schema = "<configuration>:Vector_Species_Params.Genes.*";
45+
const char* constraint_schema = "Vector_Species_Params[X].Genes";
4646
std::set<std::string> allowed_values = m_pGenes->GetDefinedAlleleNames();
4747
allowed_values.insert( "*" );
4848

Eradication/ParasiteGenetics.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -815,8 +815,8 @@ namespace Kernel
815815
if( m_VarGeneRandomnessType != VarGeneRandomnessType::FIXED_NEIGHBORHOOD )
816816
{
817817
std::stringstream ss;
818-
ss << "It is invalid for <config>.Parasite_Genetics.Var_Gene_Randomness_Type != FIXED_NEIGHBORHOOD and\n"
819-
<< "<campaign>.OutbreakIndividualMalariaGenetics.Create_Nucleotide_Sequence_From = NUCLEOTIDE_SEQUENCE.";
818+
ss << "It is invalid for 'Parasite_Genetics.Var_Gene_Randomness_Type' != 'FIXED_NEIGHBORHOOD' and\n"
819+
<< "'OutbreakIndividualMalariaGenetics.Create_Nucleotide_Sequence_From' = 'NUCLEOTIDE_SEQUENCE'.";
820820
throw GeneralConfigurationException( __FILE__, __LINE__, __FUNCTION__, ss.str().c_str() );
821821
}
822822

@@ -868,8 +868,8 @@ namespace Kernel
868868
std::stringstream ss;
869869
ss << "Invalid number of frequency sets in '" << pParamNameAlleleFreq << "'.\n";
870870
ss << "'" << pParamNameAlleleFreq << "' has " << sizeAlleleFreq << "\n";
871-
ss << "and '<config>." << pParamNameLocations << "' has " << sizeLocations << ".\n";
872-
ss << "There should be one set for each location defined in '<config>." << pParamNameLocations << "'.";
871+
ss << "and '" << pParamNameLocations << "' has " << sizeLocations << ".\n";
872+
ss << "There should be one set for each location defined in '" << pParamNameLocations << "'.";
873873
throw GeneralConfigurationException( __FILE__, __LINE__, __FUNCTION__, ss.str().c_str() );
874874
}
875875

@@ -1219,7 +1219,7 @@ namespace Kernel
12191219
ss << "It has " << rString.length() << " characters and ";
12201220
if( isReportParameter )
12211221
{
1222-
ss << "<config." << pLocationsParameterName << ">";
1222+
ss << "'" << pLocationsParameterName << "'";
12231223
}
12241224
else
12251225
{

Eradication/SConscript_coreLib

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ else:
169169
"VectorSpeciesReport.cpp",
170170
"VectorTraitModifiers.cpp",
171171
"VectorSurveillanceEventCoordinator.cpp",
172+
"VectorMaternalDeposition.cpp",
172173
"Climate.cpp",
173174
"ClimateByData.cpp",
174175
"ClimateConstant.cpp",

Eradication/VectorFertilizer.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "VectorGene.h"
55
#include "VectorGeneDriver.h"
66
#include "VectorTraitModifiers.h"
7+
#include "VectorMaternalDeposition.h"
78
#include "RANDOM.h"
89
#include "Exceptions.h"
910
#include "Log.h"
@@ -17,6 +18,7 @@ namespace Kernel
1718
: m_pGenes( nullptr )
1819
, m_pTraitModifiers( nullptr )
1920
, m_pGeneDrivers( nullptr )
21+
, m_pMaternalDepositions( nullptr )
2022
{
2123
}
2224

@@ -26,11 +28,13 @@ namespace Kernel
2628

2729
void VectorFertilizer::Initialize( const VectorGeneCollection* pGenes,
2830
const VectorTraitModifiers* pTraitModifiers,
29-
const VectorGeneDriverCollection* pGeneDrivers )
31+
const VectorGeneDriverCollection* pGeneDrivers,
32+
const VectorMaternalDepositionCollection* pMaternalDepositions )
3033
{
3134
m_pGenes = pGenes;
3235
m_pTraitModifiers = pTraitModifiers;
3336
m_pGeneDrivers = pGeneDrivers;
37+
m_pMaternalDepositions = pMaternalDepositions;
3438
}
3539

3640
InitialGenomeData VectorFertilizer::DetermineInitialGenomeData( RANDOMBASE* pRNG, uint32_t total )
@@ -144,6 +148,13 @@ namespace Kernel
144148
GermlineMutation( gametes_female );
145149
GermlineMutation( gametes_male );
146150

151+
// -------------------------------------------------------------------------
152+
// --- Pre-calculating allele changes due to maternal deposition of Cas9
153+
// -------------------------------------------------------------------------
154+
155+
DoMaternalDepostion( rFemale, gametes_female );
156+
DoMaternalDepostion( rFemale, gametes_male );
157+
147158
// -------------------------------------------------------------------------
148159
// --- Now that we have the gametes from each parent and the probability of
149160
// --- that gamete generate the possible genomes (i.e. fertilized eggs).
@@ -487,6 +498,23 @@ namespace Kernel
487498
return gppv;
488499
}
489500

501+
void VectorFertilizer::DoMaternalDepostion( const VectorGenome& rMomGenome, GameteProbPairVector_t& rGametes ) const
502+
{
503+
if( ( m_pGeneDrivers == nullptr ) || ( m_pGeneDrivers->Size() == 0 ) ||
504+
( m_pMaternalDepositions == nullptr) || ( m_pMaternalDepositions->Size() == 0) )
505+
{
506+
return;
507+
}
508+
else
509+
{
510+
m_pMaternalDepositions->DoMaternalDeposition( rMomGenome, rGametes );
511+
return;
512+
}
513+
514+
}
515+
516+
517+
490518
void VectorFertilizer::AdjustForNonFertileEggs( GenomeProbPairVector_t& rPossibilities ) const
491519
{
492520
for( auto& r_gpp : rPossibilities )

Eradication/VectorFertilizer.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ namespace Kernel
99
class VectorGeneCollection;
1010
class VectorTraitModifiers;
1111
class VectorGeneDriverCollection;
12+
class VectorMaternalDepositionCollection;
1213

1314
struct MatedGenomeCount
1415
{
@@ -31,7 +32,8 @@ namespace Kernel
3132

3233
void Initialize( const VectorGeneCollection* pGenes,
3334
const VectorTraitModifiers* pTraitModifiers,
34-
const VectorGeneDriverCollection* pGeneDrivers );
35+
const VectorGeneDriverCollection* pGeneDrivers,
36+
const VectorMaternalDepositionCollection* pMaternalDepositions );
3537

3638
InitialGenomeData DetermineInitialGenomeData( RANDOMBASE* pRNG, uint32_t total );
3739

@@ -63,12 +65,14 @@ namespace Kernel
6365
const VectorGenome& rGenome );
6466

6567
void GermlineMutation( GameteProbPairVector_t& rGametes );
66-
68+
void DoMaternalDepostion( const VectorGenome& rMomGenome, GameteProbPairVector_t& rGametes ) const;
6769
void AdjustForNonFertileEggs( GenomeProbPairVector_t& rPossibilities ) const;
6870

71+
6972
private:
7073
const VectorGeneCollection* m_pGenes;
7174
const VectorTraitModifiers* m_pTraitModifiers;
7275
const VectorGeneDriverCollection* m_pGeneDrivers;
76+
const VectorMaternalDepositionCollection* m_pMaternalDepositions;
7377
};
7478
}

Eradication/VectorGene.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ namespace Kernel
3232
{
3333
jsonConfigurable::ConstrainedString tmp_from;
3434
tmp_from.constraint_param = m_pAlleleNameSet;
35-
tmp_from.constraints = "<configuration>:Genes.Alleles.Name";
35+
tmp_from.constraints = "Genes[X].Alleles[X].Name";
3636

3737
jsonConfigurable::ConstrainedString tmp_to;
3838
tmp_to.constraint_param = m_pAlleleNameSet;
39-
tmp_to.constraints = "<configuration>:Genes.Alleles.Name";
39+
tmp_to.constraints = "Genes[X].Alleles[X].Name";
4040

4141
initConfigTypeMap( "Mutate_From", &tmp_from, VAM_Mutate_From_DESC_TEXT, std::string("") );
4242
initConfigTypeMap( "Mutate_To", &tmp_to, VAM_Mutate_To_DESC_TEXT, std::string("") );

Eradication/VectorGene.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ namespace Kernel
170170

171171
// IVectorGenomeNames
172172
virtual std::string GetGenomeName( const VectorGenome& rGenome ) const override;
173+
static constexpr const char* GENE_CONSTRAINTS = "Vector_Species_Params[X].Genes";
173174

174175
protected:
175176
virtual VectorGene* CreateObject() override;

0 commit comments

Comments
 (0)