Esempio n. 1
0
        private void addLiverZoneCompartmentObserver(IObserverBuilder observerBuilder, string compartment, IObserverBuildingBlock observerBuildingBlock, Compound compound)
        {
            var observerName = CoreConstants.CompositeNameFor(observerBuilder.Name, CoreConstants.Organ.Liver, compartment);

            if (observerBuildingBlock.ExistsByName(observerName))
            {
                return;
            }

            var observer = _objectBaseFactory.Create <IContainerObserverBuilder>()
                           .WithName(observerName)
                           .WithDimension(_dimensionRepository.Fraction);

            observer.ForAll = false;
            observerBuilder.MoleculeNames().Each(observer.AddMoleculeName);

            observer.ContainerCriteria = Create.Criteria(x => x.With(CoreConstants.Organ.Liver)
                                                         .And.With(compartment)
                                                         .And.Not(CoreConstants.Compartment.Pericentral)
                                                         .And.Not(CoreConstants.Compartment.Periportal));

            var formula = _objectBaseFactory.Create <ExplicitFormula>()
                          .WithName(observerName)
                          .WithFormulaString("(M_periportal + M_pericentral)/" + TOTAL_DRUG_MASS_ALIAS)
                          .WithDimension(_dimensionRepository.Fraction);

            formula.AddObjectPath(createZoneAmoutPath(compartment, CoreConstants.Compartment.Periportal, "M_periportal"));
            formula.AddObjectPath(createZoneAmoutPath(compartment, CoreConstants.Compartment.Pericentral, "M_pericentral"));
            formula.AddObjectPath(createTotalDrugMassObjectPath(compound.Name));

            observer.Formula = formula;
            observerBuildingBlock.Add(observer);
            observerBuildingBlock.AddFormula(formula);
        }
 protected override void Context()
 {
     base.Context();
     _observer = new ObserverBuilder().WithName("NNNNNN");
     _observer.ContainerCriteria.Add(new MatchTagCondition(_changedName));
     _observerBuildingBlock = new ObserverBuildingBlock().WithName("Observer").WithId("Observer");
     _observerBuildingBlock.Add(_observer);
 }
Esempio n. 3
0
        private IContainerObserverBuilder createContainerFractionObserver(string observerName, IObserverBuildingBlock observerBuildingBlock, Func <IFormula> getFormula)
        {
            var observer = _objectBaseFactory.Create <IContainerObserverBuilder>()
                           .WithName(observerName)
                           .WithDimension(_dimensionRepository.Fraction)
                           .WithFormula(getFormula());

            observerBuildingBlock.Add(observer);
            return(observer);
        }
Esempio n. 4
0
        private void addStandardObserversTo(Simulation simulation, IObserverBuildingBlock observerBuildingBlock, IMoleculeBuildingBlock moleculeBuildingBlock)
        {
            var allMoleculesNeedingConcentrationObservers = moleculeBuildingBlock.Where(concentrationIsNeeded).Select(x => x.Name).ToList();
            var compoundNames = simulation.CompoundNames;

            foreach (var observerTemplate in _observerBuilderRepository.AllFor(simulation.ModelProperties))
            {
                if (isDrugFcRnObserver(observerTemplate))
                {
                    //special case: protein model observer for drug and its FcRn complex.
                    //Observer must be created separately for every drug because complexname can not be referenced in generic way by now
                    //E.g.: for drug C1, Observer is f("C1", "C1-FcRn_Complex"))
                    foreach (var compoundName in compoundNames)
                    {
                        var observer = _cloneManager.Clone(observerTemplate.ObserverBuilder, observerBuildingBlock.FormulaCache);
                        observer.Name = CoreConstants.Observer.ObserverNameFrom(observer.Name, compoundName);

                        observer.Formula.ReplaceKeywordsInObjectPaths(
                            new[] { CoreConstants.Molecule.DrugFcRnComplexTemplate },
                            new[] { CoreConstants.Molecule.DrugFcRnComplexName(compoundName) }
                            );

                        observer.AddMoleculeName(compoundName);

                        observerBuildingBlock.Add(observer);
                    }
                }
                else
                {
                    var observer = _cloneManager.Clone(observerTemplate.ObserverBuilder, observerBuildingBlock.FormulaCache);

                    compoundNames.Each(observer.AddMoleculeName);

                    if (observer.IsConcentration())
                    {
                        allMoleculesNeedingConcentrationObservers.Each(observer.AddMoleculeName);
                    }

                    observerBuildingBlock.Add(observer);
                }
            }
        }
Esempio n. 5
0
        protected override void Context()
        {
            base.Context();
            var monitor  = new ExplicitFormula("TotalDrugMass");
            var observer = new ContainerObserverBuilder().WithName("Tralala").WithFormula(monitor);

            _totalDrugMassReference = new FormulaUsablePath(new[] { "Applications", "TotalDrugMass" }).WithAlias("TotalDrugMass");
            monitor.AddObjectPath(_totalDrugMassReference);
            _observerBuildingBlock = new ObserverBuildingBlock();
            _observerBuildingBlock.Add(observer);
        }
Esempio n. 6
0
        private IAmountObserverBuilder createFractionObserver(string observerName, IObserverBuildingBlock observerBuildingBlock, Func <IFormula> getFormula)
        {
            var observer = _objectBaseFactory.Create <IAmountObserverBuilder>()
                           .WithName(observerName)
                           .WithDimension(_dimensionRepository.Fraction)
                           .WithFormula(getFormula());

            observer.ContainerCriteria.Add(new MatchAllCondition());

            observerBuildingBlock.Add(observer);
            return(observer);
        }