Esempio n. 1
0
 private static void CreateSpeciesInfoAndSpecies(string speciesName, int initialPopulation, out SpeciesDescription description, out Species species)
 {
     description = new SpeciesDescription(speciesName, initialPopulation);
     //species = new Species(description) { Count = description.InitialValue };
     species = new Species(description, new Dictionary <string, IValue>());
     species.Reset();
 }
Esempio n. 2
0
        public void TestSpeciesMPCount()
        {
            //Parameters in order to create a SpeciesMP
            SpeciesDescription info1;
            string             speciesName = "species1";
            int initialPopulation          = 10;

            //Species Info Object
            info1 = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test get
            Assert.AreEqual(initialPopulation, species.Count);

            //Test set
            species.Count = 20;
            Assert.AreEqual(20, species.Count);
            Assert.AreEqual((double)20, species.Value);

            //Test fractional value of species.
            species.Value = 30.2;
            Assert.AreEqual((int)30.2, species.Count);

            //Test get through Update.
            species.Update(30.0);
            Assert.AreEqual(30, species.Count);
        }
Esempio n. 3
0
        public void TestSpeciesMPValue()
        {
            //Parameters in order to create a SpeciesMP
            SpeciesDescription info1;
            string             speciesName = "species1";
            int initialPopulation          = 10;

            //Species Info Object
            info1 = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test get
            Assert.AreEqual((double)initialPopulation, species.Value);

            //Test set
            species.Value = 20.0;
            Assert.AreEqual(20.0, species.Value);
            species.Value = 21.5;
            Assert.AreEqual(21.5, species.Value);

            //Test set via Update
            species.Update(30.0);
            Assert.AreEqual(30.0, species.Value);
        }
Esempio n. 4
0
        public void ReactionIsLocalTest()
        {
            var          builder  = new ReactionInfo.ReactionBuilder();
            ReactionInfo reaction = builder.Reaction;

            var reactantA = new SpeciesDescription("reactantA", new LocaleInfo("locale1"));

            var productA = new SpeciesDescription("productA", reactantA.Locale);

            builder.AddReactant(reactantA);
            builder.AddProduct(productA);

            Console.WriteLine("Checking for reaction.IsLocal with reactants and products in same locale...");
            Expect(reaction.IsLocal);
            Expect(!reaction.IsDiffusion);

            builder  = new ReactionInfo.ReactionBuilder();
            reaction = builder.Reaction;

            var productB = new SpeciesDescription("productB", new LocaleInfo("locale2"));

            builder.AddReactant(reactantA);
            builder.AddProduct(productB);

            Console.WriteLine("Checking for !reaction.IsLocal with reactants and products from different locales...");
            Expect(!reaction.IsLocal);
            Expect(reaction.IsDiffusion);

            Console.WriteLine("");
        }
        public void ProcessSpeciesTestOneSpecies()
        {
            ModelInfo.ModelBuilder modelInfoEx = new ModelInfo.ModelBuilder("model");
            var species = new SpeciesDescription("testSpecies", 10);

            modelInfoEx.AddSpecies(species);
            ModelInfo      modelInfo            = modelInfoEx.Model;
            Model          model                = new Model(modelInfo);
            MpModelBuilder modelbuilder         = new MpModelBuilder();
            MethodInfo     processSpeciesMethod = ReflectionUtility.GetHiddenMethod("ProcessSpecies", modelbuilder);
            IDictionary <string, IValue>              nmap;
            IDictionary <string, IBoolean>            bmap;
            IDictionary <string, IUpdateable>         umap;
            IDictionary <SpeciesDescription, Species> speciesMap = InitializeMaps(out nmap, out bmap, out umap);

            var newSpecies = new SpeciesMP(species, nmap);

            //Inputs to invoke hidden method ProcessSpecies (needs to be an array of objects)
            var inputArray1 = new object[2];

            inputArray1[0] = model;
            inputArray1[1] = modelInfo;

            //Test to make sure that the model has local variables that are null

            var compareSpeciesMap = ReflectionUtility.GetHiddenField <IDictionary <SpeciesDescription, Species> >("_speciesMap", modelbuilder);
            var compareNmap       = ReflectionUtility.GetHiddenField <IDictionary <string, IValue> >("_nmap", modelbuilder);
            var compareBmap       = ReflectionUtility.GetHiddenField <IDictionary <string, IBoolean> >("_bmap", modelbuilder);
            var compareUMap       = ReflectionUtility.GetHiddenField <IDictionary <string, IUpdateable> >("_umap", modelbuilder);

            Assert.AreEqual(speciesMap, compareSpeciesMap);
            Assert.AreEqual(nmap, compareNmap);
            Assert.AreEqual(bmap, compareBmap);
            Assert.AreEqual(umap, compareUMap);

            processSpeciesMethod.Invoke(modelbuilder, inputArray1);

            //Begin Assertions about the species that was added to the model
            Assert.AreEqual("testSpecies", model.Species[0].Name);
            Assert.AreEqual(species, model.Species[0].Description);
            Assert.AreEqual(1, model.Species.Count);

            //Assert tests about size.

            compareSpeciesMap = ReflectionUtility.GetHiddenField <IDictionary <SpeciesDescription, Species> >("_speciesMap", modelbuilder);
            compareNmap       = ReflectionUtility.GetHiddenField <IDictionary <string, IValue> >("_nmap", modelbuilder);
            compareUMap       = ReflectionUtility.GetHiddenField <IDictionary <string, IUpdateable> >("_umap", modelbuilder);

            Assert.AreEqual(1, compareSpeciesMap.Count);
            Assert.AreEqual(1, compareNmap.Count);
            Assert.AreEqual(1, compareUMap.Count);

            //Assert tests about what was actually added to the dictionary.

            var testSpecies = (SpeciesMP)compareNmap["testSpecies"];

            Assert.AreEqual(testSpecies.Description, newSpecies.Description);
            Assert.AreEqual(testSpecies.Locale, newSpecies.Locale);
            Assert.AreEqual(testSpecies.Name, newSpecies.Name);
        }
Esempio n. 6
0
        public void MixedLocaleproductTest()
        {
            var builder = new ReactionInfo.ReactionBuilder();

            var species1 = new SpeciesDescription("A-Species", new LocaleInfo("compartment-A"));

            builder.AddProduct(species1);

            Console.WriteLine("Checking for ArgumentException() with products from difference locales...");
            Console.WriteLine("");

            var species2 = new SpeciesDescription("B-Species", new LocaleInfo("compartment-B"));

            builder.AddProduct(species2);
        }
Esempio n. 7
0
        public void SpeciesInfoTest()
        {
            const string nameOne     = "NameOnly";
            var          speciesName = new SpeciesDescription(nameOne);

            Console.Write("Created species: ");
            Console.WriteLine(speciesName);
            Console.WriteLine("SpeciesInfoTest: testing named species Name property...");
            Expect(speciesName.Name == nameOne);
            Console.WriteLine("SpeciesInfoTest: testing named species Locale property...");
            Expect(speciesName.Locale == null);

            const string nameTwo        = "NameAndPop";
            const int    initialPopOne  = 2012;
            var          speciesNamePop = new SpeciesDescription(nameTwo, initialPopOne);

            Console.Write("Created species: ");
            Console.WriteLine(speciesNamePop);
            Console.WriteLine("SpeciesInfoTest: testing name+pop species Name property...");
            Expect(speciesNamePop.Name == nameTwo);
            Console.WriteLine("SpeciesInfoTest: testing name+pop species Locale property...");
            Expect(speciesNamePop.Locale == null);

            const string nameThree         = "NameAndLocale";
            const string localeOneName     = "univ";
            var          localeOne         = new LocaleInfo(localeOneName);
            var          speciesNameLocale = new SpeciesDescription(nameThree, localeOne);

            Console.Write("Created species: ");
            Console.WriteLine(speciesNameLocale);
            Console.WriteLine("SpeciesInfoTest: testing name+locale species Name property...");
            Expect(speciesNameLocale.Name == nameThree);
            Console.WriteLine("SpeciesInfoTest: testing name+locale species Locale property...");
            Expect(speciesNameLocale.Locale == localeOne);

            const string nameFour             = "NamePopAndLocale";
            const int    initialPopTwo        = 2112;
            const string localeTwoName        = "bellevue";
            var          localeTwo            = new LocaleInfo(localeTwoName);
            var          speciesNamePopLocale = new SpeciesDescription(nameFour, initialPopTwo, localeTwo);

            Console.Write("Created species: ");
            Console.WriteLine(speciesNamePopLocale);
            Console.WriteLine("SpeciesInfoTest: testing name+pop+locale species Name property...");
            Expect(speciesNamePopLocale.Name == nameFour);
            Console.WriteLine("SpeciesInfoTest: testing name+pop+locale species Locale property...");
            Expect(speciesNamePopLocale.Locale == localeTwo);
        }
Esempio n. 8
0
        public void TestSpeciesMPConstructorWithDefaults()
        {
            //Parameters in order to create a SpeciesMP
            const string speciesName       = "species1";
            const int    initialPopulation = 10;

            //Species Info and Species Object
            var info1   = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test Constructor
            Assert.AreEqual(initialPopulation, species.Count);
            Assert.AreEqual(initialPopulation, (int)species.Value);
        }
Esempio n. 9
0
        public void ReactionInfoTest()
        {
            // Add a reactant, reactant shows up in Reactants list
            var          builder  = new ReactionInfo.ReactionBuilder();
            ReactionInfo reaction = builder.Reaction;

            var reactant = new SpeciesDescription("reactant", 2012);

            builder.AddReactant(reactant);

            Console.WriteLine("Checking for reactant added to reaction with ReactionBuilder...");
            Expect(reaction.Reactants.First() == reactant);

            // Add a product, product shows up in Products list
            var product = new SpeciesDescription("product", 2112);

            builder.AddProduct(product);

            Console.WriteLine("Checking for product added to reaction with ReactionBuilder...");
            Expect(reaction.Products.First() == product);

            // Set rate, reaction rate is set.
            var expression = new NumericExpressionTree(string.Empty,
                                                       new MultiplyOperator(new SymbolReference("reactant"),
                                                                            new SymbolReference("product")));

            builder.SetRate(expression);

            Console.WriteLine("Checking for reaction rate set from ReactionBuilder...");
            Expect(reaction.RateExpression == expression);

            Console.WriteLine("Checking !reaction.HasDelay (before calling builder.SetDelay())...");
            Expect(!reaction.HasDelay);

            var delay = new NumericExpressionTree(string.Empty, new Constant(3.14159265f));

            builder.SetDelay(delay);

            Console.WriteLine("Checking reaction.HasDelay (after calling builder.SetDelay())...");
            Expect(reaction.HasDelay);
            Console.WriteLine("Checking reaction for correct delay...");
            Expect(reaction.DelayExpression == delay);

            Console.WriteLine("");
        }
Esempio n. 10
0
        public void TestSpeciesMPDecrement()
        {
            //Parameters in order to create a SpeciesMP
            SpeciesDescription info1;
            string             speciesName = "species1";
            int initialPopulation          = 20;

            //Species Info Object
            info1 = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test Increment
            Assert.AreEqual(initialPopulation, species.Count);

            int    returnCount;
            double returnValue;
            int    deltaInt    = 5;
            double deltaDouble = 5.0;

            returnCount = species.Decrement();
            Assert.AreEqual(initialPopulation - 1, species.Count);
            Assert.AreEqual(initialPopulation - 1, returnCount);

            returnCount = ((Species)species).Decrement(deltaInt);
            Assert.AreEqual(initialPopulation - 6, species.Count);
            Assert.AreEqual(initialPopulation - 6, returnCount);

            returnValue = species.Decrement(deltaDouble);
            Assert.AreEqual(initialPopulation - 11, species.Value);
            Assert.AreEqual(initialPopulation - 11, returnValue);

            deltaInt    = -5;
            deltaDouble = -5.0;

            returnCount = ((Species)species).Decrement(deltaInt);
            Assert.AreEqual(initialPopulation - 6, species.Count);
            Assert.AreEqual(initialPopulation - 6, returnCount);

            returnValue = species.Decrement(deltaDouble);
            Assert.AreEqual(initialPopulation - 1, species.Value);
            Assert.AreEqual(initialPopulation - 1, returnValue);
        }
Esempio n. 11
0
        private static Reaction CreateReaction(SpeciesDescription info1, Species reactant1, SpeciesDescription info2, Species reactant2, SpeciesDescription info3, Species product1, double rate)
        {
            var builder = new ReactionInfo.ReactionBuilder("theReaction");

            builder.AddReactant(info1);
            builder.AddReactant(info2);
            builder.AddProduct(info3);
            builder.SetRate(new NumericExpressionTree(new Constant(rate)));

            var reactionInfo = builder.Reaction;
            var speciesMap   = new Dictionary <SpeciesDescription, Species>(3)
            {
                { info1, reactant1 }, { info2, reactant2 }, { info3, product1 }
            };
            var symbolMap = new Dictionary <string, IValue>();
            var reaction  = new Reaction(reactionInfo, speciesMap, symbolMap);

            return(reaction);
        }
Esempio n. 12
0
        public void TestSpeciesMPUpdate()
        {
            //Parameters in order to create a SpeciesMP
            SpeciesDescription info1;
            string             speciesName = "species1";
            int initialPopulation          = 10;

            //Species Info Object
            info1 = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test Update
            species.Update(30.0f);
            Assert.AreEqual(30.0f, species.Value);

            species.Update(0.0f);
            Assert.AreEqual(0.0f, species.Value);

            species.Update(-30.0f);
            Assert.AreEqual(-30.0f, species.Value);
        }
Esempio n. 13
0
 public SpeciesMP(SpeciesDescription speciesDescription, IDictionary <string, IValue> map)
     : base(speciesDescription, map)
 {
 }
Esempio n. 14
0
 public Species(SpeciesDescription speciesDescription, IDictionary <string, IValue> map)
 {
     Description        = speciesDescription;
     _initialPopulation = speciesDescription.InitialPopulation.ResolveReferences(map);
 }
Esempio n. 15
0
        public void ModelInfoTest()
        {
            const string modelName = "test model";
            var          builder   = new ModelInfo.ModelBuilder(modelName);

            const string constraintName          = "test constraint";
            const string constraintPredicateName = "constraint predicate";
            var          constraintExpression    = new EqualToOperator(Two, Two);
            var          constraintPredicate     = new BooleanExpressionTree(constraintPredicateName, constraintExpression);
            var          constraint = new ConstraintInfo(constraintName, constraintPredicate);

            builder.AddConstraint(constraint);

/*
 *          const string eventName = "test event";
 *          const string eventPredicateName = "event predicate";
 *          var eventExpression = new GreaterThanOperator(Three, Two);
 *          var eventPredicate = new BooleanExpressionTree(eventPredicateName, eventExpression);
 *          int eventCount = 0;
 *          var testEvent = new EventInfo(eventName, eventPredicate, () => { eventCount++; });
 *          builder.AddEvent(testEvent);
 */

            const string expressionName = "test expression";
            var          expression     = new AddOperator(Three, Two);
            var          expressionTree = new NumericExpressionTree(expressionName, expression);

            builder.AddExpression(expressionTree);

            const string localeName = "test locale";
            var          locale     = new LocaleInfo(localeName);

            builder.AddLocale(locale);

            const string observableName           = "test observable";
            const string observableExpressionName = "observable expression";
            var          rootOperator             = new PowerOperator(Two, Three);
            var          observableExpressionTree = new NumericExpressionTree(observableExpressionName, rootOperator);
            var          observable = new ObservableInfo(observableName, observableExpressionTree);

            builder.AddObservable(observable);

            const string parameterName = "test parameter";
            var          parameter     = new ParameterInfo(parameterName, 3.14159265f);

            builder.AddParameter(parameter);

            const string predicateName       = "test predicate";
            var          predicateExpression = new LessThanOperator(Two, Three);
            var          predicate           = new BooleanExpressionTree(predicateName, predicateExpression);

            builder.AddPredicate(predicate);

            const string speciesName = "reactant";
            var          reactant    = new SpeciesDescription(speciesName, 2012, locale);

            builder.AddSpecies(reactant);

            const string reactionName = "test reaction";
            var          rBuilder     = new ReactionInfo.ReactionBuilder(reactionName);

            rBuilder.AddReactant(reactant);
            var rateExpression = new MultiplyOperator(Ten, new SymbolReference(speciesName));
            var reactionRate   = new NumericExpressionTree(null, rateExpression);

            rBuilder.SetRate(reactionRate);
            var reaction = rBuilder.Reaction;

            builder.AddReaction(reaction);

            var modelInfo = builder.Model;

            Console.WriteLine("ModelInfoTests: checking model name...");
            Expect(modelInfo.Name == modelName);
            Console.WriteLine("ModelInfoTests: checking constraint count (1)...");
            Expect(modelInfo.Constraints.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking constraint...");
            Expect(modelInfo.Constraints.First() == constraint);

/*
 *          Console.WriteLine("ModelInfoTests: checking event count (1)...");
 *          Expect(modelInfo.Events.Count() == 1);
 *          Console.WriteLine("ModelInfoTests: checking event...");
 *          Expect(modelInfo.Events.First() == testEvent);
 */
            Console.WriteLine("ModelInfoTests: checking expression count (3)...");
            Expect(modelInfo.Expressions.Count() == 3);
            Console.WriteLine("ModelInfoTests: checking expressions...");
            var expressions = modelInfo.Expressions.Where(net => net.Name == expressionName).ToList();

            Expect(expressions.Count == 1);
            Expect(expressions[0] == expressionTree);
            Console.WriteLine("ModelInfoTests: checking locale count (1)...");
            Expect(modelInfo.Locales.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking locale...");
            Expect(modelInfo.Locales.First() == locale);
            Console.WriteLine("ModelInfoTests: checking observable count (1)...");
            Expect(modelInfo.Observables.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking observable...");
            Expect(modelInfo.Observables.First() == observable);
            Console.WriteLine("ModelInfoTests: checking parameter count (1)...");
            Expect(modelInfo.Parameters.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking parameter...");
            Expect(modelInfo.Parameters.First() == parameter);

/*
 *          Console.WriteLine("ModelInfoTests: checking predicate count (3)...");
 *          Expect(modelInfo.Predicates.Count() == 3);
 */
            Console.WriteLine("ModelInfoTests: checking predicate count (2)...");
            Expect(modelInfo.Predicates.Count() == 2);
            Console.WriteLine("ModelInfoTests: checking predicate...");
            var predicates = modelInfo.Predicates.Where(pi => pi.Name == predicateName).ToList();

            Expect(predicates.Count == 1);
            Expect(predicates[0] == predicate);
            Console.WriteLine("ModelInfoTests: checking reaction count (1)...");
            Expect(modelInfo.Reactions.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking reaction...");
            Expect(modelInfo.Reactions.First() == reaction);
            Console.WriteLine("ModelInfoTests: checking species count (1)...");
            Expect(modelInfo.Species.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking species...");
            Expect(modelInfo.Species.First() == reactant);
        }
Esempio n. 16
0
 private static void CreateSpeciesInfoAndSpecies(string speciesName, int initialPopulation, out SpeciesDescription info, out SpeciesMP species)
 {
     info    = new SpeciesDescription(speciesName, initialPopulation);
     species = new SpeciesMP(info, new Dictionary <string, IValue>());
     species.Reset();
 }