/// <summary>
 /// Load and return the diabetes dataset (regression).
 /// ==============      ==================
 /// Samples total       442
 /// Dimensionality      10
 /// Features            real, -.2 &lt; x &lt; .2
 /// Targets             integer 25 - 346
 /// ==============      ==================
 /// </summary>
 /// <returns>
 /// Instance of <see cref="DiabetesDataset"/> class.
 /// </returns>
 public static DiabetesDataset Load()
 {
     var reader = new DelimitedReader { Sparse = false, Delimiter = " " };
     var assembly = Assembly.GetAssembly(typeof(DiabetesDataset));
     using (var datastream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.diabetes_data.csv.gz"))
     using (var targetstream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.diabetes_target.csv.gz"))
     {
         var data = reader.ReadMatrix<double>(new GZipStream(datastream, CompressionMode.Decompress));
         var target = reader.ReadMatrix<double>(new GZipStream(targetstream, CompressionMode.Decompress));
         return new DiabetesDataset { Data = data, Target = target.Column(0) };
     }
 }
Exemple #2
0
        /// <summary>
        /// Load and return the digits dataset (classification).
        /// Each datapoint is a 8x8 image of a digit.
        /// =================   ==============
        /// Classes                         10
        /// Samples per class             ~180
        /// Samples total                 1797
        /// Dimensionality                  64
        /// Features             integers 0-16
        /// =================   ==============
        /// </summary>
        /// <returns>Instance of <see cref="DigitsDataset"/>.</returns>
        public static DigitsDataset Load()
        {
            var reader = new DelimitedReader {
                Sparse = false, Delimiter = " "
            };
            var assembly = Assembly.GetAssembly(typeof(DigitsDataset));

            string descr;

            using (var sr = new StreamReader(assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.digits.rst")))
            {
                descr = sr.ReadToEnd();
            }

            using (var datastream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.digits.csv.gz"))
            {
                var data = reader.ReadMatrix <double>(new GZipStream(datastream, CompressionMode.Decompress));
                return(new DigitsDataset
                {
                    Data = data.SubMatrix(0, data.RowCount, 0, data.ColumnCount - 1),
                    Target = data.Column(data.ColumnCount - 1).ToArray().Cast <int>().ToArray(),
                    Description = descr
                });
            }
        }
        public void CanParseCommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'4',5,6" + Environment.NewLine;

            var reader = new DelimitedReader<DenseMatrix>(',')
                         {
                             HasHeaderRow = true, 
                             CultureInfo = CultureInfo.InvariantCulture
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
Exemple #4
0
        public void CanParseTabDelimtedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"2.2\"\t\t0.3e1" + Environment.NewLine
                       + "'4'\t5\t6";

            var reader = new DelimitedReader <SparseMatrix>('\t')
            {
                CultureInfo = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
 public void CanParseCommaDelimitedData()
 {
     const string data =
         @"a,b,c
     1
     ""2.2"",0.3e1
     '4',5,6
     ";
     var reader = new DelimitedReader<DenseMatrix>(',')
                  {
                      HasHeaderRow = true
                  };
     var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
     Assert.AreEqual(3, matrix.RowCount);
     Assert.AreEqual(3, matrix.ColumnCount);
     Assert.AreEqual(1.0f, matrix[0, 0]);
     Assert.AreEqual(0.0f, matrix[0, 1]);
     Assert.AreEqual(0.0f, matrix[0, 2]);
     Assert.AreEqual(2.2f, matrix[1, 0]);
     Assert.AreEqual(3.0f, matrix[1, 1]);
     Assert.AreEqual(0.0f, matrix[1, 2]);
     Assert.AreEqual(4.0f, matrix[2, 0]);
     Assert.AreEqual(5.0f, matrix[2, 1]);
     Assert.AreEqual(6.0f, matrix[2, 2]);
 }
Exemple #6
0
        public void CanParseWhiteSpaceDelimitedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"(2.2,3.3)\" 0.3e1" + Environment.NewLine
                       + "'4'   5      6" + Environment.NewLine;

            var reader = new DelimitedReader <UserDefinedMatrix>
            {
                CultureInfo = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0].Real);
            Assert.AreEqual(3.3, matrix[1, 0].Imaginary);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
Exemple #7
0
        public void CanParsePeriodDelimitedData()
        {
            var data = "a.b.c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2,2\".0,3e1+0,2e1i" + Environment.NewLine
                       + "'4,0'.5,0.6,0" + Environment.NewLine;

            var reader = new DelimitedReader <DenseMatrix>('.')
            {
                HasHeaderRow = true,
                CultureInfo  = new CultureInfo("tr-TR")
            };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1].Real);
            Assert.AreEqual(2.0, matrix[1, 1].Imaginary);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
Exemple #8
0
        public void CanParseCommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "(1,2)" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'(4,-5)',5,6" + Environment.NewLine;

            var reader = new DelimitedReader <DenseMatrix>(',')
            {
                HasHeaderRow = true,
                CultureInfo  = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0].Real);
            Assert.AreEqual(2.0, matrix[0, 0].Imaginary);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0].Real);
            Assert.AreEqual(-5.0, matrix[2, 0].Imaginary);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
        public void CanParsePeriodDelimitedData()
        {
            const string data =
                @"a.b.c
            1
            ""2,2"".0,3e1
            '4,0'.5,0.6,0
            ";
            var reader = new DelimitedReader<DenseMatrix>('.')
                         {
                             HasHeaderRow = true,
                             CultureInfo = new CultureInfo("tr-TR")
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
Exemple #10
0
        public void CanParseCommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'4',5,6" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                Delimiter      = ",",
                HasHeaderRow   = true,
                FormatProvider = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix <double>(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
Exemple #11
0
        public void CanParseComplex32CommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "(1,2)" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'(4,-5)',5,6" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                Delimiter      = ",",
                HasHeaderRow   = true,
                FormatProvider = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix <Complex32>(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0].Real);
            Assert.AreEqual(2.0f, matrix[0, 0].Imaginary);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 2]);
            Assert.AreEqual((Complex32)2.2f, matrix[1, 0]);
            Assert.AreEqual((Complex32)3.0f, matrix[1, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0].Real);
            Assert.AreEqual(-5.0f, matrix[2, 0].Imaginary);
            Assert.AreEqual((Complex32)5.0f, matrix[2, 1]);
            Assert.AreEqual((Complex32)6.0f, matrix[2, 2]);
        }
Exemple #12
0
        public void CanParsePeriodDelimitedData()
        {
            var data = "a.b.c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2,2\".0,3e1" + Environment.NewLine
                       + "'4,0'.5,0.6,0" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                Delimiter      = ".",
                HasHeaderRow   = true,
                FormatProvider = new CultureInfo("tr-TR")
            };
            var matrix = reader.ReadMatrix <double>(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
Exemple #13
0
        public void CanParseWhiteSpaceDelimitedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"2.2\" 0.3e1" + Environment.NewLine
                       + "'4'   5      6" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                FormatProvider = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix <float>(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
        /// <summary>
        /// Load and return the diabetes dataset (regression).
        /// ==============      ==================
        /// Samples total       442
        /// Dimensionality      10
        /// Features            real, -.2 &lt; x &lt; .2
        /// Targets             integer 25 - 346
        /// ==============      ==================
        /// </summary>
        /// <returns>
        /// Instance of <see cref="DiabetesDataset"/> class.
        /// </returns>
        public static DiabetesDataset Load()
        {
            var reader = new DelimitedReader {
                Sparse = false, Delimiter = " "
            };
            var assembly = Assembly.GetAssembly(typeof(DiabetesDataset));

            using (var datastream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.diabetes_data.csv.gz"))
                using (var targetstream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.diabetes_target.csv.gz"))
                {
                    var data   = reader.ReadMatrix <double>(new GZipStream(datastream, CompressionMode.Decompress));
                    var target = reader.ReadMatrix <double>(new GZipStream(targetstream, CompressionMode.Decompress));
                    return(new DiabetesDataset {
                        Data = data, Target = target.Column(0)
                    });
                }
        }
        /// <summary>
        /// Load and return the digits dataset (classification).
        /// Each datapoint is a 8x8 image of a digit.
        /// =================   ==============
        /// Classes                         10
        /// Samples per class             ~180
        /// Samples total                 1797
        /// Dimensionality                  64
        /// Features             integers 0-16
        /// =================   ==============
        /// </summary>
        /// <returns>Instance of <see cref="DigitsDataset"/>.</returns>
        public static DigitsDataset Load()
        {
            var reader = new DelimitedReader { Sparse = false, Delimiter = " " };
            var assembly = Assembly.GetAssembly(typeof(DigitsDataset));
            
            string descr;
            using (var sr = new StreamReader(assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.digits.rst")))
            {
                descr = sr.ReadToEnd();
            }

            using (var datastream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.digits.csv.gz"))
            {
                var data = reader.ReadMatrix<double>(new GZipStream(datastream, CompressionMode.Decompress));
                return new DigitsDataset
                           {
                               Data = data.SubMatrix(0, data.RowCount, 0, data.ColumnCount - 1),
                               Target = data.Column(data.ColumnCount - 1).ToArray().Cast<int>().ToArray(),
                               Description = descr
                           };
            }
        }
        public void CanParseWhiteSpaceDelimitedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"2.2\" 0.3e1" + Environment.NewLine
                       + "'4'   5      6" + Environment.NewLine;

            var reader = new DelimitedReader<UserDefinedMatrix>
                         {
                             CultureInfo = CultureInfo.InvariantCulture
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
        public void CanParseComplex32CommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "(1,2)" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'(4,-5)',5,6" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                Delimiter = ",",
                HasHeaderRow = true,
                FormatProvider = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix<Complex32>(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0].Real);
            Assert.AreEqual(2.0f, matrix[0, 0].Imaginary);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 2]);
            Assert.AreEqual((Complex32)2.2f, matrix[1, 0]);
            Assert.AreEqual((Complex32)3.0f, matrix[1, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0].Real);
            Assert.AreEqual(-5.0f, matrix[2, 0].Imaginary);
            Assert.AreEqual((Complex32)5.0f, matrix[2, 1]);
            Assert.AreEqual((Complex32)6.0f, matrix[2, 2]);
        }
 public void CanParseWhiteSpaceDelimitedData()
 {
     const string data =
         @"1
     ""2.2"" 0.3e1
     '4'   5      6
     ";
     var reader = new DelimitedReader<UserDefinedMatrix>();
     var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
     Assert.AreEqual(3, matrix.RowCount);
     Assert.AreEqual(3, matrix.ColumnCount);
     Assert.AreEqual(1.0f, matrix[0, 0]);
     Assert.AreEqual(0.0f, matrix[0, 1]);
     Assert.AreEqual(0.0f, matrix[0, 2]);
     Assert.AreEqual(2.2f, matrix[1, 0]);
     Assert.AreEqual(3.0f, matrix[1, 1]);
     Assert.AreEqual(0.0f, matrix[1, 2]);
     Assert.AreEqual(4.0f, matrix[2, 0]);
     Assert.AreEqual(5.0f, matrix[2, 1]);
     Assert.AreEqual(6.0f, matrix[2, 2]);
 }
        public void CanParsePeriodDelimitedData()
        {
            var data = "a.b.c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2,2\".0,3e1+0,2e1i" + Environment.NewLine
                       + "'4,0'.5,0.6,0" + Environment.NewLine;

            var reader = new DelimitedReader<DenseMatrix>('.')
                         {
                             HasHeaderRow = true, 
                             CultureInfo = new CultureInfo("tr-TR")
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual((Complex32)1.0f, matrix[0, 0]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 2]);
            Assert.AreEqual((Complex32)2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1].Real);
            Assert.AreEqual(2.0f, matrix[1, 1].Imaginary);
            Assert.AreEqual((Complex32)0.0f, matrix[1, 2]);
            Assert.AreEqual((Complex32)4.0f, matrix[2, 0]);
            Assert.AreEqual((Complex32)5.0f, matrix[2, 1]);
            Assert.AreEqual((Complex32)6.0f, matrix[2, 2]);
        }
        public void CanParseTabDelimitedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"2.2\"\t\t0.3e1" + Environment.NewLine
                       + "'4'\t5\t6";

            var reader = new DelimitedReader<SparseMatrix>('\t')
                         {
                             CultureInfo = CultureInfo.InvariantCulture
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual((Complex32)1.0f, matrix[0, 0]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 2]);
            Assert.AreEqual((Complex32)2.2f, matrix[1, 0]);
            Assert.AreEqual((Complex32)3.0f, matrix[1, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[1, 2]);
            Assert.AreEqual((Complex32)4.0f, matrix[2, 0]);
            Assert.AreEqual((Complex32)5.0f, matrix[2, 1]);
            Assert.AreEqual((Complex32)6.0f, matrix[2, 2]);
        }
        public void CanParseTabDelimtedData()
        {
            var data = "1"
                       + Environment.NewLine
                       + "\"2.2\"\t\t0.3e1"
                       + Environment.NewLine
                       + "'4'\t5\t6";

            var reader = new DelimitedReader<SparseMatrix>('\t');
            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
        public void CanParsePeriodDelimitedData()
        {
            var data = "a.b.c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2,2\".0,3e1" + Environment.NewLine
                       + "'4,0'.5,0.6,0" + Environment.NewLine;

            var reader = new DelimitedReader
                {
                    Delimiter = ".",
                    HasHeaderRow = true,
                    FormatProvider = new CultureInfo("tr-TR")
                };
            var matrix = reader.ReadMatrix<double>(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }