public void LoadData(IMatrixData matrixData, Parameters parameters, ProcessInfo processInfo) { PerseusLoadFileParam par = (PerseusLoadFileParam) parameters.GetParam("File"); string filename = par.Filename; if (string.IsNullOrEmpty(filename)){ processInfo.ErrString = "Please specify a filename"; return; } if (!File.Exists(filename)){ processInfo.ErrString = "File '" + filename + "' does not exist."; return; } string[] colNames; Dictionary<string, string[]> annotationRows = new Dictionary<string, string[]>(); try{ colNames = TabSep.GetColumnNames(filename, commentPrefix, commentPrefixExceptions, annotationRows); } catch (Exception){ processInfo.ErrString = "Could not open the file '" + filename + "'. It is probably opened by another program."; return; } string[] colDescriptions = null; string[] colTypes = null; bool[] colVisible = null; if (annotationRows.ContainsKey("Description")){ colDescriptions = annotationRows["Description"]; annotationRows.Remove("Description"); } if (annotationRows.ContainsKey("Type")){ colTypes = annotationRows["Type"]; annotationRows.Remove("Type"); } if (annotationRows.ContainsKey("Visible")){ string[] colVis = annotationRows["Visible"]; colVisible = new bool[colVis.Length]; for (int i = 0; i < colVisible.Length; i++){ colVisible[i] = bool.Parse(colVis[i]); } annotationRows.Remove("Visible"); } int[] eInds = par.ExpressionColumnIndices; int[] cInds = par.CategoryColumnIndices; int[] nInds = par.NumericalColumnIndices; int[] tInds = par.TextColumnIndices; int[] mInds = par.MultiNumericalColumnIndices; int[] allInds = ArrayUtils.Concat(new[]{eInds, cInds, nInds, tInds, mInds}); Array.Sort(allInds); for (int i = 0; i < allInds.Length - 1; i++){ if (allInds[i + 1] == allInds[i]){ processInfo.ErrString = "Column '" + colNames[allInds[i]] + "' has been selected multiple times"; return; } } string[] allColNames = ArrayUtils.SubArray(colNames, allInds); Array.Sort(allColNames); for (int i = 0; i < allColNames.Length - 1; i++){ if (allColNames[i + 1].Equals(allColNames[i])){ processInfo.ErrString = "Column name '" + allColNames[i] + "' occurs multiple times."; return; } } LoadData(colNames, colDescriptions, eInds, cInds, nInds, tInds, mInds, filename, matrixData, annotationRows, processInfo.Progress, processInfo.Status); }