public void TestConvertNumericToMultiNumeric() { var mBase = PerseusFactory.CreateMatrixData(); mBase.AddStringColumn("Id", "", new [] { "n1;n2", "n3" }); var mdata = PerseusFactory.CreateMatrixData(new[, ] { { 0.0 }, { 1.0 }, { 2.0 } }); mdata.AddStringColumn("Id", "", new [] { "n1", "n2", "n3" }); var match = new MatchingRowsByName(); var errString = string.Empty; var param = match.GetParameters(new [] { mBase, mdata }, ref errString); param.GetParam <int[]>("Copy main columns").Value = new[] { 0 }; param.GetParam <int>("Combine copied main values").Value = 5; IMatrixData[] supplTables = null; IDocumentData[] documents = null; var result = match.ProcessData(new[] { mBase, mdata }, param, ref supplTables, ref documents, BaseTest.CreateProcessInfo()); Assert.AreEqual(result.MultiNumericColumnCount, 1); CollectionAssert.AreEqual(new [] { 0.0, 1.0 }, result.MultiNumericColumns[0][0]); CollectionAssert.AreEqual(new [] { 2.0 }, result.MultiNumericColumns[0][1]); }
public void TestSmallExample() { var m1 = PerseusFactory.CreateMatrixData(new double[, ] { { 0, 1 }, { 2, 3 } }, new List <string> { "col 1", "col 2" }); var m2 = PerseusFactory.CreateMatrixData(new double[, ] { { 4, 5 }, { 6, 7 } }, new List <string> { "col 2", "col 3" }); var m = new[] { m1, m2 }; var matching = new MatchingColumnsByName(); var errString = string.Empty; var parameters = matching.GetParameters(m, ref errString); Assert.IsTrue(string.IsNullOrEmpty(errString)); IMatrixData[] supplTables = null; IDocumentData[] documents = null; var pInfo = BaseTest.CreateProcessInfo(); var result = matching.ProcessData(m, parameters, ref supplTables, ref documents, pInfo); Assert.IsTrue(string.IsNullOrEmpty(pInfo.ErrString)); Assert.AreEqual(4, result.RowCount); CollectionAssert.AreEqual(new [] { "col 2", "col 1", "col 3" }, result.ColumnNames); CollectionAssert.AreEqual(new [] { 1, 3, 4, 6.0 }, result.Values.GetColumn(0).ToArray()); CollectionAssert.AreEqual(new [] { 0, 2, double.NaN, double.NaN }, result.Values.GetColumn(1).ToArray()); CollectionAssert.AreEqual(new [] { double.NaN, double.NaN, 5, 7 }, result.Values.GetColumn(2).ToArray()); }
public void TestSmallExampleWithAnnotationColumns() { var m1 = PerseusFactory.CreateMatrixData(new double[, ] { { 0, 1 }, { 2, 3 } }, new List <string> { "col 1", "col 2" }); m1.AddStringColumn("m1", "", new[] { "a", "b" }); m1.AddStringColumn("common string column", "", new[] { "c", "d" }); m1.AddNumericColumn("m1", "", new[] { 0, 1.0 }); m1.AddNumericColumn("common numeric column", "", new[] { 2, 3.0 }); m1.AddCategoryColumn("common category column", "", new [] { new [] { "cat1" }, new [] { "cat2", "cat3" } }); var m2 = PerseusFactory.CreateMatrixData(new double[, ] { { 4, 5 }, { 6, 7 } }, new List <string> { "col 2", "col 3" }); m2.AddStringColumn("common string column", "", new [] { "e", "f" }); m2.AddStringColumn("m2", "", new [] { "g", "h" }); m2.AddNumericColumn("common numeric column", "", new[] { 4, 5.0 }); m2.AddCategoryColumn("common category column", "", new [] { new [] { "cat2" }, new [] { "cat1", "cat4" } }); var m = new[] { m1, m2 }; var matching = new MatchingColumnsByName(); var errString = string.Empty; var parameters = matching.GetParameters(m, ref errString); Assert.IsTrue(string.IsNullOrEmpty(errString)); IMatrixData[] supplTables = null; IDocumentData[] documents = null; var pInfo = BaseTest.CreateProcessInfo(); var result = matching.ProcessData(m, parameters, ref supplTables, ref documents, pInfo); Assert.IsTrue(string.IsNullOrEmpty(pInfo.ErrString)); CollectionAssert.AreEqual(new [] { "common string column", "m1", "m2" }, result.StringColumnNames); CollectionAssert.AreEqual(new [] { "c", "d", "e", "f" }, result.StringColumns[0]); CollectionAssert.AreEqual(new [] { "a", "b", "", "" }, result.StringColumns[1]); CollectionAssert.AreEqual(new [] { "", "", "g", "h" }, result.StringColumns[2]); CollectionAssert.AreEqual(new [] { "common numeric column", "m1" }, result.NumericColumnNames); CollectionAssert.AreEqual(new [] { 2, 3, 4, 5.0 }, result.NumericColumns[0]); CollectionAssert.AreEqual(new [] { 0, 1, double.NaN, double.NaN }, result.NumericColumns[1]); CollectionAssert.AreEqual(new [] { "common category column" }, result.CategoryColumnNames); var actual = result.GetCategoryColumnAt(0); var expected = new[] { new[] { "cat1" }, new[] { "cat2", "cat3" }, new[] { "cat2" }, new[] { "cat1", "cat4" } }; Assert.AreEqual(expected.Length, actual.Length); for (int i = 0; i < actual.Length; i++) { CollectionAssert.AreEqual(expected[i], actual[i]); } }
public void TestReadEmptyMatrixFromFile() { var data = PerseusFactory.CreateDataWithAnnotationColumns(); PerseusUtils.ReadDataWithAnnotationColumns(data, BaseTest.CreateProcessInfo(), () => { var memstream = new MemoryStream(Encoding.UTF8.GetBytes("Node\n#!{Type}T\n")); return(new StreamReader(memstream)); }, "test", '\t'); Assert.AreEqual(0, data.RowCount); }
public void TestInitialize() { double[,] peptidesValues = { { 9.0 } }; peptides = PerseusFactory.CreateMatrixData(peptidesValues, new List <string> { "pep_MS/MS Count" }); peptides.AddNumericColumn("pep_Intensity", "", new [] { 0.0 }); peptides.AddStringColumn("pep_id", "", new [] { "35" }); peptides.AddStringColumn("pep_Protein group IDs", "", new [] { "13;21" }); peptides.Quality.Init(1, 1); peptides.Quality.Set(0, 0, 1); ExpandMultiNumeric multiNum = new ExpandMultiNumeric(); string errorString = string.Empty; Parameters parameters2 = multiNum.GetParameters(peptides, ref errorString); parameters2.GetParam <int[]>("Text columns").Value = new[] { 1 }; IMatrixData[] suppl = null; IDocumentData[] docs = null; multiNum.ProcessData(peptides, parameters2, ref suppl, ref docs, BaseTest.CreateProcessInfo()); double[,] proteinMainValues = { { 166250000.0 }, { 8346000.0 } }; proteinMain = PerseusFactory.CreateMatrixData(proteinMainValues, new List <string> { "prot_LFQ intensity" }); proteinMain.Name = "protein main"; proteinMain.AddStringColumn("prot_id", "", new [] { "13", "21" }); proteinMain.AddStringColumn("prot_gene name", "", new [] { "geneA", "geneB" }); double[,] expandValues = { { 9.0 }, { 9.0 } }; expand = PerseusFactory.CreateMatrixData(expandValues, new List <string> { "pep_MS/MS Count" }); expand.Name = "expand"; expand.AddNumericColumn("pep_Intensity", "", new [] { 0.0, 0.0 }); expand.AddStringColumn("pep_id", "", new [] { "35", "35" }); expand.AddStringColumn("pep_Protein group IDs", "", new [] { "13", "21" }); matching = new MatchingRowsByName(); string err = string.Empty; parameters = matching.GetParameters(new[] { expand, proteinMain }, ref err); }
public void TestSmallExample() { double[,] values = new[, ] { { 0.0, 1.0, 0, 5 }, { 2.0, 3.0, 0, 5 } }; IMatrixData mdata = PerseusFactory.CreateMatrixData(values, new List <string> { "Col___1", "Col___2", "Col___3", "No expand" }); mdata.ColumnDescriptions = new List <string> { "Description Col", "Col", "Col", "Description No expand" }; double[][] multiNum = new[] { new[] { 0.0, 1.0 }, new[] { 2.0 } }; mdata.AddMultiNumericColumn("MultiNum", "", multiNum); string[] stringCol = new[] { "row1", "row2" }; mdata.AddStringColumn("String", "", stringCol); ExpandSiteTable expand = new ExpandSiteTable(); IMatrixData[] supplData = null; IDocumentData[] docs = null; expand.ProcessData(mdata, new Parameters(), ref supplData, ref docs, BaseTest.CreateProcessInfo()); Assert.AreEqual(2, mdata.ColumnCount); CollectionAssert.AreEqual(new [] { "No expand", "Col" }, mdata.ColumnNames.ToArray()); Assert.AreEqual(2, mdata.ColumnDescriptions.Count); CollectionAssert.AreEqual(new [] { "Description No expand", "Description Col" }, mdata.ColumnDescriptions.ToArray()); Assert.AreEqual(6, mdata.RowCount); Assert.AreEqual(2, mdata.StringColumnCount); CollectionAssert.AreEqual(new [] { "String", "Unique identifier" }, mdata.StringColumnNames); CollectionAssert.AreEqual(stringCol.Concat(stringCol).Concat(stringCol).ToArray(), mdata.StringColumns[0]); Assert.AreEqual(1, mdata.MultiNumericColumnCount); CollectionAssert.AreEqual(multiNum.Concat(multiNum).Concat(multiNum).ToArray(), mdata.MultiNumericColumns[0]); }
public void TestSmallExample() { SingleChoiceParam matchColParam1 = (SingleChoiceParam)parameters.GetParam <int>("Matching column in table 1"); CollectionAssert.AreEqual(new [] { "pep_id", "pep_Protein group IDs", "pep_Intensity" }, matchColParam1.Values.ToArray()); matchColParam1.Value = 1; Assert.AreEqual("pep_Protein group IDs", matchColParam1.StringValue); IMatrixData[] supplTables = null; IDocumentData[] documents = null; IMatrixData matched = matching.ProcessData(new[] { expand, proteinMain }, parameters, ref supplTables, ref documents, BaseTest.CreateProcessInfo()); CollectionAssert.AreEqual(new [] { "pep_MS/MS Count", "pep_id", "pep_Protein group IDs", "pep_Intensity" }, matched.ColumnNames.Concat(matched.StringColumnNames).Concat(matched.NumericColumnNames).ToArray()); Assert.AreEqual(2, matched.RowCount); Assert.AreEqual(1, matched.ColumnCount); Assert.AreEqual(1, matched.NumericColumnCount); }
public void TestMatchingCaseInSensitive() { var mBase = PerseusFactory.CreateMatrixData(); mBase.AddStringColumn("Name", "", new [] { "A", "a", "B", "b", "C", "c" }); Assert.IsTrue(mBase.IsConsistent(out var mBaseConsistent), mBaseConsistent); var mdata = PerseusFactory.CreateMatrixData(); mdata.AddStringColumn("Name", "", new [] { "a", "B" }); Assert.IsTrue(mdata.IsConsistent(out var mdataConsistent), mdataConsistent); var match = new MatchingRowsByName(); var errString = string.Empty; var param = match.GetParameters(new [] { mBase, mdata }, ref errString); param.GetParam <bool>("Add indicator").Value = true; param.GetParam <bool>("Ignore case").Value = true; IMatrixData[] supplTables = null; IDocumentData[] documents = null; var result = match.ProcessData(new[] { mBase, mdata }, param, ref supplTables, ref documents, BaseTest.CreateProcessInfo()); var indicator = result.GetCategoryColumnAt(0).Select(cats => cats.SingleOrDefault() ?? "").ToArray(); CollectionAssert.AreEqual(new [] { "+", "+", "+", "+", "", "" }, indicator); }
public void TestConvertNumericToMultiNumeric() { var mBase = PerseusFactory.CreateMatrixData(); mBase.AddStringColumn("Id", "", new [] { "n1;n2", "n3", "n5" }); Assert.IsTrue(mBase.IsConsistent(out var mBaseConsistent), mBaseConsistent); var mdata = PerseusFactory.CreateMatrixData(new[, ] { { 0.0 }, { 1.0 }, { 2.0 }, { 3.0 } }); mdata.AddStringColumn("Id", "", new [] { "n1", "n2", "n3", "n4" }); Assert.IsTrue(mdata.IsConsistent(out var mdataConsistent), mdataConsistent); var match = new MatchingRowsByName(); var errString = string.Empty; var param = match.GetParameters(new [] { mBase, mdata }, ref errString); param.GetParam <int[]>("Copy main columns").Value = new[] { 0 }; param.GetParam <int>("Combine copied main values").Value = 5; param.GetParam <int>("Join style").Value = 1; param.GetParam <bool>("Add indicator").Value = true; param.GetParam <bool>("Add original row numbers").Value = true; IMatrixData[] supplTables = null; IDocumentData[] documents = null; var result = match.ProcessData(new[] { mBase, mdata }, param, ref supplTables, ref documents, BaseTest.CreateProcessInfo()); var indicator = result.GetCategoryColumnAt(0).Select(cats => cats.SingleOrDefault() ?? ""); CollectionAssert.AreEqual(new [] { "+", "+", "", "+" }, indicator); CollectionAssert.AreEqual(new [] { "n1;n2", "n3", "n5", "n4" }, result.GetStringColumn("Id")); CollectionAssert.AreEqual(new [] { "Original row numbers", "Column 1" }, result.MultiNumericColumnNames); CollectionAssert.AreEqual(new [] { 0.0, 1.0 }, result.MultiNumericColumns[0][0]); CollectionAssert.AreEqual(new [] { 2.0 }, result.MultiNumericColumns[0][1]); CollectionAssert.AreEqual(new double[0], result.MultiNumericColumns[0][2]); CollectionAssert.AreEqual(new [] { 3.0 }, result.MultiNumericColumns[0][3]); CollectionAssert.AreEqual(new [] { 0.0, 1.0 }, result.MultiNumericColumns[1][0]); CollectionAssert.AreEqual(new [] { 2.0 }, result.MultiNumericColumns[1][1]); CollectionAssert.AreEqual(new double[0], result.MultiNumericColumns[1][2]); CollectionAssert.AreEqual(new [] { 3.0 }, result.MultiNumericColumns[1][3]); }