Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parameter mode etc #2925

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
331 changes: 110 additions & 221 deletions src/Db/Diff/PKSimDB_diff.txt

Large diffs are not rendered by default.

266 changes: 135 additions & 131 deletions src/Db/Dump/PKSimDB_dump.txt

Large diffs are not rendered by default.

Binary file modified src/Db/PKSimDB.sqlite
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
namespace PKSim.Infrastructure.ORM.FlatObjects
{
/// <summary>
/// Source and Target are used for transport source/target container conditions
/// Parent is used e.g. for reactions (parent) container conditions
/// </summary>
public enum ProcessTagType
{
Source,
Target
Target,
Parent
}

public class FlatProcessDescriptorCondition : FlatDescriptorConditionBase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ private IPKSimProcess createProcessFrom(FlatProcess flatProcess)
{
case ProcessActionType.Reaction:
var reaction = newReaction();
addReactionPartnersTo(reaction, flatProcess.Name);
addReactionPartnersAndContainerCriteriaTo(reaction, flatProcess.Name);
return reaction;
case ProcessActionType.Transport:
return _entityBaseFactory.Create<PKSimTransport>();
Expand All @@ -91,7 +91,7 @@ private PKSimReaction newReaction()
return _entityBaseFactory.Create<PKSimReaction>();
}

private void addReactionPartnersTo(PKSimReaction reaction, string reactionName)
private void addReactionPartnersAndContainerCriteriaTo(PKSimReaction reaction, string reactionName)
{
var allPartners = (from rp in _reactionPartnerRepository.All()
where rp.Reaction.Equals(reactionName)
Expand All @@ -101,6 +101,20 @@ where rp.Reaction.Equals(reactionName)
{
addReactionPartnerTo(reaction, flatReactionPartner);
}

var conditions = from pd in _processDescriptorRepository.All()
where pd.TagType == ProcessTagType.Parent
where pd.Process == reactionName
select pd;

//TODO we should extend the DB structure to allow also InContainer/NotInContainer criteria
foreach (var condition in conditions)
{
if (condition.ShouldHave)
reaction.ContainerCriteria.Add(new MatchTagCondition(condition.Tag));
else
reaction.ContainerCriteria.Add(new NotMatchTagCondition(condition.Tag));
}
}

private void addReactionPartnerTo(PKSimReaction reaction, FlatReactionPartner flatReactionPartner)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
using System.Linq;
using OSPSuite.BDDHelper;
using OSPSuite.BDDHelper.Extensions;
using OSPSuite.Core.Domain;
using PKSim.Core;
using PKSim.Infrastructure.ORM.FlatObjects;
using PKSim.Infrastructure.ORM.Repositories;

Expand All @@ -11,19 +13,30 @@ public abstract class concern_for_FlatIndividualParametersNotCommonForAllSpecies
{
}

public class When_resolving_all_parameters_not_common_for_all_species_as_a_flat_table : concern_for_FlatIndividualParametersNotCommonForAllSpeciesRepository
public class
When_resolving_all_parameters_not_common_for_all_species_as_a_flat_table :
concern_for_FlatIndividualParametersNotCommonForAllSpeciesRepository
{
private IEnumerable<FlatIndividualParametersNotCommonForAllSpecies> _result;
private IEnumerable<FlatIndividualParametersNotCommonForAllSpecies> _organismParameters;

protected override void Because()
{
_result = sut.All();
_organismParameters = _result.Where(p => p.ContainerName.Equals("Organism"));
}

[Observation]
public void should_retrieve_some_object_from_the_underlying_database()
{
_result.Count().ShouldBeGreaterThan(0);
}

[Observation]
public void should_contain_mean_height()
{
_organismParameters.Count(p => p.ParameterName.Equals(CoreConstants.Parameters.MEAN_HEIGHT))
.ShouldBeEqualTo(1);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ private bool isOneOfReadOnlyAndIsInputParameters(string parameterName)
return parameterName.IsOneOf(Constants.Parameters.IS_SMALL_MOLECULE, CoreConstants.Parameters.INPUT_DOSE);
}

[Observation]
public void all_parameters_should_have_build_mode_global_or_local()
{
_allParameters.Count(p => p.BuildMode != ParameterBuildMode.Global && p.BuildMode != ParameterBuildMode.Local)
.ShouldBeEqualTo(0);
}

[Observation]
public void all_hidden_parameters_should_be_read_only()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,6 @@ public void should_have_created_one_entry_for_the_changed_parameter_in_the_param
_parameterValues[_parameterPath].Value.ShouldBeEqualTo(10);
}

[Observation]
public void should_have_not_created_entries_for_property_parameter_of_the_enzyme()
{
var propertyParameters = _enzyme.AllParameters().Where(x => x.BuildMode == ParameterBuildMode.Property).ToList();
propertyParameters.Count.ShouldBeGreaterThan(0);
propertyParameters.Each(x =>
{
var parameterPath = _entityPathResolver.ObjectPathFor(x);
_parameterValues[parameterPath].ShouldBeNull();
});
}
}

public class When_creating_a_parameter_start_value_for_an_individual_and_simulation_where_the_initial_concentration_was_changed_in_the_expression_profile : ContextForSimulationIntegration<IPKSimParameterValuesCreator>
Expand Down
9 changes: 3 additions & 6 deletions tests/PKSim.Tests/IntegrationTests/SimulationSpecs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -593,9 +593,6 @@ public void should_create_required_molecules_in_sub_compartments_of_tissue_organ
public void should_create_required_molecules_in_subcompartments_of_endogenous_igg_organ()
{
string fcRn = CoreConstants.Molecule.FcRn;
const string fcRnKineticsEndosome = "FcRn kinetics endosome";
const string fcRnKineticsInterstitial = "FcRn kinetics interstitial";
const string fcRnKineticsPlasma = "FcRn kinetics plasma";
string ligandEndo = CoreConstants.Molecule.LigandEndo;
string ligandEndoComplex = CoreConstants.Molecule.LigandEndoComplex;

Expand All @@ -605,19 +602,19 @@ public void should_create_required_molecules_in_subcompartments_of_endogenous_ig
var plasma = endoIgg.GetSingleChildByName<IContainer>(CoreConstants.Compartment.PLASMA);
var endoIggPlasmaMoleculeNames = moleculeNamesIn(plasma);

endoIggPlasmaMoleculeNames.ShouldOnlyContain(fcRn, fcRnKineticsPlasma, ligandEndo, ligandEndoComplex);
endoIggPlasmaMoleculeNames.ShouldOnlyContain(fcRn, ligandEndo, ligandEndoComplex);

// interstitial
var interstitial = endoIgg.GetSingleChildByName<IContainer>(CoreConstants.Compartment.INTERSTITIAL);
var endoIggInterstitialMoleculeNames = moleculeNamesIn(interstitial);

endoIggInterstitialMoleculeNames.ShouldOnlyContain(fcRn, fcRnKineticsInterstitial, ligandEndo, ligandEndoComplex);
endoIggInterstitialMoleculeNames.ShouldOnlyContain(fcRn, ligandEndo, ligandEndoComplex);

// endosome
var endosome = endoIgg.GetSingleChildByName<IContainer>(CoreConstants.Compartment.ENDOSOME);
var endoIggEndosomeMoleculeNames = moleculeNamesIn(endosome);

endoIggEndosomeMoleculeNames.ShouldOnlyContain(fcRn, fcRnKineticsEndosome, ligandEndo, ligandEndoComplex);
endoIggEndosomeMoleculeNames.ShouldOnlyContain(fcRn, ligandEndo, ligandEndoComplex);

// IgG_Source
var iggSrc = endoIgg.GetSingleChildByName<IContainer>("IgG_Source");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Linq;
using OSPSuite.BDDHelper;
using OSPSuite.BDDHelper.Extensions;
using OSPSuite.Utility.Extensions;
using PKSim.Core;
using PKSim.Core.Model;
using PKSim.Core.Repositories;
Expand All @@ -11,6 +12,7 @@ namespace PKSim.IntegrationTests
public abstract class concern_for_StaticReactionRepository : ContextForIntegration<IStaticReactionRepository>
{
protected const string _reactionName1 = "FcRn binding tissue";
protected const string _reactionPrefix = "FcRn binding drug in ";
}

public class When_retrieving_all_static_reactions_the_repository : concern_for_StaticReactionRepository
Expand Down Expand Up @@ -44,6 +46,7 @@ public void should_return_the_reaction_with_partners()
_reaction.ShouldNotBeNull();
_reaction.Educts.Count().ShouldBeGreaterThan(0);
_reaction.Products.Count().ShouldBeGreaterThan(0);
_reaction.ContainerCriteria.Count.ShouldBeEqualTo(0);
}
}

Expand All @@ -61,13 +64,27 @@ protected override void Because()
[Observation]
public void four_comp_reactions_list_should_be_empty()
{
_fourCompReactions.Count().ShouldBeEqualTo(0);
_fourCompReactions.Count.ShouldBeEqualTo(0);
}

[Observation]
public void two_pores_reactions_list_should_contain_FcRn_binding_endosomal_tissue()
public void two_pores_reactions_list_should_contain_FcRn_binding_tissue()
{
_twoPoreReactions.Any(r => r.Name.Equals(_reactionName1)).ShouldBeTrue();
}

[Observation]
public void two_pores_FcRn_binding_tissue_reaction_should_not_have_container_criteria()
{
_twoPoreReactions.First(r => r.Name.Equals(_reactionName1)).ContainerCriteria.Count.ShouldBeEqualTo(0);
}

[Observation]
public void two_pores_endogenousIgg_FcRn_binding_reactions_Should_have_container_criteria()
{
var reactions = _twoPoreReactions.Where(r => r.Name.StartsWith(_reactionPrefix)).ToList();
reactions.Count.ShouldBeEqualTo(3);
reactions.Each(r=>r.ContainerCriteria.Count.ShouldBeGreaterThan(0));
}
}
}