public override ResearchResult Load(Guid researchID) { ResearchResult r = null; string fileNameToLoad = null; if (existingFileNames != null && existingFileNames.Keys.Contains(researchID)) fileNameToLoad = existingFileNames[researchID]; else fileNameToLoad = FileNameByGuid(researchID); if (fileNameToLoad != null) { r = new ResearchResult(); using (reader = XmlReader.Create(fileNameToLoad)) { try { while (reader.Read() && (reader.NodeType != XmlNodeType.Element || reader.Name == "Research")) { } LoadResearchInfo(r); LoadResearchParameters(r); LoadGenerationParameters(r); LoadEnsembleResults(r); } catch (SystemException ex) { Console.WriteLine(ex.Data); } } } return r; }
private bool Check(AnalyzeOption o, RealizationResult rn, ResearchResult rr) { Debug.Assert(rn.Result.ContainsKey(o)); Debug.Assert(rn.Result[o] != null); Debug.Assert(rr.EnsembleResults.Count() > 0); if (!rr.EnsembleResults[0].Result.ContainsKey(o)) return true; Debug.Assert(rr.EnsembleResults[0].Result[o] != null); AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])o.GetType().GetField(o.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false); OptionType ot = info[0].OptionType; switch (ot) { case OptionType.Global: Double v1 = Convert.ToDouble(rn.Result[o]); Double v2 = Convert.ToDouble(rr.EnsembleResults[0].Result[o]); return Math.Round(v1, 4) == v2; case OptionType.Distribution: case OptionType.Trajectory: Debug.Assert(rn.Result[o] is SortedDictionary<Double, Double>); Debug.Assert(rr.EnsembleResults[0].Result[o] is SortedDictionary<Double, Double>); SortedDictionary<Double, Double> d1 = rn.Result[o] as SortedDictionary<Double, Double>; SortedDictionary<Double, Double> d2 = rr.EnsembleResults[0].Result[o] as SortedDictionary<Double, Double>; return CheckDictionary(d1, d2); default: Debug.Assert(false); break; } return true; }
public override void Save(ResearchResult result) { if (!Directory.Exists(storageStr)) { Directory.CreateDirectory(storageStr); } string fileName = storageStr + result.ResearchName; if (File.Exists(fileName + ".xls") || File.Exists(fileName + ".xlsx")) fileName += result.ResearchID; document = SpreadsheetDocument.Create(fileName + ".xlsx", SpreadsheetDocumentType.Workbook); workbook = document.AddWorkbookPart(); workbook.Workbook = new Workbook(); // Add a WorksheetPart to the WorkbookPart. WorksheetPart worksheetPart = workbook.AddNewPart<WorksheetPart>(); worksheetPart.Worksheet = new Worksheet(new SheetData()); // Add Sheets to the Workbook. Sheets sheets = document.WorkbookPart.Workbook. AppendChild<Sheets>(new Sheets()); // Append a new worksheet and associate it with the workbook. Sheet sheet = new Sheet() { Id = document.WorkbookPart. GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" }; sheets.Append(sheet); /*SaveResearchInfo(result.ResearchID, result.ResearchName, result.ResearchType, result.ModelType, result.RealizationCount, result.Size, result.Edges); SaveResearchParameters(result.ResearchParameterValues); SaveGenerationParameters(result.GenerationParameterValues); for (int i = 0; i < result.EnsembleResults.Count; ++i) { SaveEnsembleResult(result.EnsembleResults[i], i); }*/ workbook.Workbook.Save(); document.Close(); }
private void LoadResearchInfo(Worksheet sheet, ResearchResult r) { r.ResearchID = new Guid((string)sheet.get_Range("B2").Cells.Value); r.ResearchName = sheet.get_Range("B3").Cells.Value; r.ResearchType = (ResearchType)Enum.Parse(typeof(ResearchType), (string)sheet.get_Range("B4").Cells.Value); r.ModelType = (ModelType)Enum.Parse(typeof(ModelType), (string)sheet.get_Range("B5").Cells.Value); r.RealizationCount = (Int32)sheet.get_Range("B6").Cells.Value; r.Date = sheet.get_Range("B7").Cells.Value; r.Size = (UInt32)sheet.get_Range("B8").Cells.Value; r.Edges = sheet.get_Range("B9").Cells.Value; }
private void LoadResearchAndGenerationParameters(Worksheet sheet, ResearchResult r) { int rowIndex = 12; string currentParameter = sheet.get_Range("A" + rowIndex).Cells.Value; if ("Research Parameters" == sheet.get_Range("A11").Cells.Value) { while (currentParameter != null) { ResearchParameter rp = (ResearchParameter)Enum.Parse(typeof(ResearchParameter), currentParameter); r.ResearchParameterValues.Add(rp, sheet.get_Range("B" + rowIndex).Cells.Value); ++rowIndex; currentParameter = sheet.get_Range("A" + rowIndex).Cells.Value; } rowIndex += 2; currentParameter = sheet.get_Range("A" + rowIndex).Cells.Value; } while (currentParameter != null) { GenerationParameter gp = (GenerationParameter)Enum.Parse(typeof(GenerationParameter), currentParameter); r.GenerationParameterValues.Add(gp, sheet.get_Range("B" + rowIndex).Cells.Value); ++rowIndex; currentParameter = sheet.get_Range("A" + rowIndex).Cells.Value; } }
private void LoadEnsembleResults(Workbook book, ResearchResult r) { EnsembleResult e = new EnsembleResult(); e.NetworkSize = r.Size; e.EdgesCount = r.Edges; e.Result = new Dictionary<AnalyzeOption, Object>(); Array existingOptions = Enum.GetValues(typeof(AnalyzeOption)); foreach (AnalyzeOption opt in existingOptions) { AnalyzeOptionInfo optInfo = (AnalyzeOptionInfo)(opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false)[0]); switch (optInfo.OptionType) { case OptionType.Global: Double v = FindValueInGlobals(book, optInfo.FullName); if ( v != -1) e.Result.Add(opt, v); break; case OptionType.ValueList: Object vl = LoadValueList(book, optInfo); if (vl != null) e.Result.Add(opt, vl); break; case OptionType.Distribution: case OptionType.Trajectory: Object vd = LoadDistribution(book, optInfo); if (vd != null) e.Result.Add(opt, vd); break; default: break; } } r.EnsembleResults.Add(e); }
public override void Save(ResearchResult result) { string fileName = storageStr + result.ResearchName; if (File.Exists(fileName + ".xls") || File.Exists(fileName + ".xlsx")) fileName += result.ResearchID; InitializeExcelApplication(); workbook = excelApp.Workbooks.Add(); SaveGeneralInfo(result.ResearchID, result.ResearchName, result.ResearchType, result.ModelType, result.RealizationCount, result.Size, result.Edges, result.ResearchParameterValues, result.GenerationParameterValues); for (int i = 0; i < result.EnsembleResults.Count; ++i) { SaveEnsembleResult(result.EnsembleResults[i], i); } workbook.Sheets[1].Activate(); workbook.SaveAs(fileName + ".xlsx"); DestroyExcelApplication(); }
public override List<ResearchResult> LoadAllResearchInfo() { InitializeExcelApplication(); existingFileNames = new SortedDictionary<Guid, string>(); List<ResearchResult> researchInfos = new List<ResearchResult>(); ResearchResult DoubleResearchInfo = null; Workbook book = null; Worksheet sheet = null; foreach (string fileName in Directory.GetFiles(storageStr, "*.xlsx", SearchOption.TopDirectoryOnly)) { DoubleResearchInfo = new ResearchResult(); try { book = excelApp.Workbooks.Open(fileName); sheet = (Worksheet)book.Worksheets[1]; LoadResearchInfo(sheet, DoubleResearchInfo); LoadResearchAndGenerationParameters(sheet, DoubleResearchInfo); researchInfos.Add(DoubleResearchInfo); existingFileNames.Add(DoubleResearchInfo.ResearchID, fileName); } catch (SystemException) { continue; } } book.Close(); Marshal.ReleaseComObject(book); DestroyExcelApplication(); return researchInfos; }
private void LoadResearchParameters(ResearchResult r) { while (reader.Read()) { if (reader.Name == "ResearchParameter") { reader.MoveToAttribute("name"); ResearchParameter rp = (ResearchParameter)Enum.Parse(typeof(ResearchParameter), reader.ReadContentAsString()); reader.MoveToAttribute("value"); ResearchParameterInfo rpInfo = (ResearchParameterInfo)(rp.GetType().GetField(rp.ToString()).GetCustomAttributes(typeof(ResearchParameterInfo), false)[0]); if (rpInfo.Type.Equals(typeof(UInt32))) r.ResearchParameterValues.Add(rp, UInt32.Parse(reader.Value)); else if (rpInfo.Type.Equals(typeof(Single))) r.ResearchParameterValues.Add(rp, Single.Parse(reader.Value)); else if (rpInfo.Type.Equals(typeof(Boolean))) r.ResearchParameterValues.Add(rp, Boolean.Parse(reader.Value)); } else if (reader.Name == "GenerationParameterValues") break; } }
public override ResearchResult Load(Guid researchID) { ResearchResult r = null; string fileNameToLoad = null; if (existingFileNames != null && existingFileNames.Keys.Contains(researchID)) fileNameToLoad = existingFileNames[researchID]; else fileNameToLoad = FileNameByGuid(researchID); InitializeExcelApplication(); Workbook book = null; Worksheet sheet = null; if (fileNameToLoad != null) { r = new ResearchResult(); try { book = excelApp.Workbooks.Open(fileNameToLoad); sheet = (Worksheet)book.Worksheets[1]; LoadResearchInfo(sheet, r); LoadResearchAndGenerationParameters(sheet, r); LoadEnsembleResults(book, r); } catch (SystemException ex) { Console.WriteLine(ex.Data); } } book.Close(); Marshal.ReleaseComObject(book); DestroyExcelApplication(); return r; }
private void SaveResearchResult(ResearchResult r) { throw new NotImplementedException(); }
private void LoadResearchInfo(ResearchResult r) { if (reader.Name == "ResearchID") r.ResearchID = new Guid(reader.ReadElementString()); if (reader.Name == "ResearchName") r.ResearchName = reader.ReadElementString(); if (reader.Name == "ResearchType") r.ResearchType = (ResearchType)Enum.Parse(typeof(ResearchType), reader.ReadElementString()); if (reader.Name == "ModelType") r.ModelType = (ModelType)Enum.Parse(typeof(ModelType), reader.ReadElementString()); if (reader.Name == "RealizationCount") r.RealizationCount = Int32.Parse(reader.ReadElementString()); if (reader.Name == "Date") r.Date = DateTime.Parse(reader.ReadElementString()); if (reader.Name == "Size") r.Size = UInt32.Parse(reader.ReadElementString()); if (reader.Name == "Edges") r.Edges = Double.Parse(reader.ReadElementString()); }
private void LoadResearchParameters(ResearchResult r) { while (reader.Read()) { if (reader.Name == "ResearchParameter") { reader.MoveToAttribute("name"); ResearchParameter rp = (ResearchParameter)Enum.Parse(typeof(ResearchParameter), reader.ReadContentAsString()); reader.MoveToAttribute("value"); ResearchParameterInfo rpInfo = (ResearchParameterInfo)(rp.GetType().GetField(rp.ToString()).GetCustomAttributes(typeof(ResearchParameterInfo), false)[0]); if (rpInfo.Type.Equals(typeof(UInt32))) r.ResearchParameterValues.Add(rp, UInt32.Parse(reader.Value)); else if (rpInfo.Type.Equals(typeof(Double))) r.ResearchParameterValues.Add(rp, Double.Parse(reader.Value)); else if (rpInfo.Type.Equals(typeof(Boolean))) r.ResearchParameterValues.Add(rp, Boolean.Parse(reader.Value)); else if (rpInfo.Type.Equals(typeof(ResearchType))) r.ResearchParameterValues.Add(rp, reader.Value.ToString()); else if (rpInfo.Type.Equals(typeof(MatrixPath))) { MatrixPath mp = new MatrixPath(); mp.Path = reader.Value.ToString(); r.ResearchParameterValues.Add(rp, mp); } else { Debug.Assert(false); //throw new InvalidResearchParameters(); } } else if (reader.Name == "GenerationParameterValues") break; } }
private void LoadGenerationParameters(ResearchResult r) { while (reader.Read()) { if (reader.Name == "GenerationParameter") { reader.MoveToAttribute("name"); string g = reader.ReadContentAsString(); GenerationParameter gp; if (g == "FileName") gp = GenerationParameter.AdjacencyMatrix; else gp = (GenerationParameter)Enum.Parse(typeof(GenerationParameter), g); reader.MoveToAttribute("value"); GenerationParameterInfo gpInfo = (GenerationParameterInfo)(gp.GetType().GetField(gp.ToString()).GetCustomAttributes(typeof(GenerationParameterInfo), false)[0]); if (gpInfo.Type.Equals(typeof(UInt32))) r.GenerationParameterValues.Add(gp, UInt32.Parse(reader.Value)); else if (gpInfo.Type.Equals(typeof(Double))) r.GenerationParameterValues.Add(gp, Double.Parse(reader.Value)); else if (gpInfo.Type.Equals(typeof(Boolean))) r.GenerationParameterValues.Add(gp, Boolean.Parse(reader.Value)); else if (gpInfo.Type.Equals(typeof(MatrixPath))) { MatrixPath mp = new MatrixPath(); mp.Path = reader.Value.ToString(); r.GenerationParameterValues.Add(gp, mp); } else { Debug.Assert(false); //throw new InvalidGenerationParameters(); } } if (reader.Name == "Ensembles") break; } }
private void LoadEnsembleResults(ResearchResult r) { while (reader.Read()) { if (reader.Name == "Ensemble" && !reader.IsEmptyElement) { EnsembleResult e = new EnsembleResult(); e.NetworkSize = r.Size; e.EdgesCount = r.Edges; e.Result = new Dictionary<AnalyzeOption, Object>(); reader.Read(); while (reader.NodeType != XmlNodeType.EndElement) { AnalyzeOption opt = (AnalyzeOption)Enum.Parse(typeof(AnalyzeOption), reader.Name); AnalyzeOptionInfo optInfo = (AnalyzeOptionInfo)(opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false)[0]); switch (optInfo.OptionType) { case OptionType.Global: e.Result.Add(opt, reader.ReadElementContentAsDouble()); break; case OptionType.ValueList: e.Result.Add(opt, LoadValueList()); reader.Read(); break; case OptionType.Distribution: case OptionType.Trajectory: e.Result.Add(opt, LoadDistribution()); reader.Read(); break; default: break; } } r.EnsembleResults.Add(e); } } }
public override void Save(ResearchResult result) { string fileName = storageStr + result.ResearchName; if (File.Exists(fileName + ".xml")) fileName += result.ResearchID; using (writer = XmlWriter.Create(fileName + ".xml")) { writer.WriteStartDocument(true); writer.WriteStartElement("Research"); SaveResearchInfo(result.ResearchID, result.ResearchName, result.ResearchType, result.ModelType, result.RealizationCount, result.Date, result.Size, result.Edges); SaveResearchParameters(result.ResearchParameterValues); SaveGenerationParameters(result.GenerationParameterValues); writer.WriteStartElement("Ensembles"); for (int i = 0; i < result.EnsembleResults.Count; ++i) { SaveEnsembleResult(result.EnsembleResults[i], i); } writer.WriteEndElement(); writer.WriteEndElement(); } }
public override List<ResearchResult> LoadAllResearchInfo() { existingFileNames = new SortedDictionary<Guid, string>(); List<ResearchResult> researchInfos = new List<ResearchResult>(); ResearchResult DoubleResearchInfo = null; foreach (string fileName in Directory.GetFiles(storageStr, "*.xml", SearchOption.TopDirectoryOnly)) { DoubleResearchInfo = new ResearchResult(); using (reader = XmlReader.Create(fileName)) { try { while (reader.Read() && (reader.NodeType != XmlNodeType.Element || reader.Name == "Research")) { } LoadResearchInfo(DoubleResearchInfo); LoadResearchParameters(DoubleResearchInfo); LoadGenerationParameters(DoubleResearchInfo); researchInfos.Add(DoubleResearchInfo); existingFileNames.Add(DoubleResearchInfo.ResearchID, fileName); } catch (SystemException) { continue; } } } return researchInfos; }
public override ResearchResult Load(string name) { ResearchResult r = null; if (name != null) { r = new ResearchResult(); using (reader = XmlReader.Create(name)) { try { while (reader.Read() && (reader.NodeType != XmlNodeType.Element || reader.Name == "Research")) { } LoadResearchInfo(r); LoadResearchParameters(r); LoadGenerationParameters(r); LoadEnsembleResults(r); } catch (SystemException ex) { Console.WriteLine(ex.Data); } } } return r; }
public override void Save(ResearchResult result) { throw new NotImplementedException(); }
/// <summary> /// Checks if specified results are compatible for statistic analyze. /// </summary> /// <param name="r1">First result.</param> /// <param name="r2">Second result</param> /// <returns>True, if results are compatible. False otherwise</returns> /// <note>Research result must have same researchType and modelType.</note> private static bool AreParametersCompatible(ResearchResult r1, ResearchResult r2) { foreach (GenerationParameter gp in r1.GenerationParameterValues.Keys) { if (r1.GenerationParameterValues[gp].ToString() != r2.GenerationParameterValues[gp].ToString()) return false; } foreach (ResearchParameter rp in r1.ResearchParameterValues.Keys) { if (r1.ResearchParameterValues[rp].ToString() != r2.ResearchParameterValues[rp].ToString()) return false; } return true; }
/// <summary> /// Saves specified research result to repository. /// </summary> /// <param name="result">Research result.</param> public abstract void Save(ResearchResult result);
public override void Save(ResearchResult result) { if (!Directory.Exists(storageStr)) { Directory.CreateDirectory(storageStr); } string fileName = storageStr + result.ResearchName; if (File.Exists(fileName + ".xml")) fileName += result.ResearchID; /*XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.Encoding = Encoding.ASCII;*/ using (writer = XmlWriter.Create(fileName + ".xml"))//, settings)) { writer.WriteStartDocument(true); writer.WriteStartElement("Research"); SaveResearchInfo(result.ResearchID, result.ResearchName, result.ResearchType, result.ModelType, result.RealizationCount, result.Date, result.Size, result.Edges); SaveResearchParameters(result.ResearchParameterValues); SaveGenerationParameters(result.GenerationParameterValues); writer.WriteStartElement("Ensembles"); for (int i = 0; i < result.EnsembleResults.Count; ++i) { SaveEnsembleResult(result.EnsembleResults[i], i); } writer.WriteEndElement(); writer.WriteEndElement(); } }