コード例 #1
0
        /// <summary>
        /// Saves the results of research analyze.
        /// </summary>
        protected void SaveResearch()
        {
            if (result.EnsembleResults.Count == 0 || result.EnsembleResults[0] == null)
            {
                StatusInfo = new ResearchStatusInfo(ResearchStatus.Failed, StatusInfo.CompletedStepsCount + 1);
                return;
            }
            result.ResearchID       = ResearchID;
            result.ResearchName     = ResearchName;
            result.ResearchType     = GetResearchType();
            result.ModelType        = modelType;
            result.RealizationCount = realizationCount;
            result.Size             = result.EnsembleResults[0].NetworkSize;
            result.Edges            = result.EnsembleResults[0].EdgesCount;
            result.Date             = DateTime.Now;

            result.ResearchParameterValues   = ResearchParameterValues;
            result.GenerationParameterValues = GenerationParameterValues;

            Storage.Save(result);
            StatusInfo = new ResearchStatusInfo(ResearchStatus.Completed, StatusInfo.CompletedStepsCount + 1);

            CustomLogger.Write("Research - " + ResearchName + ". Result is SAVED");

            result.Clear();
            CustomLogger.Write("Research - " + ResearchName + ". Result is CLEARED.");
        }
コード例 #2
0
 public override void StopResearch()
 {
     currentManager.Cancel();
     StatusInfo = new ResearchStatusInfo(ResearchStatus.Stopped, StatusInfo.CompletedStepsCount);
     Logger.Write("Research ID - " + ResearchID.ToString() +
                  ". Research - " + ResearchName + ". STOPPED EVOLUTION RESEARCH.");
 }
コード例 #3
0
 /// <summary>
 /// Force stops the research.
 /// </summary>
 public virtual void StopResearch()
 {
     currentManager.Cancel();
     StatusInfo = new ResearchStatusInfo(ResearchStatus.Stopped, StatusInfo.CompletedStepsCount);
     CustomLogger.Write("Research ID - " + ResearchID.ToString() +
                        ". Research - " + ResearchName + ". STOPPED " + GetResearchType() + " RESEARCH.");
 }
コード例 #4
0
        public override void StartResearch()
        {
            ValidateResearchParameters();

            StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0);
            Logger.Write("Research ID - " + ResearchID.ToString() +
                         ". Research - " + ResearchName + ". STARTED COLLECTION RESEARCH.");

            MatrixPath        mp       = ((MatrixPath)ResearchParameterValues[ResearchParameter.InputPath]);
            List <MatrixPath> matrixes = new List <MatrixPath>();

            Debug.Assert((File.GetAttributes(mp.Path) & FileAttributes.Directory) == FileAttributes.Directory);
            foreach (string fn in Directory.GetFiles(mp.Path, "*.txt"))
            {
                MatrixPath m = new MatrixPath();
                m.Path = fn;
                m.Size = mp.Size;
                matrixes.Add(m);
            }

            ResearchType rt = ResearchType.Basic;   // subresearch type is not supported and is always Basic

            subResearches = new List <AbstractResearch>();
            foreach (MatrixPath m in matrixes)
            {
                AbstractResearch r = AbstractResearch.CreateResearchByType(rt);
                r.ResearchName   = ResearchName + "_" + Path.GetFileNameWithoutExtension(m.Path);
                r.GenerationType = GenerationType.Static;
                r.ModelType      = ModelType;

                Debug.Assert(r.GenerationParameterValues.ContainsKey(GenerationParameter.AdjacencyMatrix));
                r.GenerationParameterValues[GenerationParameter.AdjacencyMatrix] = m;

                r.AnalyzeOption = AnalyzeOption;

                string storageString = Storage.StorageString;
                // depracate sql storage

                /*if (Storage.GetStorageType() != StorageType.SQLStorage)
                 * {*/
                storageString += ResearchName;
                if (!Directory.Exists(storageString))
                {
                    Directory.CreateDirectory(storageString);
                }
                //}
                r.Storage = AbstractResultStorage.CreateStorage(Storage.GetStorageType(), storageString);
                r.OnUpdateResearchStatus += method;

                subResearches.Add(r);
            }

            if (subResearches.Count() != 0)
            {
                ++currentResearchIndex;
                subResearches[currentResearchIndex].StartResearch();
            }
        }
コード例 #5
0
        /// <summary>
        /// Creates single EnsembleManagers, runs in background thread.
        /// </summary>
        public override void StartResearch()
        {
            ValidateResearchParameters();

            CreateEnsembleManager();
            StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0);
            Logger.Write("Research ID - " + ResearchID.ToString() +
                         ". Research - " + ResearchName + ". STARTED EVOLUTION RESEARCH.");

            ManagerRunner r = new ManagerRunner(currentManager.Run);

            r.BeginInvoke(new AsyncCallback(RunCompleted), null);
        }
コード例 #6
0
        public override void StopResearch()
        {
            if (subResearches != null)
            {
                foreach (AbstractResearch r in subResearches)
                {
                    r.StopResearch();
                }

                StatusInfo = new ResearchStatusInfo(ResearchStatus.Stopped, StatusInfo.CompletedStepsCount);

                CustomLogger.Write("Research ID - " + ResearchID.ToString() +
                                   ". Research - " + ResearchName + ". STOPPED COLLECTION RESEARCH.");
            }
        }
コード例 #7
0
        /// <summary>
        /// Creates single EnsembleManager, runs in background thread.
        /// </summary>
        public virtual Task StartResearch()
        {
            ValidateResearchParameters();

            CreateEnsembleManager();
            StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0);
            CustomLogger.Write("Research ID - " + ResearchID.ToString() +
                               ". Research - " + ResearchName + ". STARTED " + GetResearchType() + " RESEARCH.");

            return(Task.Run(() =>
            {
                currentManager.Run();
                RunCompleted();
            }));
        }
コード例 #8
0
        private void AbstractResearch_OnUpdateNetworkStatus(Object sender, NetworkEventArgs e)
        {
            switch (e.Status)
            {
            case NetworkStatus.StepCompleted:
                StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, StatusInfo.CompletedStepsCount + 1);
                break;

            case NetworkStatus.Failed:
                StatusInfo = new ResearchStatusInfo(ResearchStatus.Failed, StatusInfo.CompletedStepsCount);
                break;

            default:
                Debug.Assert(false);
                break;
            }
        }
コード例 #9
0
        private void method(Object sender, ResearchEventArgs e)
        {
            ResearchStatus rs = GetSubresearchStatus(e.ResearchID);

            if (rs == ResearchStatus.Completed)
            {
                Interlocked.Increment(ref currentResearchIndex);
                if (currentResearchIndex >= subResearches.Count())
                {
                    StatusInfo = new ResearchStatusInfo(ResearchStatus.Completed, (uint)currentResearchIndex);
                }
                else
                {
                    StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, StatusInfo.CompletedStepsCount + 1);
                    subResearches[currentResearchIndex].StartResearch();
                }
            }
        }
コード例 #10
0
        /// <summary>
        /// Creates multiple EnsembleManagers, running sequentially.
        /// </summary>
        public override void StartResearch()
        {
            ValidateResearchParameters();

            Debug.Assert(GenerationParameterValues.ContainsKey(GenerationParameter.Probability) ||
                         GenerationParameterValues.ContainsKey(GenerationParameter.Mu));
            probabilityParameter = GenerationParameterValues.ContainsKey(GenerationParameter.Probability) ?
                                   GenerationParameter.Probability : GenerationParameter.Mu;

            minProbability     = Double.Parse(GenerationParameterValues[probabilityParameter].ToString(), CultureInfo.InvariantCulture);
            currentProbability = minProbability;
            maxProbability     = Double.Parse(ResearchParameterValues[ResearchParameter.ProbabilityMax].ToString(), CultureInfo.InvariantCulture);
            delta = Double.Parse(ResearchParameterValues[ResearchParameter.ProbabilityDelta].ToString(), CultureInfo.InvariantCulture);

            StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0);
            Logger.Write("Research ID - " + ResearchID.ToString() +
                         ". Research - " + ResearchName + ". STARTED Threshold RESEARCH.");

            StartCurrentEnsemble();
        }
コード例 #11
0
        private void UpdateStatusesInTableAndInPanel(object sender, ResearchEventArgs e)
        {
            Guid id = e.ResearchID;
            ResearchStatusInfo rsi     = SessionManager.GetResearchStatus(id);
            string             status  = rsi.Status.ToString() + " ";
            double             percent = rsi.CompletedStepsCount * 100.0 / SessionManager.GetProcessStepsCount(id);

            status += Math.Round(percent, 1).ToString() + "%";

            DataGridViewRow r = FindRowInTableById(id);

            Debug.Assert(r != null);
            r.Cells["statusColumn"].Value = status;

            if (GetSelectedResearchId() == id)
            {
                statusProgress.Visible = true;
                statusProgress.Maximum = SessionManager.GetProcessStepsCount(id);
                statusProgress.Value   = (int)SessionManager.GetResearchStatus(id).CompletedStepsCount;
            }
        }
コード例 #12
0
        public override Task StartResearch()
        {
            ValidateResearchParameters();

            StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0);
            CustomLogger.Write("Research ID - " + ResearchID.ToString() +
                               ". Research - " + ResearchName + ". STARTED STRUCTURAL RESEARCH.");

            MatrixPath        mp       = ((MatrixPath)ResearchParameterValues[ResearchParameter.InputPath]);
            List <MatrixPath> matrixes = new List <MatrixPath>();

            Debug.Assert((File.GetAttributes(mp.Path) & FileAttributes.Directory) == FileAttributes.Directory);
            Debug.Assert(Directory.GetFiles(mp.Path, "*.txt").Count() == 1);
            MatrixPath m = new MatrixPath();

            m.Path = Directory.GetFiles(mp.Path, "*.txt")[0];
            m.Size = mp.Size;
            matrixes.Add(m);
            NetworkInfoToRead mr = FileManager.Read(m.Path, m.Size);

            // TODO FIX
            Debug.Assert(mr is MatrixInfoToRead);

            string storageString = Storage.StorageString;

            // depraceting sql storage

            /*if (Storage.GetStorageType() != StorageType.SQLStorage)
             * {*/
            storageString += ResearchName;
            if (!Directory.Exists(storageString))
            {
                Directory.CreateDirectory(storageString);
            }
            //}

            foreach (string fn in Directory.GetFiles(mp.Path, "*.sm"))
            {
                int[] s;
                FileManager.ReadSubnetworkMatrix(fn, out s);
                MatrixInfoToWrite tmp = new MatrixInfoToWrite();
                // TODO FIX
                //tmp.Matrix = CreateMatrixForSubgraph((mr as MatrixInfoToRead).Matrix, s);

                // Create temporary .txt files for each matrix
                string tmpFileName = storageString + "\\" + Path.GetFileNameWithoutExtension(fn);
                FileManager.Write(RandNetSettings.TracingDirectory, tmp, tmpFileName);

                MatrixPath sm = new MatrixPath();
                sm.Path = tmpFileName + ".txt";
                matrixes.Add(sm);
            }

            ResearchType rt = ResearchType.Basic;   // subresearch type is not supported and is always Basic

            subResearches = new List <AbstractResearch>();
            foreach (MatrixPath p in matrixes)
            {
                AbstractResearch r = AbstractResearch.CreateResearchByType(rt);
                r.ResearchName   = ResearchName + "_" + Path.GetFileNameWithoutExtension(p.Path);
                r.GenerationType = GenerationType.Static;
                r.ModelType      = ModelType;

                Debug.Assert(r.GenerationParameterValues.ContainsKey(GenerationParameter.AdjacencyMatrix));
                r.GenerationParameterValues[GenerationParameter.AdjacencyMatrix] = p;

                r.AnalyzeOption = AnalyzeOption;

                r.Storage = AbstractResultStorage.CreateStorage(Storage.GetStorageType(), storageString);
                r.OnUpdateResearchStatus += method;

                subResearches.Add(r);
            }

            if (subResearches.Count() != 0)
            {
                ++currentResearchIndex;
                return(subResearches[currentResearchIndex].StartResearch());
            }

            return(Task.Run(() => {}));
        }