public void Add_other_data_instance(Data_class other_data)
        {
            List <IAdd_to_data_line_class> add_list = new List <IAdd_to_data_line_class>();

            #region Generate add list of other data
            IAdd_to_data_line_class add_line;
            int                       other_length        = other_data.Data_length;
            int                       other_column_length = other_data.ColChar.Columns_length;
            Data_line_class           other_line;
            Colchar_column_line_class other_column;
            for (int indexOther = 0; indexOther < other_length; indexOther++)
            {
                other_line = other_data.Data[indexOther];
                for (int indexCol = 0; indexCol < other_column_length; indexCol++)
                {
                    other_column = other_data.ColChar.Columns[indexCol];
                    if (other_line.Columns[indexCol] != 0)
                    {
                        add_line = new IAdd_to_data_line_class();
                        add_line.SampleName_for_data           = (string)other_column.SampleName.Clone();
                        add_line.EntryType_for_data            = other_column.EntryType;
                        add_line.Timepoint_for_data            = other_column.Timepoint;
                        add_line.NCBI_official_symbol_for_data = (string)other_line.NCBI_official_symbol.Clone();
                        add_line.Value_for_data = other_line.Columns[indexCol];
                        add_list.Add(add_line);
                    }
                }
            }
            #endregion

            Add_to_data_instance(add_list.ToArray());
        }
        public Data_class Generate_new_data_instance()
        {
            Check_for_duplicates();
            Data_class data = new Data_class();

            data.Add_to_data_instance(this.Custom_data);
            return(data);
        }
        public Data_class Get_data_instance_with_separated_up_and_down_regulated_entries()
        {
            Data_class data      = Get_data_instance_with_only_upregulated_entries();
            Data_class data_down = Get_data_instance_with_only_downregulated_entries();

            data.Add_other_data_instance(data_down);
            return(data);
        }
        public Data_class Get_data_instance_with_only_downregulated_entries()
        {
            Data_class data_down = this.Deep_copy();

            data_down.Keep_only_values_equal_to_or_smaller_than_cutoff(0F);
            data_down.ColChar.Switch_entryType_to_downregulated();
            return(data_down);
        }
        public Data_class Get_data_instance_with_only_upregulated_entries()
        {
            Data_class data_up = this.Deep_copy();

            data_up.Keep_only_values_equal_to_or_greater_than_cutoff(0F);
            data_up.ColChar.Switch_entryType_to_upregulated();
            return(data_up);
        }
        public Data_class Deep_copy()
        {
            Data_class copy        = (Data_class)this.MemberwiseClone();
            int        data_length = Data.Length;

            copy.Data = new Data_line_class[data_length];
            for (int indexD = 0; indexD < data_length; indexD++)
            {
                copy.Data[indexD] = this.Data[indexD].Deep_copy();
            }
            copy.ColChar = this.ColChar.Deep_copy();
            return(copy);
        }