private void updateReferences(IUsingFormula usingFormula, string moleculeName, string compoundName, Simulation simulation,
                                      IContainer processParameterContainer, InteractionKineticModifications kineticModification)
        {
            if (!_kineticModifications.Is(kineticModification))
            {
                return;
            }

            var formula     = usingFormula.Formula;
            var kiAliasBase = kiAliasFrom(kineticModification);
            var kiParameter = kiParameterFrom(kineticModification);

            doOverAllInteractions(moleculeName, compoundName, simulation, kiAliasBase, (interactionProcess, inhibitorAlias, kiAlias, kwaterAlias) =>
            {
                var inhibitor = interactionProcess.ParentCompound;

                if (formula.FormulaUsablePathBy(inhibitorAlias) == null)
                {
                    formula.AddObjectPath(inhiborConcentrationPath(inhibitor, inhibitorAlias, processParameterContainer));
                }

                if (formula.FormulaUsablePathBy(kwaterAlias) == null)
                {
                    formula.AddObjectPath(kwaterPath(inhibitor, kwaterAlias, processParameterContainer));
                }

                if (formula.FormulaUsablePathBy(kiAlias) == null)
                {
                    formula.AddObjectPath(kiPath(kiParameter, inhibitor, interactionProcess, kiAlias));
                }
            });
        }
 protected InteractionKineticUpdaterSpecificationBase(IObjectPathFactory objectPathFactory, IDimensionRepository dimensionRepository, IInteractionTask interactionTask, InteractionType interactionType,
                                                      string kiNumeratorParameter, string kiDenominatorParameter, string kiNumeratorAlias, string kiDenominatorAlias, string inhibitorAlias)
 {
     _objectPathFactory      = objectPathFactory;
     _dimensionRepository    = dimensionRepository;
     _interactionTask        = interactionTask;
     _interactionType        = interactionType;
     _kineticModifications   = modificationsFrom(interactionType);
     _kiNumeratorParameter   = kiNumeratorParameter;
     _kiDenominatorParameter = kiDenominatorParameter;
     _kiNumeratorAlias       = kiNumeratorAlias;
     _kiDenominatorAlias     = kiDenominatorAlias;
     _inhibitorAlias         = inhibitorAlias;
 }
        private Tuple <string, string> kiInfoFrom(InteractionKineticModifications kineticModification)
        {
            switch (kineticModification)
            {
            case InteractionKineticModifications.KmDenominator:
            case InteractionKineticModifications.KcatDenominator:
                return(new Tuple <string, string>(_kiDenominatorAlias, _kiDenominatorParameter));

            case InteractionKineticModifications.KmNumerator:
            case InteractionKineticModifications.CLSpecDenominator:
                return(new Tuple <string, string>(_kiNumeratorAlias, _kiNumeratorParameter));

            default:
                throw new ArgumentOutOfRangeException("kineticModification");
            }
        }
        private (string kiAlias, string kiParameter) kiInfoFrom(InteractionKineticModifications kineticModification)
        {
            switch (kineticModification)
            {
            case InteractionKineticModifications.KmDenominator:
            case InteractionKineticModifications.KcatDenominator:
                return(_kiDenominatorAlias, _kiDenominatorParameter);

            case InteractionKineticModifications.KmNumerator:
            case InteractionKineticModifications.CLSpecDenominator:
                return(_kiNumeratorAlias, _kiNumeratorParameter);

            default:
                throw new ArgumentOutOfRangeException(nameof(kineticModification));
            }
        }
 public static bool Is(this InteractionKineticModifications modifications, InteractionKineticModifications typeToCompare)
 {
     return((modifications & typeToCompare) != 0);
 }
        private string inhibitionTermsFor(string moleculeName, string compoundName, Simulation simulation, InteractionKineticModifications kineticModification)
        {
            if (!_kineticModifications.Is(kineticModification))
            {
                return(string.Empty);
            }

            var kiAliasBase    = kiAliasFrom(kineticModification);
            var inibitionTerms = new List <string>();

            doOverAllInteractions(moleculeName, compoundName, simulation, kiAliasBase,
                                  (interactionProcess, inhibitorAlias, kiAlias, kwaterAlias) => inibitionTerms.Add($"{kwaterAlias}*{inhibitorAlias}/{kiAlias}"));

            return(inibitionTerms.ToString(" + "));
        }
 private string kiParameterFrom(InteractionKineticModifications kineticModification)
 {
     return(kiInfoFrom(kineticModification).Item2);
 }
 private string kiAliasFrom(InteractionKineticModifications kineticModification)
 {
     return(kiInfoFrom(kineticModification).Item1);
 }