//gene enrichment analysis for both Basic PECA and PECA-N public static IMatrixData GetGOEnr(IMatrixData mdata, string workingDir, int option)//, out string errString) { char separator = '\t'; string filename = Path.Combine(workingDir, @".\Goterms.txt"); IMatrixData mNew = (IMatrixData)mdata.CreateNewInstance(); string name = "GSA"; if (option == 0) { name = name + "_Degradation"; } else if (option == 1) { name = name + "_Synthesis"; } mNew.Clear(); mNew.Name = name; mNew.AltName = name; //update //mNew.AltName = "Gene Set Enrichment Analysis"; //mNew.Description = "Gene Set Enrichment Analysis"; string[] colNames = TabSep.GetColumnNames(filename, 0, PerseusUtils.commentPrefix, PerseusUtils.commentPrefixExceptions, null, separator); string[][] cols = TabSep.GetColumns(colNames, filename, 0, PerseusUtils.commentPrefix, PerseusUtils.commentPrefixExceptions, separator); int nrows = TabSep.GetRowCount(filename); mNew.Values.Init(nrows, 0); mNew.SetAnnotationColumns(new List <string>(colNames), new List <string>(colNames), new List <string[]>(cols), new List <string>(), new List <string>(), new List <string[][]>(), new List <string>(), new List <string>(), new List <double[]>(), new List <string>(), new List <string>(), new List <double[][]>()); //convert the ones not matching regex to numeric string pattern = @"^((?!id|name|members).)*$"; Regex numericReg = new Regex(pattern); List <int> numericList = new List <int>(); for (int i = 0; i < colNames.Length; i++) { if (numericReg.Match(colNames[i]).Success) { numericList.Add(i); } } StringToNumerical(numericList, mNew); return(mNew); }
private static void LoadSplit(IMatrixData mdata, string filename, bool csv) { char separator = csv ? ',' : '\t'; string[] colNames = TabSep.GetColumnNames(filename, 0, PerseusUtils.commentPrefix, PerseusUtils.commentPrefixExceptions, null, separator); string[][] cols = TabSep.GetColumns(colNames, filename, 0, PerseusUtils.commentPrefix, PerseusUtils.commentPrefixExceptions, separator); int nrows = TabSep.GetRowCount(filename); mdata.Values.Init(nrows, 0); mdata.SetAnnotationColumns(new List <string>(colNames), new List <string>(colNames), new List <string[]>(cols), new List <string>(), new List <string>(), new List <string[][]>(), new List <string>(), new List <string>(), new List <double[]>(), new List <string>(), new List <string>(), new List <double[][]>()); mdata.Origin = filename; }
//this function is modified from PerseusPluginLib/Load/UnstructuredTxtUpload.cs LoadSplit function //obtains the output from fdr.exe (so only applicable to PECA CORE and N) public static void GetOutput(IMatrixData mdata, Parameters param, Parameters dataParam, string filename, string geneName, string expSeries1 = "Expression Series 1", int numOfSeries = 2) { char separator = '\t'; //gene name column name is not included in the file so need to replace it //gene name ReplaceFirstLine(filename, geneName); string[] colNames = TabSep.GetColumnNames(filename, 0, PerseusUtils.commentPrefix, PerseusUtils.commentPrefixExceptions, null, separator); string[][] cols = TabSep.GetColumns(colNames, filename, 0, PerseusUtils.commentPrefix, PerseusUtils.commentPrefixExceptions, separator); int nrows = TabSep.GetRowCount(filename); string[] expressionColumnsNames = ArrayUtils.Concat(mdata.ColumnNames, mdata.NumericColumnNames); mdata.Clear(); mdata.Name = "PECA Analysis"; mdata.Values.Init(nrows, 0); mdata.SetAnnotationColumns(new List <string>(colNames), new List <string>(colNames), new List <string[]>(cols), new List <string>(), new List <string>(), new List <string[][]>(), new List <string>(), new List <string>(), new List <double[]>(), new List <string>(), new List <string>(), new List <double[][]>()); //be careful with changes of Number of time points in the future int numOfExpCols = numOfSeries * dataParam.GetParam <int[]>(expSeries1).Value.Length; //file format is structured so that expressions columns are before numeric ones //so convert the numeric ones before expression columns //first column guaranteed to be the name column int[] expList = Enumerable.Range(1, numOfExpCols).ToArray(); int[] numericList = Enumerable.Range(numOfExpCols + 1, colNames.Count() - numOfExpCols - 1).ToArray(); StringToNumerical(numericList, mdata); StringToExpression(expList, mdata); }