示例#1
0
        //this calculates the distance list
        //And works
        private void calculateNearestNeighborGraph(KPoint.DistType distType)
        {
            points = new PointSet(pointSetFile);

            graphPrefix = pointSetFileShort.Substring(0, pointSetFileShort.IndexOf('.')) + "_" + distType.ToString() + "_KNN_";

            //Now we set the Distance
            //Dista nce matrix
            distMatrix = points.GetDistanceMatrix(distType);
            distances  = distMatrix.GetSortedDistanceList();


            minConnectIndex = LightWeightGraph.BinSearchKNNMinConnectivity(2, points.Count - 1, points.Count, distMatrix);

            label1.Text = String.Format("Minimum Connectivity:({0} Neighbors)", minConnectIndex);

            float sum = distances.Cast <float>().Sum();

            sum        /= distances.Count;
            label4.Text = "Mean Dist:" + sum;

            //Set the track bars
            trackBar1.Minimum = 2;
            trackBar1.Maximum = minConnectIndex;
            trackBar2.Minimum = minConnectIndex;
            trackBar2.Maximum = points.Count - 1;

            trackBar1.Value = trackBar2.Value = minConnectIndex;
            distMin.Text    = String.Format("Min:({0} Neighbors)", trackBar1.Value);
            distMax.Text    = String.Format("Max:({0} Neighbors)", trackBar2.Value);
        }
示例#2
0
 public DistanceMatrix GetDistanceMatrix(KPoint.DistType distType = KPoint.DistType.Euclidean)
 {
     float[,] distMatrix = new float[Count, Count];
     for (int i = 0; i < Count - 1; i++)
     {
         for (int j = 0; j < Count; j++)
         {
             distMatrix[i, j]     =
                 distMatrix[j, i] = (float)PointList[i].GetDistance(PointList[j], distType);
         }
     }
     return(new DistanceMatrix(distMatrix));
 }
示例#3
0
        private void calculateSMST(KPoint.DistType distType)
        {
            points      = new PointSet(pointSetFile);
            graphPrefix = pointSetFileShort.Substring(0, pointSetFileShort.IndexOf('.')) + "_" + distType.ToString() + "_MST_";
            int max = points.Count / 2;

            trackBar1.Minimum = 1;
            trackBar1.Maximum = max;
            trackBar1.Value   = 1;
            trackBar2.Minimum = 1;
            trackBar2.Maximum = max;
            trackBar2.Value   = 1;

            trackBar2.Enabled      = false;
            numericUpDown1.Enabled = false;

            label1.Text  = "";
            label4.Text  = "";
            distMax.Text = "";
            distMin.Text = "Number of MSTs: 1";
        }
示例#4
0
        //this calculates the distance list
        private void CalculateMinConnectivityGeoGraph(KPoint.DistType distType)
        {
            points = new PointSet(pointSetFile);

            graphPrefix = pointSetFileShort.Substring(0, pointSetFileShort.IndexOf('.')) + "_" + distType.ToString() + "_";

            //Now we set the Distance
            //Distance matrix
            distMatrix = points.GetDistanceMatrix(distType);
            distances  = distMatrix.GetSortedDistanceList();

            //Find minimum Connectivity (can make this binary search)
            int pointCount = points.Count;

            minConnectIndex = LightWeightGraph.BinSearchGeoMinConnectivity(0, distances.Count - 1, pointCount, distMatrix, distances);

            label1.Text = String.Format("Minimum Connectivity:({0})={1}", minConnectIndex, distances[minConnectIndex]);

            float sum = 0;

            foreach (float dist in distances)
            {
                sum += dist;
            }
            sum        /= distances.Count;
            label4.Text = "Mean Dist:" + sum;

            //Set the track bars
            trackBar1.Minimum = 0;
            trackBar1.Maximum = minConnectIndex;
            trackBar2.Minimum = minConnectIndex;
            trackBar2.Maximum = distances.Count - 1;

            trackBar1.Value = trackBar2.Value = minConnectIndex;
            distMin.Text    = String.Format("Min:({0}) {1}", trackBar1.Value, distances[trackBar1.Value]);
            distMax.Text    = String.Format("Max:({0}) {1}", trackBar2.Value, distances[trackBar2.Value]);
        }
示例#5
0
        private void callCalcDist()
        {
            if (!formLoaded)
            {
                return;
            }

            trackBar2.Enabled      = true;
            numericUpDown1.Enabled = true;

            KPoint.DistType distType = KPoint.DistType.Euclidean;
            if (DistanceMetricSelect.SelectedIndex == 1)
            {
                distType = KPoint.DistType.PMCC;
            }
            else if (DistanceMetricSelect.SelectedIndex == 2)
            {
                distType = KPoint.DistType.Manhattan;
            }
            else if (DistanceMetricSelect.SelectedIndex == 3)
            {
                distType = KPoint.DistType.Chebyshev;
            }

            if (embeddingComboBox.SelectedIndex == 0)
            {
                CalculateMinConnectivityGeoGraph(distType);
            }
            else if (embeddingComboBox.SelectedIndex == 1)
            {
                calculateNearestNeighborGraph(distType);
            }
            else //stacked MSTs
            {
                calculateSMST(distType);
            }
        }