Exemplo n.º 1
0
        private void bStart_Click(object sender, EventArgs e)
        {
            bStart.Enabled = false;
            bStop.Enabled  = true;
            bStart.Refresh();
            bStop.Refresh();
            logWriter = new StreamWriter("simulais_log.txt");
            logWriter.WriteLine(DateTime.Now);

            wsnSimulator = new WsnSimulatorApp();
            wsnSimulator.Initializing       += new EventHandler <ProgressEventArgs>(simulator_OnProgress);
            wsnSimulator.LogEvent           += new EventHandler <LogEventArgs>(simulator_LogEvent);
            wsnSimulator.SimulationFinished += new EventHandler <EventArgs>(simulator_SimulationFinished);
            Scheduler.Dispatching           += new Handler(Scheduler_Dispatching);

            progressFrm = new ProgressFrm();
            progressFrm.Show();
            var blockLen = 3;

            try
            {
                wsnSimulator.InitFromTrace(
                    "../../../NSTraces/Traces-2009-12-23/ntr_ex5.tr",
                    "../../../NSTraces/nm/ex6_nm4.tr",
                    blockLen,
                    1, 1, 1, int.Parse(tbNumOfAPCs.Text), int.Parse(tbNumOfTCells.Text), true);

                // initialize the simulator

                /*wsnSimulator.Init(
                 *      "../../../NSTraces/Traces-2009-12-23/ntr_ex5R.tr",		// self trace path
                 *      "../../../NSTraces/Traces-2009-12-23/ntr_ex6R.tr",		// test trace path
                 *      blockLen,												// block duration
                 *      1, 1, 1, int.Parse(tbNumOfAPCs.Text), int.Parse(tbNumOfTCells.Text), true); */
            }
            catch (Exception ex)
            {
                MessageBox.Show("Simulator initialization failed:\n\n" + ex.Message + "\n\n" + ex.StackTrace,
                                "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                progressFrm.Close();
                bStart.Enabled = true;
                bStop.Enabled  = false;
                return;
            }

            lymphNode   = wsnSimulator.LymphNodes[0];
            localTissue = wsnSimulator.LocalTissues[0];
            progressFrm.Close();
            Refresh();

            // start the simulation
            wsnSimulator.Run();
        }
Exemplo n.º 2
0
        private void Init(List <MolecularPattern> selfPatterns,
                          List <SimulatorInitEvent> initEvents, SimulatorInitArgs args, bool registerLogger)
        {
            // create and start local agents
            // number of local tissue must be equal to the number of NS nodes
            LocalTissues = new List <LocalTissue>(new LocalTissue[args.NumLocals]);
            for (int i = 0; i < args.NumLocals; i++)
            {
                var lt = new LocalTissue();
                LocalTissues[i] = lt;
                lt.Start();
            }

            // create, train and start thymus agents
            Thymuses = new List <Thymus>(new Thymus[args.NumThymuses]);
            for (int i = 0; i < args.NumThymuses; i++)
            {
                var thymus = new Thymus(args.NumTCells, args.PeptideLen);
                thymus.Train(selfPatterns);                             // train the thymus by self patterns
                Thymuses[i] = thymus;
                thymus.Start();
            }

            // create and start bone marrow agents
            BoneMarrows = new List <BoneMarrow <T> >(new BoneMarrow <T> [args.NumBoneMarrows]);
            for (int i = 0; i < args.NumBoneMarrows; i++)
            {
                var bm = new BoneMarrow <T>(args.NumAPCs, OnProcessSpamp, OnProcessSdamp, OnProcessAntigen);
                BoneMarrows[i] = bm;
                bm.Start();
            }

            // create and start lymph node agents
            LymphNodes = new List <LymphNode>(new LymphNode[args.NumLymphNodes]);
            for (int i = 0; i < args.NumLymphNodes; i++)
            {
                var ln = new LymphNode();
                LymphNodes[i] = ln;
                ln.Start();
            }

            if (registerLogger)
            {
                // register logger event
                foreach (var tissue in Tissues)
                {
                    tissue.LogEvent += new EventHandler <LogEventArgs>(OnLog);
                }
            }

            // schedule all initial events
            foreach (var pair in initEvents.Where(e => e.LocalNodeId < LocalTissues.Count))
            {
                if (pair.Signal == null)
                {
                    throw new Exception("Event signal cannot be null.");
                }
                if (pair.LocalNodeId > args.NumLocals)
                {
                    throw new Exception("Event refers to an invalid local node ID. Check number of local nodes and localNodeId of event.");
                }
                Scheduler.Schedule(LocalTissues[pair.LocalNodeId].HandleSignal, pair.Time, pair.Signal);
            }
            Initialized = true;
        }