Example #1
0
        private void button_AgregarAtributo_Click(object sender, EventArgs e)
        {
            // Verifica que haya datos cargados:
            if (InstanciasCargadasEnGrid == true)
            {
                // Crea atributo vacio:
                Regex            regex     = new Regex("");
                Global.Attribute attribute = new Global.Attribute("", "", regex);

                // Abre PopUp:
                PopUpAtributo popUp = new PopUpAtributo(attribute, "Agregar");
                popUp.ShowDialog();

                // Si se agrego un atributo, se vuelven a cargar las instancias en el Grid:
                if (Global.AtributoModificado == true)
                {
                    //Console.WriteLine("******************************** ATRIBUTO AGREGADO ********************************");
                    // Vuelve a cargar todo el Grid:
                    CargarInstanciasEnGrid();

                    // Muestra detalles actualizados:
                    MostrarInformacionDataSet();
                }
            }
        }
Example #2
0
        private void dataGridView_Instancias_ColumnHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            // Busca atributo:
            Global.Attribute attribute = Global.BuscarAtributo(dataGridView_Instancias.CurrentCell.OwningColumn.Name);


            Console.WriteLine("******************************** BuscarAtributo ********************************");
            Console.WriteLine(dataGridView_Instancias.CurrentCell.OwningColumn.Name);
            Console.WriteLine("\tAtributo: " + attribute.name + ", Tipo: " + attribute.type + ", Expresion regular: " + attribute.regularExpression);


            if (attribute.name != null)
            {
                // Abre PopUp:
                PopUpAtributo popUp = new PopUpAtributo(attribute, "Modificar");
                popUp.ShowDialog();

                // Si se modifico el atributo, comprueba que sus instancias cumplan con su expresion regular:
                if (Global.AtributoModificado == true)
                {
                    // Valida todas las instancias con todas las expresiones regulares:
                    Global.ValidarExpresionesRegulares();
                    // Vuelve a cargar todo el Grid:
                    CargarInstanciasEnGrid();

                    // Muestra detalles actualizados:
                    MostrarInformacionDataSet();
                }
            }
        }
Example #3
0
        private void comboBox_Atributos_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Ubica atributo en lista:
            var nombreAtributo = comboBox_Atributos.SelectedItem.ToString();

            Global.Attribute attribute = Global.DataSet_Attributes.Find(x => x.name == nombreAtributo);

            CargarDetallesAtributo(ref attribute);
        }
Example #4
0
        public PopUpAtributo(Global.Attribute attribute, string modo)
        {
            InitializeComponent();

            // Guarda el atributo original:
            AtributoOriginal = attribute;

            // Asigna modo de ventana:
            ModoVentana = modo;

            // Modifica ventana dependiendo el modo:
            if (ModoVentana == "Agregar")
            {
                label_TituloVentana.Text = "Agregar Atributo";
            }
            else if (ModoVentana == "Modificar")
            {
                label_TituloVentana.Text = "Modificar Atributo";

                // Inicializa valores del atributo:
                try
                {
                    // Muestra valores del atributo en textBoxes:
                    textBox_name.Text = attribute.name;
                    textBox_type.Text = attribute.type;
                    textBox_regularExpression.Text = attribute.regularExpression.ToString();
                }
                catch
                {
                    // Crea un nuevo atributo vacio (espacios en lugar de nulls para que no truene el programa):
                    Regex            regex         = new Regex(" ");
                    Global.Attribute atributoVacio = new Global.Attribute(" ", " ", regex);
                    // Muestra valores del atributo en textBoxes:
                    textBox_name.Text = attribute.name;
                    textBox_type.Text = attribute.type;
                    textBox_regularExpression.Text = attribute.regularExpression.ToString();
                }
            }
            else
            {
                label_TituloVentana.Text = "Ventana Atributo";
            }
        }
Example #5
0
        // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Funciones ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

        private void ModificarAtributo()
        {
            // Crea atributo con valores de la ventana:
            Regex regex = new Regex(textBox_regularExpression.Text);

            Global.Attribute attribute = new Global.Attribute(textBox_name.Text, textBox_type.Text, regex);

            // Actualiza atributo:
            bool atributoActualizado = Global.ActualizarAtributo(AtributoOriginal.name, attribute);

            // Interpreta resultado:
            if (atributoActualizado == true)
            {
                this.Close();
            }
            else
            {
                MessageBox.Show("No se han podido guardar los nuevos valores del atributo. Por favor, verifique la informaciĆ³n ingresada e intente de nuevo.", "Error: Atributo no modificado.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Example #6
0
        private void AgregarAtributo()
        {
            // Crea atributo con valores de la ventana:
            Regex regex = new Regex(textBox_regularExpression.Text);

            Global.Attribute attribute = new Global.Attribute(textBox_name.Text, textBox_type.Text, regex);

            // Agrega atributo al DataSet:
            bool atributoAgregado = Global.AgregarAtributo(attribute);

            // Especifica agregacion y cierra ventana:
            if (atributoAgregado == true)
            {
                Global.AtributoModificado = true;
                this.Close();
            }
            else
            {
                MessageBox.Show("No se ha podido guardar el nuevo atributo. Por favor, verifique la informaciĆ³n ingresada e intente de nuevo.", "Error: Atributo no agregado.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Example #7
0
        private void CargarDetallesAtributo(ref Global.Attribute attribute)
        {
            if (attribute.type == "nominal")
            {
                //++++++++++++++++++++++++++++++++++++++++++++++++ Nominales ++++++++++++++++++++++++++++++++++++++++++++++++
                this.panel_DetallesNominales.BringToFront();

                //++++++++++++++++++++++++++++++++++++++++ Variables locales:
                // Cantidad atributos erroneos:
                int totalWrongValues = 0;

                // Cantidad atributos faltantes:
                int totalMissingValues = 0;

                // Ubica indice del atributo en lista de atributos:
                int attributeIndex = Global.DataSet_Attributes.IndexOf(attribute);

                // Define lista de atributos:
                List <nominalValue> nominalValuesList = new List <nominalValue>();

                //++++++++++++++++++++++++++++++++++++++++ Conteo de posibles valores:
                // Ubica valores distintos en instancias del atributo en Data:
                foreach (string[] instancia in Global.DataSet_Data)
                {
                    // Inicializa valor:
                    nominalValue nomValue = new nominalValue();
                    nomValue.value = instancia[attributeIndex];
                    nomValue.count = 1;

                    // Comprueba que el valor exista en lista de valores:
                    if (nomValue.value == "" || nomValue.value == " ")
                    {
                        totalMissingValues++;
                    }
                    else if (Global.DataSet_Attributes[attributeIndex].regularExpression.Match(nomValue.value).Success)
                    {
                        // Encuentra valor en lista y su indice:
                        nominalValue nominalValue = nominalValuesList.Find(x => x.value == nomValue.value);

                        if (nominalValue.count >= 1)
                        {
                            // El valor ya existe en la lista, asi que se actualiza:
                            int nominalValueIndex = nominalValuesList.IndexOf(nominalValue);

                            // Obtiene numero contado del elemento original:
                            nomValue.count = nominalValue.count + 1;

                            // Reemplaza valor original:
                            nominalValuesList.Insert(nominalValueIndex, nomValue);
                            nominalValuesList.RemoveAt(nominalValueIndex + 1);
                        }
                        else
                        {
                            nominalValuesList.Add(nomValue);
                        }
                    }
                    else
                    {
                        totalWrongValues++;
                    }
                }


                Console.WriteLine(("Valores faltantes: " + totalMissingValues));
                Console.WriteLine(("Valores erroneos: " + totalWrongValues));



                //++++++++++++++++++++++++++++++++++++++++ Muestra valores:
                this.label_tipo.Text             = attribute.type;
                this.label_valoresFaltantes.Text = totalMissingValues.ToString();
                this.label_valoresErroneos.Text  = totalWrongValues.ToString();

                this.listView_posiblesValores.Items.Clear();
                foreach (nominalValue nom in nominalValuesList)
                {
                    Console.WriteLine("valor: " + nom.value + ", total:" + nom.count);

                    // Crea y agrega objeto de listView:
                    ListViewItem listViewItem = new ListViewItem(new string[] { nom.value, nom.count.ToString() });
                    this.listView_posiblesValores.Items.Add(listViewItem);
                }

                // Muestra valores en grafica de barras:
                CargarGraficaDeBarras(nominalValuesList);
            }
            else if (attribute.type == "numeric")
            {
                //++++++++++++++++++++++++++++++++++++++++++++++++ Numericos ++++++++++++++++++++++++++++++++++++++++++++++++
                this.panel_DetallesNumericos.BringToFront();

                //++++++++++++++++++++++++++++++++++++++++ Variables locales:
                // Cantidad atributos erroneos:
                int totalWrongValues = 0;

                // Ubica indice del atributo en lista de atributos:
                int attributeIndex = Global.DataSet_Attributes.IndexOf(attribute);

                // Crea lista con valores del atributo en las intancias:
                List <int> attributeValues = new List <int>();

                foreach (string[] instancia in Global.DataSet_Data)
                {
                    try
                    {
                        if (Global.DataSet_Attributes[attributeIndex].regularExpression.Match(instancia[attributeIndex]).Success)
                        {
                            attributeValues.Add(int.Parse(instancia[attributeIndex]));
                        }
                        else
                        {
                            totalWrongValues++;
                        }
                    }
                    catch
                    {
                        totalWrongValues++;
                    }
                }


                foreach (int valor in attributeValues)
                {
                    Console.Write(valor + ",");
                }
                Console.WriteLine();


                int totalMissingValues = Global.DataSet_Data.Count() - attributeValues.Count() - totalWrongValues;
                Console.WriteLine(("Valores faltantes: " + totalMissingValues));
                Console.WriteLine(("Valores erroneos: " + totalWrongValues));

                //++++++++++++++++++++++++++++++++++++++++ Minimo:
                int minimo = attributeValues.Min();
                Console.WriteLine(("Minimo: " + minimo));

                //++++++++++++++++++++++++++++++++++++++++ Maximo:
                int maximo = attributeValues.Max();
                Console.WriteLine(("Maximo: " + maximo));

                //++++++++++++++++++++++++++++++++++++++++ Media:
                double media = attributeValues.Average();
                Console.WriteLine(("Media: " + media));

                //++++++++++++++++++++++++++++++++++++++++ Mediana:
                double mediana;
                int    totalValues   = attributeValues.Count();
                int    halfIndex     = attributeValues.Count() / 2;
                var    sortedNumbers = attributeValues.OrderBy(n => n);

                if ((totalValues % 2) == 0)
                {
                    mediana = ((sortedNumbers.ElementAt(halfIndex) + sortedNumbers.ElementAt((halfIndex - 1))) / 2);
                }
                else
                {
                    mediana = sortedNumbers.ElementAt(halfIndex);
                }
                Console.WriteLine(("Mediana: " + mediana));

                //++++++++++++++++++++++++++++++++++++++++ Moda:
                var moda = attributeValues.GroupBy(n => n).OrderByDescending(g => g.Count()).Select(g => g.Key).FirstOrDefault();
                Console.WriteLine(("Moda: " + moda));

                //++++++++++++++++++++++++++++++++++++++++ Desviacion estandar:
                var desviacionEstandar = Math.Sqrt(attributeValues.Average(v => Math.Pow(v - media, 2)));
                Console.WriteLine(("Desviacion estandar: " + desviacionEstandar));


                //++++++++++++++++++++++++++++++++++++++++ Muestra valores:
                this.label_tipo.Text               = attribute.type;
                this.label_valoresFaltantes.Text   = totalMissingValues.ToString();
                this.label_valoresErroneos.Text    = totalWrongValues.ToString();
                this.label_minimo.Text             = minimo.ToString();
                this.label_maximo.Text             = maximo.ToString();
                this.label_media.Text              = media.ToString();
                this.label_mediana.Text            = mediana.ToString();
                this.label_moda.Text               = moda.ToString();
                this.label_desviacionEstandar.Text = desviacionEstandar.ToString();

                //++++++++++++++++++++++++++++++++++++++++ Muestra Box Plot:
                CargarBoxPlot(attributeValues, minimo, maximo, mediana);
            }
        }