public void LoadRegions()
        {
            Regions.Clear();

            try
            {
                _regionService.Load(RegionFile);

                _rvms = new List <RegionalViewModel>();

                var regions = _regionService.GetRegionsByIndex();
                foreach (var region in regions)
                {
                    var rgn = IoC.Get <RegionViewModel>();
                    rgn.Region = region;

                    Regions.Add(rgn);

                    RegionalViewModel rvm = new RegionalViewModel
                    {
                        ROI = region,
                    };

                    _rvms.Add(rvm);
                }

                AXPlotModel = LoadPlotModel(_rvms, r => r.X, r => r.Y);
                SGPlotModel = LoadPlotModel(_rvms, r => (100 - r.Y), r => r.Z);
                CRPlotModel = LoadPlotModel(_rvms, r => r.X, r => r.Z);
            }
            catch (Exception)
            {
            }
        }
        public void Handle(NBSResultsAvailable message)
        {
            var overlap = _computeService.GetResults();
            var regions = _regionService.GetRegionsByIndex();

            var rvms = new List <RegionalViewModel>();

            foreach (var region in regions)
            {
                RegionalViewModel rvm = new RegionalViewModel
                {
                    ROI = region,
                };

                rvms.Add(rvm);
            }

            if (DataType != "overlap")
            {
                var cmps = overlap.Components[DataType];
                if (cmps != null)
                {
                    int            cmpSize = 0;
                    GraphComponent cmp     = null;
                    for (var i = 0; i < cmps.Count; i++)
                    {
                        if (cmps[i].Edges.Count > cmpSize)
                        {
                            cmp     = cmps[i];
                            cmpSize = cmp.Edges.Count;

                            cmp.DataType = DataType;
                        }
                    }

                    if (cmp != null)
                    {
                        Dictionary <int, Vertex> interModalVerts = new Dictionary <int, Vertex>();
                        foreach (var vtx in overlap.Vertices)
                        {
                            interModalVerts[vtx.Id] = vtx;
                        }

                        Dictionary <int, int> cmpVerts = new Dictionary <int, int>();

                        foreach (var edge in cmp.Edges)
                        {
                            var v1 = rvms[edge.V1];
                            var v2 = rvms[edge.V2];

                            cmpVerts[edge.V1] = edge.V1;
                            cmpVerts[edge.V2] = edge.V2;

                            double diff = edge.M1 - edge.M2;
                            double pval = ((double)edge.RightTailCount) / ((double)overlap.Permutations);

                            CmpEdges.Add(new EdgeResult {
                                V1 = v1.ROI.Name, V2 = v2.ROI.Name, Diff = diff, PVal = pval
                            });
                        }

                        AXPlotModel = LoadGraph(rvms, cmpVerts, cmp.Edges, r => r.X, r => r.Y);
                        SGPlotModel = LoadGraph(rvms, cmpVerts, cmp.Edges, r => (100 - r.Y), r => r.Z);
                        CRPlotModel = LoadGraph(rvms, cmpVerts, cmp.Edges, r => r.X, r => r.Z);

                        CmpPValue = "p" + (((double)cmp.RightTailExtentCount) / ((double)overlap.Permutations)).ToString("0.0000");

                        var itms = from v in cmpVerts.Values orderby v select v;
                        foreach (var vert in itms)
                        {
                            if (!interModalVerts.ContainsKey(vert))
                            {
                                CmpNodes.Add(new NodeResult()
                                {
                                    Name = rvms[vert].ROI.Name, Id = rvms[vert].ROI.Index
                                });
                            }
                        }
                    }
                }
            }
            else
            {
                Dictionary <int, int> cmpVerts = new Dictionary <int, int>();

                var nodes = from v in overlap.Vertices orderby v.Id select v;
                foreach (var node in nodes)
                {
                    cmpVerts[node.Id] = node.Id;
                    CmpNodes.Add(new NodeResult()
                    {
                        Name = rvms[node.Id].ROI.Name, Id = rvms[node.Id].ROI.Index, Count = node.RandomOverlapCount.ToString()
                    });
                }

                AXPlotModel = LoadGraph(rvms, cmpVerts, null, r => r.X, r => r.Y);
                SGPlotModel = LoadGraph(rvms, cmpVerts, null, r => (100 - r.Y), r => r.Z);
                CRPlotModel = LoadGraph(rvms, cmpVerts, null, r => r.X, r => r.Z);

                CmpPValue = "p" + (((double)overlap.RightTailOverlapCount) / ((double)overlap.Permutations)).ToString("0.0000");
            }
        }
		public void LoadRegions()
		{
			Regions.Clear();

			try
			{
				_regionService.Load(RegionFile);

				_rvms = new List<RegionalViewModel>();

				var regions = _regionService.GetRegionsByIndex();
				foreach (var region in regions)
				{
					var rgn = IoC.Get<RegionViewModel>();
					rgn.Region = region;

					Regions.Add(rgn);

					RegionalViewModel rvm = new RegionalViewModel
					{
						ROI = region,
					};

					_rvms.Add(rvm);
				}

				AXPlotModel = LoadPlotModel(_rvms, r => r.X, r => r.Y);
				SGPlotModel = LoadPlotModel(_rvms, r => (100 - r.Y), r => r.Z);
				CRPlotModel = LoadPlotModel(_rvms, r => r.X, r => r.Z);
			}
			catch (Exception)
			{
			}
		}