示例#1
0
 public ReactionLinkCommand(SpeciesReference speciesReference, Reaction reaction, LinkType linkType, bool adding)
 {
     this.speciesReference = speciesReference;
     this.reaction = reaction;
     this.linkType = linkType;
     this.adding = adding;
 }
示例#2
0
 public ComponentLinkCommand(SpeciesReference speciesReference, ComponentBase component, int linkNumber, ComponentLinkType linkType, bool adding)
 {
     this.speciesReference = speciesReference;
     this.component = component;
     this.linkNumber = linkNumber;
     this.linkType = linkType;
     this.adding = adding;
 }
示例#3
0
        public void Setup(Experiment experiment, Simulation simulation, string speciesName)
        {
            // ********* INITIAL SETUP

            // Hopf model
            MuCell.Model.SBML.Reader.SBMLReader s = new MuCell.Model.SBML.Reader.SBMLReader("../../UnitTests/smallest.Hopf.xml");

            // Cell definition 1
            MuCell.Model.CellDefinition celldef1 = new MuCell.Model.CellDefinition("celldef1");
            celldef1.addSBMLModel(s.model);

            // Create a NEW model
            MuCell.Model.SBML.Model model = new MuCell.Model.SBML.Model();
            MuCell.Model.SBML.Species species1 = new MuCell.Model.SBML.Species();
            MuCell.Model.SBML.Species species2 = new MuCell.Model.SBML.Species();

            model.listOfSpecies = new List<MuCell.Model.SBML.Species>();
            model.listOfSpecies.Add(species1);
            model.listOfSpecies.Add(species2);

            // Set some values for species1
            species1.ID = speciesName;
            species1.InitialAmount = 4.0d;

            // Set some values for species2
            species2.ID = "Y";
            species2.InitialAmount = 0.1d;

            model.AddId(speciesName, species1);
            model.AddId("Y", species2);

            // Set up the reaction
            MuCell.Model.SBML.Reaction reaction1 = new MuCell.Model.SBML.Reaction("reaction1");

            model.listOfReactions = new List<MuCell.Model.SBML.Reaction>();
            model.listOfReactions.Add(reaction1);

            // Set up the kinetic law
            reaction1.KineticLaw = new MuCell.Model.SBML.KineticLaw(model);
            reaction1.KineticLaw.Formula = speciesName.Replace(' ', '_')+"*2";

            // set up the species reference for the reactants
            MuCell.Model.SBML.SpeciesReference ref1 = new MuCell.Model.SBML.SpeciesReference(species1, 1);
            // set up the species references for the products
            MuCell.Model.SBML.SpeciesReference ref2 = new MuCell.Model.SBML.SpeciesReference(species1, 0.75);
            MuCell.Model.SBML.SpeciesReference ref3 = new MuCell.Model.SBML.SpeciesReference(species2, 2);

            // Add the references
            reaction1.Reactants.Add(ref1);
            reaction1.Products.Add(ref2);
            reaction1.Products.Add(ref3);

            // set up the cell definition
            MuCell.Model.CellDefinition celldef2 = new MuCell.Model.CellDefinition("celldef2");
            celldef2.addSBMLModel(model);

            // instantiat the environment
            MuCell.Model.Vector3 size = new MuCell.Model.Vector3(1, 1, 1);
            MuCell.Model.Environment environment = new MuCell.Model.Environment(size);

            // Cells
            List<MuCell.Model.CellInstance> cells = new List<MuCell.Model.CellInstance>();

            // Create 10 cells of celldef1 and 20 cells of celldef2
            for(int i=0;i<10;i++){
                int a = ((i+2)%3)+1;
                int b = (i%3)+1;
                int c = ((i+1)%3)+1;
                CellInstance cell11 = celldef1.createCell();
                cells.Add(cell11);
                environment.AddCellToGroup(a, cell11);

                CellInstance cell21 = celldef2.createCell();
                CellInstance cell22 = celldef2.createCell();
                cells.Add(cell21);
                cells.Add(cell22);
                environment.AddCellToGroup(b, cell21);
                environment.AddCellToGroup(c, cell22);
            }

            // StateSnapshot for intial state
            MuCell.Model.StateSnapshot initialState = new MuCell.Model.StateSnapshot(cells);
            initialState.SimulationEnvironment = environment;

            // Parameters
            MuCell.Model.SimulationParameters parameters = new MuCell.Model.SimulationParameters();
            parameters.InitialState = initialState;
            parameters.SimulationLength = 0.01001d;
            parameters.SnapshotInterval = 1;
            parameters.StepTime = 0.01001d;

            parameters.SolverMethod = MuCell.Model.Solver.SolverMethods.RungeKutta;

            // Simulation
            simulation.Parameters = parameters;

            // Experiment
            experiment.addCellDefinition(celldef1);
            experiment.addCellDefinition(celldef2);
            experiment.addSimulation(simulation);

            // Start simulation
            simulation.StartSimulation();

            this.models = new List<MuCell.Model.SBML.Model>();
            this.models.Add(s.model);
            this.models.Add(model);
        }
示例#4
0
文件: Reader.cs 项目: dorchard/mucell
        public void SpeciesReferenceElement(Hashtable attrs)
        {
            String speciesId;
            Species species;

            try
            {
                speciesId = (String)attrs["species"];
                species = (Species)this.model.findObject(speciesId);

                // find out if it is a list of reactants or products
                if (((String)elementStack.Pop()) == "listOfReactants")
                {
                    SpeciesReference speciesRef;
                    List<SpeciesReference> reactantsList = (List<SpeciesReference>)elementStack.Peek();

                    if (attrs.ContainsKey("stoichiometry"))
                    {
                        speciesRef = new SpeciesReference(species,
                            (double)(double.Parse((String)attrs["stoichiometry"])));
                    }
                    else
                    {
                        speciesRef = new SpeciesReference(species);
                    }

                    reactantsList.Add(speciesRef);
                    elementStack.Push("listOfReactants");
                }

                else
                // list of products instead
                {
                    SpeciesReference speciesRef;
                    List<SpeciesReference> productsList = (List<SpeciesReference>)elementStack.Peek();

                    if (attrs.ContainsKey("stoichiometry"))
                    {
                        speciesRef = new SpeciesReference(species,
                            (double)(double.Parse((String)attrs["stoichiometry"])));
                    }
                    else
                    {
                        speciesRef = new SpeciesReference(species);
                    }

                    productsList.Add(speciesRef);
                    elementStack.Push("listOfProducts");
                }

            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine("speciesReference element missing required attribute 'species'");
                throw (e);
            }
        }