Skip to content

Commit

Permalink
Fixes #1312
Browse files Browse the repository at this point in the history
  • Loading branch information
msevestre committed Oct 16, 2023
1 parent bc4f3ef commit 63dfd44
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,11 @@ public NeighborhoodBuilderToNeighborhoodMapper(
public Neighborhood MapFrom(NeighborhoodBuilder neighborhoodBuilder, IEnumerable<string> moleculeNames,
IEnumerable<string> moleculeNamesWithCopyPropertiesRequired, ModelConfiguration modelConfiguration)
{
var (model, simulationConfiguration, replacementContext) = modelConfiguration;
var (model, simulationBuilder, replacementContext) = modelConfiguration;

var neighborhood = _objectBaseFactory.Create<Neighborhood>();
neighborhood.UpdatePropertiesFrom(neighborhoodBuilder, _cloneManagerForModel);
simulationConfiguration.AddBuilderReference(neighborhood, neighborhoodBuilder);
simulationBuilder.AddBuilderReference(neighborhood, neighborhoodBuilder);
neighborhood.FirstNeighbor = resolveReference(model, neighborhoodBuilder.FirstNeighborPath, replacementContext);
neighborhood.SecondNeighbor = resolveReference(model, neighborhoodBuilder.SecondNeighborPath, replacementContext);

Expand All @@ -66,23 +66,24 @@ public Neighborhood MapFrom(NeighborhoodBuilder neighborhoodBuilder, IEnumerable
if (neighborhoodBuilder.MoleculeProperties != null)
{
moleculeNames.Each(moleculeName => neighborhood.Add(
createMoleculePropertiesFor(neighborhoodBuilder, moleculeName, moleculeNamesWithCopyPropertiesRequired, simulationConfiguration, replacementContext)));
createMoleculePropertiesFor(neighborhoodBuilder, moleculeName, moleculeNamesWithCopyPropertiesRequired, modelConfiguration)));
}

//Add neighborhood parameter to the neighborhood (clone the existing parameter)
neighborhoodBuilder.Parameters.Each(param => neighborhood.Add(_parameterMapper.MapFrom(param, simulationConfiguration)));
neighborhoodBuilder.Parameters.Each(param => neighborhood.Add(_parameterMapper.MapFrom(param, simulationBuilder)));
return neighborhood;
}

private IContainer resolveReference(IModel model, ObjectPath objectPath, ReplacementContext replacementContext)
{
var objectPathInModel = _keywordReplacerTask.CreateModelPathFor(objectPath, replacementContext);
return objectPathInModel.Resolve<IContainer>(replacementContext.RootContainer);
return objectPathInModel.Resolve<IContainer>(model.Root);
}

private IContainer createMoleculePropertiesFor(NeighborhoodBuilder neighborhoodBuilder,
string moleculeName, IEnumerable<string> moleculeNamesWithCopyPropertiesRequired, SimulationBuilder simulationBuilder, ReplacementContext replacementContext)
string moleculeName, IEnumerable<string> moleculeNamesWithCopyPropertiesRequired, ModelConfiguration modelConfiguration)
{
var (_, simulationBuilder, replacementContext) = modelConfiguration;
//Create a new model container from the neighborhood container
var moleculePropertiesContainer = _containerMapper.MapFrom(neighborhoodBuilder.MoleculeProperties, simulationBuilder);
moleculePropertiesContainer.ContainerType = ContainerType.Molecule;
Expand Down
8 changes: 4 additions & 4 deletions src/OSPSuite.Core/Domain/Services/ObserverBuilderTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ public void CreateObservers(ModelConfiguration modelConfiguration)
try
{
foreach (var observerBuilder in observers.OfType<AmountObserverBuilder>())
createAmountObserver(observerBuilder, replacementContext, presentMolecules);
createAmountObserver(observerBuilder, presentMolecules, replacementContext);


foreach (var observerBuilder in observers.OfType<ContainerObserverBuilder>())
createContainerObserver(observerBuilder, replacementContext, presentMolecules);
createContainerObserver(observerBuilder, presentMolecules, replacementContext);
}
finally
{
Expand All @@ -77,7 +77,7 @@ private IEnumerable<MoleculeBuilder> moleculeBuildersValidFor(MoleculeList molec
/// in the spatial structure of the model.
/// Typical example: "Concentration"-Observer (M/V)
/// </summary>
private void createAmountObserver(AmountObserverBuilder observerBuilder, ReplacementContext replacementContext, IEnumerable<MoleculeBuilder> presentMolecules)
private void createAmountObserver(AmountObserverBuilder observerBuilder, IEnumerable<MoleculeBuilder> presentMolecules, ReplacementContext replacementContext)
{
var moleculeNamesForObserver = moleculeBuildersValidFor(observerBuilder.MoleculeList, presentMolecules)
.Select(x => x.Name).ToList();
Expand All @@ -100,7 +100,7 @@ private void createAmountObserver(AmountObserverBuilder observerBuilder, Replace
/// of the model.
/// Typical example is average drug concentration in an organ
/// </summary>
private void createContainerObserver(ContainerObserverBuilder observerBuilder, ReplacementContext replacementContext, IEnumerable<MoleculeBuilder> presentMolecules)
private void createContainerObserver(ContainerObserverBuilder observerBuilder, IEnumerable<MoleculeBuilder> presentMolecules, ReplacementContext replacementContext)
{
var moleculeBuildersForObserver = moleculeBuildersValidFor(observerBuilder.MoleculeList, presentMolecules).ToList();
//retrieve a list here to avoid endless loop if observers criteria is not well defined
Expand Down
8 changes: 4 additions & 4 deletions tests/OSPSuite.Core.Tests/Domain/KeywordReplacerTaskSpecs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace OSPSuite.Core.Domain
{
internal abstract class concern_for_KeywordReplacerTask : ContextSpecification<IKeywordReplacerTask>
public abstract class concern_for_KeywordReplacerTask : ContextSpecification<IKeywordReplacerTask>
{
protected string _modelName;
protected FormulaUsablePath _objPathFirstNeighbor;
Expand All @@ -33,7 +33,7 @@ protected override void Context()
}
}

internal class When_replacing_the_keyword_in_a_reaction : concern_for_KeywordReplacerTask
public class When_replacing_the_keyword_in_a_reaction : concern_for_KeywordReplacerTask
{
private Reaction _reaction;

Expand Down Expand Up @@ -65,7 +65,7 @@ public void should_have_replace_the_organism_keyword_with_the_global_path_to_the
}
}

internal class When_replacing_the_keyword_in_a_molecule_properties_container : concern_for_KeywordReplacerTask
public class When_replacing_the_keyword_in_a_molecule_properties_container : concern_for_KeywordReplacerTask
{
private IContainer _moleculeContainer;
private string _moleculeName;
Expand Down Expand Up @@ -102,7 +102,7 @@ public void should_have_replace_the_organism_keyword_with_the_global_path_to_the
}
}

internal class When_replacing_keywords_in_a_parameter_defined_in_a_global_molecule_container : concern_for_KeywordReplacerTask
public class When_replacing_keywords_in_a_parameter_defined_in_a_global_molecule_container : concern_for_KeywordReplacerTask
{
private IParameter _parameter;
private IContainer _rootContainer;
Expand Down

0 comments on commit 63dfd44

Please sign in to comment.