public SrmDocument AddFasta(SrmDocument document, ref IdentityPath selectedPath, out int emptyPeptideGroups) { emptyPeptideGroups = 0; var text = TbxFasta.Text; if (text.Length == 0) { return document; } if (!text.StartsWith(">")) // Not L10N { ShowFastaError(new PasteError { Message = Resources.ImportFastaHelper_AddFasta_This_must_start_with____, Column = 0, Length = 1, Line = 0, }); return null; } string[] lines = text.Split('\n'); int lastNameLine = -1; int aa = 0; for (int i = 0; i < lines.Length; i++) { string line = lines[i]; if (line.StartsWith(">")) // Not L10N { if (line.Trim().Length == 1) { ShowFastaError(new PasteError { Message = Resources.ImportFastaHelper_AddFasta_There_is_no_name_for_this_protein, Column = 0, Line = i, Length = 1 }); return null; } if (!CheckSequence(aa, lastNameLine, lines)) return null; lastNameLine = i; aa = 0; continue; } for (int column = 0; column < line.Length; column++) { char c = line[column]; if (AminoAcid.IsExAA(c)) aa++; else if (!Char.IsWhiteSpace(c) && c != '*') { ShowFastaError(new PasteError { Message = String.Format(Resources.ImportFastaHelper_AddFasta___0___is_not_a_capital_letter_that_corresponds_to_an_amino_acid_, c), Column = column, Line = i, Length = 1, }); return null; } } } if (!CheckSequence(aa, lastNameLine, lines)) return null; var importer = new FastaImporter(document, false); try { var reader = new StringReader(TbxFasta.Text); IdentityPath to = selectedPath; IdentityPath firstAdded, nextAdd; // TODO: support long-wait broker document = document.AddPeptideGroups(importer.Import(reader, null, -1), false, to, out firstAdded, out nextAdd); emptyPeptideGroups = importer.EmptyPeptideGroupCount; selectedPath = firstAdded; } catch (Exception exception) { ShowFastaError(new PasteError { Message = Resources.ImportFastaHelper_AddFasta_An_unexpected_error_occurred__ + exception.Message + " (" + exception.GetType() + ")" // Not L10N }); return null; } return document; }
public static SrmDocument ImportFasta(SrmDocument document, string fastaPath, IProgressMonitor monitor, IdentityPath to, out IdentityPath firstAdded, out IdentityPath nextAdd, out int emptyProteinCount) { var importer = new FastaImporter(document, false); using (TextReader reader = File.OpenText(fastaPath)) { document = document.AddPeptideGroups(importer.Import(reader, monitor, Helpers.CountLinesInFile(fastaPath)), false, null, out firstAdded, out nextAdd); } emptyProteinCount = importer.EmptyPeptideGroupCount; return document; }