public async void Run() { await Task.Run(delegate { var dtStart = DateTime.Now; _computeService.LoadSubjects(); _computeService.CompareGroups(); _computeService.PermuteGroups(Permutations, new Progress <PermutationProgress>(UpdateProgress)); _computeService.GetResults(); var dtFinish = DateTime.Now; var elap = dtFinish - dtStart; double i = elap.TotalSeconds; }); }
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"); } }