コード例 #1
0
        public void MXGraphTest()
        {
            log.logStartPhase("MXGraph", "Texting Draw.io create/load/save");

            folderNode rootNode = new folderNode();

            rootNode.AttachSubfolders();

            var dgml = new DirectedGraph();

            dgml.Populate <folderNode>(rootNode, x => x,
                                       x => x.path,
                                       x => x.caption,
                                       true,
                                       false);

            mxGraph mxg = directedGraphToMXGraph.ConvertToMXGraph(dgml);

            String drawio_path = folderResults.pathFor("MXGraphTest.drawio", imbSCI.Data.enums.getWritableFileMode.overwrite, "Resaving loaded DMGL object");

            String drawio_jpg = folderResults.pathFor("MXGraphTest.jpg", imbSCI.Data.enums.getWritableFileMode.overwrite, "Resaving loaded DMGL object");


            Image img = mxCellRenderer.CreateImage(mxg, mxg.GetChildCells(mxg, false, false), 1.0, Color.LightGray, true, new mxRectangle(0, 0, 1000, 500));

            img.Save(drawio_jpg, ImageFormat.Jpeg);

            var     doc   = new XmlDocument();
            mxCodec codec = new mxCodec();
            XmlNode node  = codec.Encode(mxg.Model);


            doc.LoadXml(node.OuterXml);
            doc.Save(drawio_path);


            log.logEndPhase();
        }
コード例 #2
0
        /// <summary>
        /// Directeds the graph test.
        /// </summary>
        public void DirectedGraphTest()
        {
            DirectedGraph dgml = new DirectedGraph();

            log.logStartPhase("TEST01", "Creating DirectedGraph from string list of paths");

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("/A/B/B/C");
            sb.AppendLine("/A/B2/B/C");
            sb.AppendLine("/A/B2/B1/C");
            sb.AppendLine("/A/B2/B2/C");
            sb.AppendLine("/A/B2/B3/C");

            List <String> spl = sb.ToString().Split(new String[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
            var           g   = graphTools.BuildGraphFromPaths <graphNode>(spl, "/");

            dgml = g.ConvertToDGML();
            var TP1 = folderResults.pathFor("test01_usingConvertor.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "");

            dgml.Save(TP1);


            dgml = new DirectedGraph();

            dgml.Populate <IObjectWithPathAndChildren>(g, x => x,
                                                       x => x.name,
                                                       x => x.path,
                                                       true,
                                                       false);

            var TP2 = folderResults.pathFor("test01_usingPopulateExtension.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "");

            dgml.Save(TP2);


            log.logEndPhase();


            log.logStartPhase("TEST02", "Creating DirectedGraph from application root folder");

            folderNode rootNode = new folderNode();

            rootNode.AttachSubfolders();

            dgml = new DirectedGraph();

            dgml.Populate <folderNode>(rootNode, x => x,
                                       x => x.path,
                                       x => x.caption,
                                       true,
                                       false);

            var TP3 = folderResults.pathFor("test02.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "");

            dgml.Save(TP3);



            log.logEndPhase();


            log.logStartPhase("TEST03", "Creating DirectedGraph with reflection");

            Type graphNodeBaseType = typeof(graphNodeBase);

            dgml = new DirectedGraph();

            dgml.Populate <Type>(graphNodeBaseType.GetBaseTypeList(true),
                                 x => x.GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public).Select(y => y.PropertyType).ToList(),
                                 x => x.Name,
                                 x => x.Name,
                                 true,
                                 false);

            var TP4 = folderResults.pathFor("test03.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "");

            dgml.Save(TP4);

            log.logEndPhase();


            log.logStartPhase("TEST04", "Testing Load and Save methods for DirectGraph");
            DirectedGraph.Load <DirectedGraph>(TP1).Save(folderResults.pathFor("loadsave_test01.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "Resaving loaded DMGL object"));
            DirectedGraph.Load <DirectedGraph>(TP2).Save(folderResults.pathFor("loadsave_test02.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "Resaving loaded DMGL object"));
            DirectedGraph.Load <DirectedGraph>(TP3).Save(folderResults.pathFor("loadsave_test03.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "Resaving loaded DMGL object"));
            DirectedGraph.Load <DirectedGraph>(TP4).Save(folderResults.pathFor("loadsave_test04.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "Resaving loaded DMGL object"));
            log.logEndPhase();


            DotGraph dotGraph = new DotGraph("test", true);

            dotGraph.Nodes.AddRange(dgml.Nodes);
            dotGraph.Links.AddRange(dgml.Links);
            String dot_path = folderResults.pathFor("DOTTest.dot", imbSCI.Data.enums.getWritableFileMode.overwrite, "DGML to DOT");

            dotGraph.Save(dot_path, imbSCI.Data.enums.getWritableFileMode.overwrite);


            //log.logStartPhase("TEST05","Exporting to draw.io");
        }
コード例 #3
0
        /// <summary>
        /// Generates the report set directory readme file.
        /// </summary>
        /// <param name="filename">The filename.</param>
        public void GenerateParentReadmeFile(String filename = "experiments_readme.txt")
        {
            folderNode node = folder;

            //if (folder.parent != null)
            //{
            //    node = folder.parent as folderNode;
            //}
            //else
            //{
            //    DirectoryInfo di = folder;
            //    DirectoryInfo dip = di.Parent;
            //    node = dip;
            //    node.caption = dip.Name;
            //    node.description = "Report data set on group of experiments";
            //}

            StringBuilder sb = new StringBuilder();

            // <--------- ---- ---- -- ------ DESCRIPTION GENERATION
            String ln = "# Report package [" + node.caption + "]";

            sb.AppendLine(ln);
            String line = "-".Repeat(ln.Length);

            sb.AppendLine(line);


            sb.AppendLine("This directory contains integral reports on performed experiments on web site classification, done with imbWBI library - part of imbVeles Framework.");
            sb.AppendLine("Each subdirectory contains reports on one particular configuration, tested on a range of semantic term expansion (Stx) values.");
            sb.AppendLine(line);
            sb.AppendLine();
            sb.AppendLine("Main directory structure:");
            sb.AppendLine("-- exp_[experient code name]");
            sb.AppendLine("-- exp_[experient code name]");
            sb.AppendLine("--            ...           ");
            sb.AppendLine("-- Summary");
            sb.AppendLine();
            sb.AppendLine(line);
            sb.AppendLine();
            sb.AppendLine("## Experiment subdirectories");
            sb.AppendLine("In the subdirectories named exp_[experiment code name] you will find summary text, spreadsheet and XML data files - describing the experiment.");
            sb.AppendLine("Wherever an Excel spreadsheet file is generated (in XLSX format), you'll find a subfolder named [data] where the same data is exported in Comma Separated Values (CSV) format for easier consumption by 3rd party software.");
            sb.AppendLine("-- In Excel spreadsheet files you'll find second sheet called LEGEND, where each column in the report is explained. The same column descriptions are saved in plain text format within [data] subfolders.");
            sb.AppendLine("In each subdirectory of this data set, across the complete directory tree, you will find [directory_readme.txt] where content of the subdirectory is described.");
            sb.AppendLine("Exact content of the experiment report subdirectores varies depending on reporting options used and version of the software.");
            sb.AppendLine();
            sb.AppendLine("However, there is general directory tree structure:");
            sb.AppendLine("-- exp_[experient code name]");
            sb.AppendLine("-- -- [name of FVE]_[sample randomization tag]_E[Stx]                    <- directory with report on experiment version, performed with Stx number of semantic term expansion steps");
            sb.AppendLine("-- -- -- [name of FVE]_[sample randomization tag]_E[Stx]00[fold id]      <- directory with report on [fold id] fold of k-fold schema used");
            sb.AppendLine("-- -- -- -- cases                                                        <- XML serialized data on Category Knowledge, constructed in this fold (from the training sample subset)");
            sb.AppendLine("-- -- General                                                            <- general report on the complete data set, different in scope depending on reporting options used");
            sb.AppendLine("-- -- SharedKnowledge                                                    <- XML serialized data (Lemma Tables) on all Cases in the data set");
            sb.AppendLine("-- -- errors                                <- Here you might find logs on exceptions, if an error during execution happen. ");
            sb.AppendLine("                                            | However, if the note.txt file is not empty - it should have earlier time/date creation stamp then the rest of the report.");
            sb.AppendLine("                                            | Only reports with error notes that should exist in this data set are the ones where Semantic Cloud");
            sb.AppendLine("                                            | failed to be created because of small amount of training data in the fold.");
            sb.AppendLine();
            sb.AppendLine("## Summary directory");
            sb.AppendLine("In the [Summary] directory, you will find aggregated overview reports on all experiments in this group. The reports are created separately for each [k] number of k-fold schemas.");
            sb.AppendLine("These reports are given in spreadsheet format (Excel file, and CSV in [data] subfolder) and in form of native XML serialized objects.");
            sb.AppendLine("Additional remarks:");
            sb.AppendLine("-- Reports may contain some additional metrics, subreports and other records, not mentioned nor explained in the research article. Like: ModelMetrics.xml. ");
            sb.AppendLine("-- These are some unfinished ideas, models for FVE evaluation that, at the end, were not used for research conclusions nor system validation.");
            sb.AppendLine();
            Double f1 = Double.MinValue;
            secondaryReportOnFVE topFVE = null;

            sb.AppendLine(line);

            sb.AppendLine("## List of the experiments contained in this data set");

            Int32 c = 1;

            foreach (var item in items)
            {
                ln = "[" + c.ToString("D2") + "] " + item.experiment.name + "               (sub experiments: " + item.items.Count.ToString() + ")";
                sb.AppendLine(ln);

                if (f1 < item.topPerformer.F1Score)
                {
                    topFVE = item.topPerformer;
                    f1     = item.topPerformer.F1Score;
                }

                c++;
            }



            sb.AppendLine(line);
            sb.AppendLine();
            sb.AppendLine("imbVeles Framework | imbWBI | GNU GPL v3.0 | http://blog.veles.rs | Goran Grubić | [email protected]");
            sb.AppendLine(line);
            sb.AppendLine("File generated: " + DateTime.Now.ToLongDateString() + ", " + DateTime.Now.ToLongTimeString());



            // <---------

            String p = node.pathFor(filename, imbSCI.Data.enums.getWritableFileMode.overwrite, "ReadMe file describing experiment reports contained in this report set.");

            File.WriteAllText(p, sb.ToString());

            node.AttachSubfolders();

            if (DoGenerateGraph)
            {
                var dgml = node.GetDirectedGraph(false, false, false, 3);
                dgml.Layout         = imbSCI.Graph.DGML.enums.GraphLayoutEnum.DependencyMatrix;
                dgml.GraphDirection = imbSCI.Graph.DGML.enums.GraphDirectionEnum.LeftToRight;
                dgml.Save(node.pathFor("directoryGraph.dgml", imbSCI.Data.enums.getWritableFileMode.overwrite, "Directory structure Directed Graph in Microsoft DGML format - open in Visual Studio", true));

                //var dot = dgml.ConvertToDOT();

                //dot.Save(node.pathFor("directoryGraph.dot", imbSCI.Data.enums.getWritableFileMode.overwrite, "Directory structure Directed Graph in GraphVIZ DOT graph language format", true));
            }
            node.generateReadmeFiles(appManager.AppInfo);
        }