Beispiel #1
0
        public static IGWGraph <ITrainingInputNodeData, ITrainingInputEdgeData, ITrainingInputGraphData> ParseTrainingData(string file)
        {
            var graph = JSONX.LoadFromJSON <GWGraph <TrainingInputNodeData, TrainingInputEdgeData, TrainingInputGraphData> >(file);


            return(graph);
        }
Beispiel #2
0
        protected override void OnRequest(LoadCRFGraph request)
        {
            var graph = default(IGWGraph <SGLNodeData, SGLEdgeData, SGLGraphData>);

            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Filter = "Graph Files|*.crf";
                openFileDialog1.Title  = "Select a CRF graph File";

                if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    graph = JSONX.LoadFromJSON <GWGraph <SGLNodeData, SGLEdgeData, SGLGraphData> >(openFileDialog1.FileName);
                }
            }
            if (graph != null)
            {
                int nodeCounter = 0;
                foreach (var node in graph.Nodes)
                {
                    node.Data.Ordinate = nodeCounter;
                    nodeCounter++;
                }
            }
            request.Graph = graph;
        }
        public void put()
        {
            errors.Clear();
            if (CraftManager.main_ui.show_transfer_indicator)
            {
                errors.Add("unable to update, another craft is still uploading");
            }
            if (errors.Count == 0)
            {
                CraftManager.main_ui.close_update_kerbalx_craft_dialog();
                CraftManager.main_ui.show_transfer_indicator = true;
                CraftManager.main_ui.transfer_is_upload      = false;

                WWWForm craft_data = new WWWForm();
                craft_data.AddField("craft_name", craft_name);
                craft_data.AddField("craft_file", System.IO.File.ReadAllText(craft.path));
                craft_data.AddField("part_data", JSONX.toJSON(part_info()));

                KerbalX.api.update_craft(update_to_id, craft_data, (resp, code) => {
                    if (code == 200)
                    {
                        CraftManager.log("craft updated OK");
                        KerbalX.api.fetch_existing_craft((empty_resp, status_code) => {
                            CraftManager.main_ui.close_upload_interface();
                        });
                    }
                    else
                    {
                        CraftManager.log("craft update failed");
                    }
                    CraftManager.main_ui.show_transfer_indicator = false;
                });
            }
        }
Beispiel #4
0
        private void LoadParametersetB_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.Filter = "Parameter Files|*.par";
            openFileDialog1.Title  = "Select a Parameter File";

            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                CRFToolData.IsingData = JSONX.LoadFromJSON <IsingData>(openFileDialog1.FileName);
            }
        }
        public void post()
        {
            if (is_valid)
            {
                CraftManager.main_ui.show_transfer_indicator = true;
                CraftManager.main_ui.transfer_is_upload      = true;
                WWWForm craft_data = new WWWForm();
                craft_data.AddField("craft_name", craft_name);
                craft_data.AddField("craft_style", craft_type);
                craft_data.AddField("craft_file", System.IO.File.ReadAllText(craft.path));
                craft_data.AddField("part_data", JSONX.toJSON(part_info()));
                craft_data.AddField("action_groups", JSONX.toJSON(action_groups));
                craft_data.AddField("hash_tags", hash_tags);

                int pic_count = 0;
                foreach (Image image in images)
                {
                    craft_data.AddField("images[image_" + pic_count++ + "]", Convert.ToBase64String(image.read_as_jpg()));
//                    craft_data.AddField("image_urls[url_" + pic_count++ + "]", "https://i.imgur.com/nSUkIe0.jpg");
                }

                KerbalX.api.upload_craft(craft_data, (resp, code) => {
                    //                        var resp_data = JSON.Parse(resp);
                    if (code == 200)
                    {
                        CraftManager.log("craft uploaded OK");
                        KerbalX.api.fetch_existing_craft((empty_resp, status_code) => {   //refresh remote craft info
                            craft.matching_remote_ids = null;
                            CraftManager.main_ui.close_upload_interface();
                        });
                    }
                    else
                    {
                        CraftManager.log("craft upload failed");
                    }

                    //return UI to craft list mode and show upload complete dialog.
                    CraftManager.main_ui.show_transfer_indicator = false;
                    //                        CraftManager.main_ui.unlock_ui();
                    CraftManager.main_ui.upload_complete_dialog(code, JSON.Parse(resp));
                });
            }
        }
Beispiel #6
0
        public List <GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> > LoadCRFGraphs()
        {
            var            list            = new List <GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> >();
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.Filter = "Graph Files|*.crfs";
            openFileDialog1.Title  = "Select a CRF graph list File";

            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                var graphsList = JSONX.LoadFromJSON <List <string> >(openFileDialog1.FileName);
                foreach (var item in graphsList)
                {
                    var graph = JSONX.LoadFromJSON <GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> >(item);
                    list.Add(graph);
                }
            }
            return(list);
        }
Beispiel #7
0
        private void MainWindow_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.Key)
            {
            case Key.Space:
                if (EmbeddingControl == null)
                {
                    Embed();
                }
                else
                {
                    EmbeddingControl.Stop();
                    EmbeddingControl = null;
                }
                break;

            case Key.Tab:
                ViewModel.ViewType = ViewModel.ViewType.Next();
                break;

            case Key.S:
                viewModel.EvalResult.SaveAsJSON("testFile.txt");
                break;

            case Key.L:
                ViewModel.EvalResults.Add(JSONX.LoadFromJSON <OLMEvaluationResult>("testFile.txt"));
                break;

            case Key.N:
                ViewModel.EvalResPointer++;
                break;

            case Key.P:
                ViewModel.EvalResPointer--;
                break;

            default:
                break;
            }
        }
Beispiel #8
0
        public GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> LoadCRFGraph()
        {
            var graph  = default(GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData>);
            var thread = new Thread(
                () =>
            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Filter         = "Graph Files|*.crf";
                openFileDialog1.Title          = "Select a CRF graph File";

                if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    graph = JSONX.LoadFromJSON <GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> >(openFileDialog1.FileName);
                }
            });

            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            thread.Join();

            Data.SelectedGraph = graph;
            return(graph);
        }
Beispiel #9
0
        public void Execute()
        {
            //    - Prerequisites:
            //	  - Graphstructure
            //    - Training Data
            //    - 2 Node Classifications
            TrainingData   = new List <GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> >();
            EvaluationData = new List <GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> >();

            // decision wether user wants to train or load pre-trained data
            var requestTraining = new UserDecision("Use Training.", "Load Training Result.");

            requestTraining.Request();

            if (requestTraining.Decision == 0) // use training
            {
                //    -n characteristics for each node
                {
                    var request = new UserInput(UserInputLookFor.Folder);
                    request.DefaultPath = "..\\..\\CRFToolApp\\bin\\Graphs";
                    request.TextForUser = "******";
                    request.Request();
                    GraphDataFolder = request.UserText;

                    foreach (var file in Directory.EnumerateFiles(GraphDataFolder))
                    {
                        var graph = JSONX.LoadFromJSON <GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> >(file);
                        TrainingData.Add(graph);
                    }
                }

                //   - Step 1:

                //   - discretize characteristics
                #region Use Training Pede
                {
                    // create features
                    CreateFeatures(Dataset, TrainingData);
                    InitCRFScores(TrainingData);

                    var request = new OLMRequest(OLMVariant.Ising, TrainingData);
                    request.BasisMerkmale.AddRange(Dataset.NodeFeatures);
                    request.BasisMerkmale.AddRange(Dataset.EdgeFeatures);

                    request.LossFunctionValidation = OLM.LossRatio;

                    request.Request();

                    // zugehörige Scores erzeugen für jeden Graphen (auch Evaluation)
                    CreateCRFScores(TrainingData, Dataset.NodeFeatures, request.Result.ResultingWeights);

                    // store trained Weights
                    Dataset.NumberIntervals    = NumberIntervals;
                    Dataset.Characteristics    = TrainingData.First().Data.Characteristics.ToArray();
                    Dataset.EdgeCharacteristic = "IsingEdgeCharacteristic";
                    Dataset.Weights            = request.Result.ResultingWeights;
                    Dataset.SaveAsJSON("results.json");
                }

                #endregion
            }
            else
            { // load pre-trained data
                var request = new UserInput();
                request.TextForUser = "******";
                request.Request();
                var file           = request.UserText;
                var trainingResult = JSONX.LoadFromJSON <WorkflowOneDataset>(file);
                Dataset = trainingResult;
            }
            //- Step2:

            // User Choice here
            {
                var request = new UserInput(UserInputLookFor.Folder);
                request.TextForUser = "******";
                request.Request();
                GraphDataFolder = request.UserText;

                foreach (var file in Directory.EnumerateFiles(GraphDataFolder))
                {
                    var graph = JSONX.LoadFromJSON <GWGraph <CRFNodeData, CRFEdgeData, CRFGraphData> >(file);
                    EvaluationData.Add(graph);
                }
            }

            // remove double edges
            {
                var edgesToRemove = new LinkedList <GWEdge <CRFNodeData, CRFEdgeData, CRFGraphData> >();
                foreach (var graph in EvaluationData)
                {
                    foreach (var edge in graph.Edges.ToList())
                    {
                        if (graph.Edges.Any(e => (e != edge) && ((e.Foot == edge.Head && e.Head == edge.Foot && e.GWId.CompareTo(edge.GWId) < 0) || (e.Foot == edge.Foot && e.Head == edge.Head && e.GWId.CompareTo(edge.GWId) < 0))))
                        {
                            edgesToRemove.Add(edge);
                            graph.Edges.Remove(edge);
                        }
                    }
                }
                foreach (var edge in edgesToRemove)
                {
                    edge.Foot.Edges.Remove(edge);
                    edge.Head.Edges.Remove(edge);
                }
            }


            //scores erzeugen
            CreateCRFScores(EvaluationData, Dataset.NodeFeatures, Dataset.Weights);

            //   - Create ROC Curve
            {
            }
            //   - Give Maximum with Viterbi
            {
                foreach (var graph in EvaluationData)
                {
                    var request = new SolveInference(graph, null, 2);
                    request.Request();
                    graph.Data.AssginedLabeling = request.Solution.Labeling;
                }

                //show results in 3D Viewer
                {
                    //var request = new ShowGraphs();
                    //request.Graphs = EvaluationData;
                    //request.Request();
                }
            }
            //   - Give Sample with MCMC
            {
                foreach (var graph in EvaluationData)
                {
                    SoftwareGraphLearningParameters parameters = new SoftwareGraphLearningParameters();
                    parameters.NumberOfGraphs          = 60;
                    parameters.NumberNodes             = 50;
                    parameters.NumberLabels            = 2;
                    parameters.NumberCategories        = 4;
                    parameters.IntraConnectivityDegree = 0.15;
                    parameters.InterConnectivityDegree = 0.01;


                    //sample parameters
                    var samplerParameters = new MHSamplerParameters();
                    var sglGraph          = graph.Convert((nodeData) => new SGLNodeData()
                    {
                    }, (edgeData) => new SGLEdgeData(), (graphData) => new SGLGraphData());

                    samplerParameters.Graph        = sglGraph;
                    samplerParameters.NumberChains = 1;

                    //sampler starten
                    var gibbsSampler = new MHSampler();
                    gibbsSampler.Do(samplerParameters);
                }
            }
        }
Beispiel #10
0
        private void buttonSave_Click(object sender, RoutedEventArgs e)
        { // save current graph.
            Directory.CreateDirectory("Output\\");

            JSONX.SaveAsJSON(ViewModel.Graph, "Output\\" + ViewModel.GraphName + ".json");
        }
Beispiel #11
0
        private static double[] calculateTerminationConditionForSeeding()
        {
            double[] averageRatioItoS = new double[3];
            if (ComputeTerminationCondition)
            {
                List <double> ratios = new List <double>();

                // Getting the ratio of all surface nodes to the interface nodes
                // to get a reality near parameter when to stop the seeding
                foreach (var file in Directory.GetFiles(fileFolder))
                {
                    var pdbFile = PDBExt.Parse(file);
                    pdbFile.Name = file.Substring(fileFolder.Length + 1, 4);
                    var nameWithChain = file.Substring(fileFolder.Length + 1, 6);

                    // counting all the nodes
                    var rasaRequest = new RequestRasa(pdbFile);
                    rasaRequest.RequestInDefaultContext();

                    // counting all the surface nodes
                    int SurfaceCounter = 0;
                    foreach (var rasa in rasaRequest.Rasavalues)
                    {
                        SurfaceCounter += rasa.Value > 0.15 ? 1 : 0;
                        rasa.Key.IsCore = rasa.Value <= 0.15;
                    }

                    // counting the interface nodes for each file
                    int InterfaceCounter = 0;
                    using (var reader = new StreamReader(InterfaceDefLocation))
                    {
                        var line = "";
                        while ((line = reader.ReadLine()) != null)
                        {
                            var nuss = nameWithChain;
                            InterfaceCounter += line.StartsWith(nameWithChain) ? 1 : 0;
                        }
                    }

                    double ratio = 1.0 * InterfaceCounter / SurfaceCounter;
                    ratios.Add(ratio);
                }

                // calculation of the average ratio between surface and interface nodes
                double ratioSum = 0.0;
                for (int i = 0; i < ratios.Count; i++)
                {
                    ratioSum += ratios[i];
                }
                double max = ratios.Max();
                double min = ratios.Min();
                averageRatioItoS[0] = ratioSum / ratios.Count;
                averageRatioItoS[1] = min;
                averageRatioItoS[2] = max;

                averageRatioItoS.SaveAsJSON("terminationCondition.txt");
            }
            else
            {
                averageRatioItoS = JSONX.LoadFromJSON <double[]>("terminationCondition.txt");
            }

            return(averageRatioItoS);
        }