public void SaveToFile(string saveFilename, int numberProteinInterfacesRequired = -1) { var rowList = new List <SpreadsheetCell[]> { SpreadsheetColumnHeadersRow() }; rowList.AddRange(SpreadsheetDataRowList(numberProteinInterfacesRequired)); SpreadsheetFileHandler.SaveSpreadsheet(saveFilename, null, rowList); }
public static void SaveUniProtSpreadsheet(string saveFilename, ProgressActionSet progressActionSet) { if (saveFilename == null) { throw new ArgumentNullException(nameof(saveFilename)); } List <SpreadsheetCell[]> spreadsheet = UniProtHeatMapSpreadsheet(); string[] savedFiles = SpreadsheetFileHandler.SaveSpreadsheet(saveFilename, null, spreadsheet); foreach (string savedFile in savedFiles) { ProgressActionSet.Report("Saved: " + savedFile, progressActionSet); } }
/// <summary> /// Save to disk a list of sequences in CSV/TSV format. /// </summary> /// <param name="sequences"></param> /// <param name="filename"></param> public static string[] SaveSequencesAsSpreadsheet(List <ISequence> sequences, string filename, bool tsvFormat = false, bool xlsxFormat = true) { if (sequences == null || sequences.Count == 0) { throw new ArgumentOutOfRangeException(nameof(sequences)); } if (string.IsNullOrWhiteSpace(filename)) { throw new ArgumentOutOfRangeException(nameof(filename)); } if (!tsvFormat && !xlsxFormat) { throw new ArgumentOutOfRangeException(nameof(tsvFormat), tsvFormat, "No file formats were selected"); } var headerColumnsRow = new[] { new SpreadsheetCell("PDB ID"), new SpreadsheetCell("Chain"), new SpreadsheetCell("Sequence"), }; var rowList = new List <SpreadsheetCell[]>(); rowList.Add(headerColumnsRow); foreach (ISequence sequence in sequences) { SequenceIdSplit.SequenceIdToPdbIdAndChainIdResult id = SequenceIdSplit.SequenceIdToPdbIdAndChainId(sequence.ID); var row = new[] { new SpreadsheetCell(id.PdbId), new SpreadsheetCell(id.ChainId), new SpreadsheetCell(sequence.ConvertToString()), }; rowList.Add(row); } string[] filesSavedStrings = SpreadsheetFileHandler.SaveSpreadsheet(filename, null, rowList, null, tsvFormat, xlsxFormat); return(filesSavedStrings); }
public static string[] SaveVectorDistanceMatrixSpreadsheet(string saveFilename, List <VectorProteinInterfaceWhole> vectorProteinInterfaceWholeList, double[,] vectorDistanceMatrix) { if (saveFilename == null) { throw new ArgumentNullException(nameof(saveFilename)); } if (vectorProteinInterfaceWholeList == null) { throw new ArgumentNullException(nameof(vectorProteinInterfaceWholeList)); } if (vectorDistanceMatrix == null) { throw new ArgumentNullException(nameof(vectorDistanceMatrix)); } var spreadsheet = new SpreadsheetCell[vectorDistanceMatrix.GetLength(0) + 1, vectorDistanceMatrix.GetLength(1) + 1]; for (var indexX = 0; indexX < vectorDistanceMatrix.GetLength(0); indexX++) { spreadsheet[0, indexX + 1] = new SpreadsheetCell(vectorProteinInterfaceWholeList[indexX].FullProteinInterfaceId.ToString()); } spreadsheet[0, 0] = new SpreadsheetCell(""); for (var indexY = 0; indexY < vectorDistanceMatrix.GetLength(1); indexY++) { spreadsheet[indexY + 1, 0] = new SpreadsheetCell(vectorProteinInterfaceWholeList[indexY].FullProteinInterfaceId.ToString()); } for (var indexX = 0; indexX < vectorDistanceMatrix.GetLength(0); indexX++) { for (var indexY = 0; indexY < vectorDistanceMatrix.GetLength(1); indexY++) { spreadsheet[indexX + 1, indexY + 1] = new SpreadsheetCell(vectorDistanceMatrix[indexX, indexY]); } } var savedFiles = SpreadsheetFileHandler.SaveSpreadsheet(saveFilename, null, spreadsheet); return(savedFiles); }
/// <summary> /// This method iterates through the provided FASTA files creating separate calculated outputs for each of them. /// </summary> /// <param name="fastaFiles">The FASTA files to process.</param> /// <param name="pdbFilesFolders">The locations where PDB files may be found.</param> /// <param name="spreadsheetSaveFilenameTemplate">A template filename to save the outputs.</param> /// <param name="saveTsv"></param> /// <param name="saveXl"></param> /// <param name="cancellationToken"></param> /// <param name="progressActionSet"></param> /// <param name="fileExistsOptions"></param> public static void MakeHomodimerStatisticsSpreadsheetsAndOutputFiles(decimal maxAtomInterationDistance, string[] fastaFiles, string[] pdbFilesFolders, string spreadsheetSaveFilenameTemplate, bool saveTsv, bool saveXl, CancellationToken cancellationToken, ProgressActionSet progressActionSet = null, FileExistsHandler.FileExistsOptions fileExistsOptions = FileExistsHandler.FileExistsOptions.AppendNumberToFilename) { if (fastaFiles == null || fastaFiles.Length == 0) { throw new ArgumentOutOfRangeException(nameof(fastaFiles)); } if (pdbFilesFolders == null || pdbFilesFolders.Length == 0) { throw new ArgumentOutOfRangeException(nameof(pdbFilesFolders)); } if (!saveTsv && !saveXl) { throw new ArgumentOutOfRangeException(nameof(saveTsv)); } for (int fastaFileNumber = 0; fastaFileNumber < fastaFiles.Length; fastaFileNumber++) { string fastaFilename = fastaFiles[fastaFileNumber]; if (string.IsNullOrWhiteSpace(fastaFilename)) { continue; } ProgressActionSet.Report("Attempting to open file: " + fastaFilename, progressActionSet); List <ISequence> sequences = SequenceFileHandler.LoadSequenceFile(fastaFilename, StaticValues.MolNameProteinAcceptedValues); var pdbIdChainIdList = ProteinDataBankFileOperations.PdbIdChainIdList(sequences); if ((sequences == null) || (sequences.Count == 0)) { ProgressActionSet.Report("Error could not load file: " + fastaFilename, progressActionSet); continue; } ProgressActionSet.Report("Loaded " + sequences.Count + " sequences from file: " + fastaFilename, progressActionSet); List <string> pdbIdList = FilterProteins.SequenceListToPdbIdList(sequences); string appendFilename = FileAndPathMethods.FullPathToFilename(fastaFilename); ProgressActionSet.Report("Creating spreadsheets...", progressActionSet); Stopwatch stopwatch = Stopwatch.StartNew(); var spreadsheetList = MakeHomodimerStatisticsSpreadsheetsList(cancellationToken, maxAtomInterationDistance, pdbFilesFolders, pdbIdList, pdbIdChainIdList, progressActionSet); stopwatch.Stop(); ProgressActionSet.Report("Finished calculating spreadsheet data [Elapsed: " + stopwatch.Elapsed.ToString(@"dd\:hh\:mm\:ss") + "]", progressActionSet); if (cancellationToken.IsCancellationRequested) { //UserProteinInterfaceOperations.ProgressBarReset(progressBar, 0, 100, 0); ////UserProteinInterfaceOperations.LabelEstimatedTimeRemainingUpdate(estimatedTimeRemaining, 0, 1, 1); ProgressActionSet.StartAction(100, progressActionSet); ProgressActionSet.ProgressAction(100, progressActionSet); ProgressActionSet.FinishAction(false, progressActionSet); ProgressActionSet.Report("Cancelled.", progressActionSet); break; } for (int spreadsheetIndex = 0; spreadsheetIndex < spreadsheetList.Count; spreadsheetIndex++) { var spreadsheet = spreadsheetList[spreadsheetIndex]; if (cancellationToken.IsCancellationRequested) { break; } // Remove the first row (which has the name for use in a worksheet title, not currently used) var sheetName = spreadsheet[0][0].CellData; var spreadsheetName = spreadsheet[1][0].CellData; spreadsheet.RemoveAt(0); // "c:/dResults/Results - %date% %time% - %fasta_filename% - %spreadsheet_name%.tsv" string saveFilename = spreadsheetSaveFilenameTemplate; saveFilename = saveFilename.Replace("%spreadsheet_name%", spreadsheetName); saveFilename = saveFilename.Replace("%fasta_filename%", appendFilename); saveFilename = saveFilename.Replace("%date%", DateTime.Now.ToString("yyyy-MM-dd")); saveFilename = saveFilename.Replace("%time%", DateTime.Now.ToString("HH.mm.ss")); saveFilename = saveFilename.Replace("%batch_number%", ""); //string.Empty + (fastaFileNumber + 1)); saveFilename = saveFilename.Replace("%batch_letter%", ""); //SpreadsheetFileHandler.AlphabetLetterRollOver(spreadsheetIndex)); sheetName = sheetName.Replace("%spreadsheet_name%", spreadsheetName); sheetName = sheetName.Replace("%fasta_filename%", appendFilename); sheetName = sheetName.Replace("%date%", DateTime.Now.ToString("yyyy-MM-dd")); sheetName = sheetName.Replace("%time%", DateTime.Now.ToString("HH.mm.ss")); sheetName = sheetName.Replace("%batch_number%", ""); //string.Empty + (fastaFileNumber + 1)); sheetName = sheetName.Replace("%batch_letter%", ""); //SpreadsheetFileHandler.AlphabetLetterRollOver(spreadsheetIndex)); //var tsvFilename = new FileInfo(FileAndPathMethods.RemoveFileExtension(saveFilename) + ".tsv"); var xlFilename = new FileInfo(FileAndPathMethods.RemoveFileExtension(saveFilename) + ".xlsx"); var savedFiles = SpreadsheetFileHandler.SaveSpreadsheet(xlFilename.FullName, new[] { sheetName }, spreadsheet, null, saveTsv, saveXl, fileExistsOptions); ProgressActionSet.ReportFilesSaved(savedFiles, progressActionSet); } } ProgressActionSet.Report("Finished processing files.", progressActionSet); }