public void TestSerialization()
        {
            EventBuilder x1 = CreateObject <EventBuilder>().WithName("Eve.Builder").WithDimension(DimensionLength);

            x1.Formula = CreateObject <ConstantFormula>().WithDimension(DimensionLength).WithValue(23.4);
            x1.OneTime = true;

            IFormula           f1  = CreateObject <ExplicitFormula>().WithDimension(DimensionLength).WithFormulaString("3*Patty");
            IFormulaUsablePath fup = new FormulaUsablePath(new string[] { "Patricia" }).WithAlias("Patty").WithDimension(DimensionLength);

            f1.AddObjectPath(fup);
            IFormula f2 = CreateObject <ConstantFormula>().WithDimension(DimensionLength).WithValue(23.4);

            IParameter p1 = WithExtensions.WithValue <Parameter>(CreateObject <Parameter>().WithName("Patricia").WithFormula(f1), 3.1);
            IParameter p2 = WithExtensions.WithValue <Parameter>(CreateObject <Parameter>().WithName("Pascal").WithFormula(f1), 3.2);

            x1.AddParameter(p1);
            x1.AddParameter(p2);

            IEventAssignmentBuilder eab1 = CreateObject <EventAssignmentBuilder>().WithDimension(DimensionLength).WithFormula(f1).WithName("eab1");
            IEventAssignmentBuilder eab2 = CreateObject <EventAssignmentBuilder>().WithFormula(f2).WithName("eab2");

            x1.AddAssignment(eab1);
            x1.AddAssignment(eab2);

            var x2 = SerializeAndDeserialize(x1);

            AssertForSpecs.AreEqualEventBuilder(x1, x2);
        }
Beispiel #2
0
        public EventAssignmentBuilderDTO MapFrom(IEventAssignmentBuilder eventAssignmentBuilder)
        {
            var dto = Map <EventAssignmentBuilderDTO>(eventAssignmentBuilder);

            dto.ChangedEntityPath = eventAssignmentBuilder.ObjectPath == null ? string.Empty : eventAssignmentBuilder.ObjectPath.PathAsString;
            dto.NewFormula        = _formulaDTOMapper.MapFrom(eventAssignmentBuilder.Formula);
            dto.UseAsValue        = eventAssignmentBuilder.UseAsValue;
            return(dto);
        }
 public SetEventAssignmentObjectPathCommand(IEventAssignmentBuilder assignment, IFormulaUsablePath newObjectPath, IBuildingBlock buildingBlock)
     : base(buildingBlock)
 {
     _assignment    = assignment;
     _assignmentId  = assignment.Id;
     _newObjectPath = newObjectPath;
     _oldObjectPath = _assignment.ObjectPath as IFormulaUsablePath;
     ObjectType     = ObjectTypes.EventAssignmentBuilder;
     CommandType    = AppConstants.Commands.EditCommand;
 }
        public IReadOnlyList <IEventAssignment> MapFrom(IEventAssignmentBuilder assignmentBuilder, IBuildConfiguration buildConfiguration)
        {
            if (!isForAllFloating(assignmentBuilder))
            {
                return new[] { createAssignment(assignmentBuilder, buildConfiguration) }
            }
            ;

            return(buildConfiguration.Molecules.AllFloating()
                   .Select(x => createMoleculeAssignment(x, assignmentBuilder, buildConfiguration))
                   .ToList());
        }
Beispiel #5
0
        public void Visit(IEventAssignmentBuilder eventAssignmentBuilder)
        {
            Visit(eventAssignmentBuilder as IUsingFormula);
            if (!eventAssignmentBuilder.ObjectPath.Contains(_oldName))
            {
                return;
            }

            var oldPath = eventAssignmentBuilder.ObjectPath;
            var newPath = generateNewPath(eventAssignmentBuilder.ObjectPath);

            _changes.Add(eventAssignmentBuilder, _buildingBlock, new EditObjectBasePropertyInBuildingBlockCommand(_eventObjectPathPropertyName, newPath, oldPath, eventAssignmentBuilder, _buildingBlock));
        }
        public void TestSerialization()
        {
            EventAssignmentBuilder x1 = CreateObject <EventAssignmentBuilder>().WithName("Eva.Builder").WithDimension(DimensionLength);

            x1.UseAsValue = true;
            x1.ObjectPath = new ObjectPath(new string[] { "aa", "bb" });
            x1.Dimension  = DimensionLength;
            x1.Formula    = CreateObject <ConstantFormula>().WithDimension(DimensionLength).WithValue(23.4);

            IEventAssignmentBuilder x2 = SerializeAndDeserialize(x1);

            AssertForSpecs.AreEqualEventAssignmentBuilder(x1, x2);
        }
Beispiel #7
0
        public IEventAssignment MapFrom(IEventAssignmentBuilder assignmentBuilder, IBuildConfiguration buildConfiguration)
        {
            var assignment = _objectBaseFactory.Create <IEventAssignment>()
                             .WithName(assignmentBuilder.Name)
                             .WithDimension(assignmentBuilder.Dimension)
                             .WithFormula(_formulaMapper.MapFrom(assignmentBuilder.Formula, buildConfiguration));

            assignment.ObjectPath = assignmentBuilder.ObjectPath.Clone <IObjectPath>();
            assignment.UseAsValue = assignmentBuilder.UseAsValue;

            buildConfiguration.AddBuilderReference(assignment, assignmentBuilder);
            return(assignment);
        }
Beispiel #8
0
        /// <summary>
        ///     Parses a SBML MathML expression from a SBML Event Assignment into a MoBi Formula.
        /// </summary>
        /// <param name="rootNode"> The MathMl Expression of the SBML Event Assignment the assignmentVariable should be assigned with.</param>
        /// <param name="eventAssignmentBuilder"> The MoBi Event Assignment Builder the SBML Event Assigment should be build with. </param>
        /// <param name="assignmentVariable"> The Parameter, Molecule, Species or SpeciesReference that should be assigned when the Event is triggered. </param>
        /// <param name="sbmlProject"></param>
        /// <param name="sbmlInformation"></param>
        public IFormula Parse(ASTNode rootNode, IEventAssignmentBuilder eventAssignmentBuilder, string assignmentVariable,
                              IMoBiProject sbmlProject, SBMLInformation sbmlInformation)
        {
            try
            {
                _sbmlProject     = sbmlProject;
                _sbmlInformation = sbmlInformation;
                _counter++;
                var formulaString = Eval(rootNode);
                if (string.IsNullOrEmpty(formulaString))
                {
                    return(null);
                }

                var formula = _objectBaseFactory.Create <ExplicitFormula>()
                              .WithName(SBMLConstants.SBML_EVENT_ASSIGNMENT + assignmentVariable + _counter)
                              .WithFormulaString(formulaString);
                foreach (var opath in _objectPaths.Where(opath => opath != null))
                {
                    formula.AddObjectPath(opath);
                }

                var path = getObjectPathForAssignment(assignmentVariable);
                if (path != null)
                {
                    eventAssignmentBuilder.ObjectPath = path;
                }

                if (string.IsNullOrEmpty(formula?.FormulaString))
                {
                    createErrorMsg(rootNode);
                    return(null);
                }
                else
                {
                    return(formula);
                }
            }
            finally
            {
                _sbmlProject     = null;
                _sbmlInformation = null;
            }
        }
Beispiel #9
0
        protected override void Context()
        {
            base.Context();
            var eg1  = new EventGroupBuilder().WithName("Events");
            var app1 = new ApplicationBuilder().WithName("App").WithParentContainer(eg1);

            app1.MoleculeName = "Drug";
            var c1 = new Container().WithName("ProtocolSchemaItem").WithParentContainer(app1);

            _e1 = new EventBuilder().WithName("Event").WithParentContainer(app1);
            _eventAssignmentBuilder1            = new EventAssignmentBuilder();
            _eventAssignmentBuilder1.ObjectPath = new ObjectPath("Sim|A|B|C");
            _eventAssignmentBuilder1.Name       = "EAB";
            _eventAssignmentBuilder1.UseAsValue = true;
            _eventAssignmentBuilder1.Formula    = new ExplicitFormula("a+b");
            _e1.AddAssignment(_eventAssignmentBuilder1);
            _explicitFormula1 = new ExplicitFormula("1+2");
            _p1 = new Parameter().WithName("P").WithFormula(_explicitFormula1).WithParentContainer(c1);

            var eg2  = new EventGroupBuilder().WithName("Events");
            var app2 = new ApplicationBuilder().WithName("App").WithParentContainer(eg2);

            app2.MoleculeName = "Drug";
            var c2 = new Container().WithName("ProtocolSchemaItem").WithParentContainer(app2);
            var e2 = new EventBuilder().WithName("Event").WithParentContainer(app2);
            var eventAssignmentBuilder2 = new EventAssignmentBuilder();

            eventAssignmentBuilder2.ObjectPath = new ObjectPath("Sim|A|B|C");
            eventAssignmentBuilder2.Name       = "EAB";
            eventAssignmentBuilder2.UseAsValue = false;
            eventAssignmentBuilder2.Formula    = new ExplicitFormula("a+b");
            e2.AddAssignment(eventAssignmentBuilder2);
            var p2 = new Parameter().WithName("P").WithFormula(new ExplicitFormula("2+1")).WithParentContainer(c2);

            _object1 = eg1;
            _object2 = eg2;
        }
 public override void RestoreExecutionData(IMoBiContext context)
 {
     base.RestoreExecutionData(context);
     _assignment = context.Get <IEventAssignmentBuilder>(_assignmentId);
 }
 protected override void ClearReferences()
 {
     base.ClearReferences();
     _assignment = null;
 }
Beispiel #12
0
 public void AddAssignment(IEventAssignmentBuilder assignment)
 {
     Add(assignment);
 }
 protected override void Context()
 {
     base.Context();
     _root            = new Container().WithName("Root");
     _eventAssignment = new EventAssignmentBuilder().WithName("Container").WithParentContainer(_root);
 }
Beispiel #14
0
 public IEnumerable <IObjectBase> RetrieveFor(IEventAssignmentBuilder eventAssignment)
 {
     return(new IObjectBase[] { eventAssignment.RootContainer });
 }
Beispiel #15
0
 public void RemoveAssignment(IEventAssignmentBuilder assignment)
 {
     RemoveChild(assignment);
 }
 private bool isForAllFloating(IEventAssignmentBuilder assignmentBuilder) =>
 assignmentBuilder.ObjectPath.Contains(ObjectPathKeywords.ALL_FLOATING_MOLECULES);
        private IEventAssignment createMoleculeAssignment(IMoleculeBuilder moleculeBuilder, IEventAssignmentBuilder assignmentBuilder, IBuildConfiguration buildConfiguration)
        {
            //We change the original name to ensure unicity in the container.
            //Assignment are named programatically and not by the user so there should not be any conflict.
            var name       = $"{assignmentBuilder.Name}_{moleculeBuilder.Name}";
            var assignment = createAssignment(assignmentBuilder, buildConfiguration, name);

            assignment.ObjectPath.Replace(ObjectPathKeywords.ALL_FLOATING_MOLECULES, moleculeBuilder.Name);
            return(assignment);
        }