private void ExportImport(ResultsTestDocumentContainer docContainer, string resultsPath) { var optRegression = docContainer.Document.Settings.TransitionSettings.Prediction.CollisionEnergy; int optSteps = optRegression.StepCount * 2 + 1; int optSteps1 = optSteps - 1; // First precursor is below 10 volts CE for 1 step int optSteps2 = optSteps - 3; // Second precursor is below 10 volts CE for 3 steps // First export var exporter = new AbiMassListExporter(docContainer.Document) { OptimizeType = ExportOptimize.CE, OptimizeStepCount = optRegression.StepCount, OptimizeStepSize = optRegression.StepSize }; string tranListPath = Path.ChangeExtension(docContainer.DocumentFilePath, TextUtil.EXT_CSV); exporter.Export(tranListPath); // Make sure line count matches expectations for steps below 10 volts CE Assert.AreEqual(5 * optSteps1 + 5 * optSteps2, File.ReadAllLines(tranListPath).Length); // Then import var resultsUri = new MsDataFilePath(resultsPath); var chromSet = new ChromatogramSet("Optimize", new[] { resultsUri }, Annotations.EMPTY, optRegression); var measuredResults = new MeasuredResults(new[] { chromSet }); docContainer.ChangeMeasuredResults(measuredResults, 2, optSteps1 + optSteps2, 5 * optSteps1 + 5 * optSteps2); // Check expected optimization data with missing values for steps below 10 volts CE int expectedMissingSteps = optSteps - optSteps1; foreach (var nodeGroup in docContainer.Document.MoleculeTransitionGroups) { foreach (var nodeTran in nodeGroup.Transitions) { Assert.IsTrue(nodeTran.HasResults, "No results for transition Mz: {0}", nodeTran.Mz); Assert.IsNotNull(nodeTran.Results[0]); Assert.AreEqual(optSteps, nodeTran.Results[0].Count); for (int i = 0; i < optSteps; i++) { if (i < expectedMissingSteps) { Assert.IsTrue(nodeTran.Results[0][i].IsEmpty); } else { Assert.IsFalse(nodeTran.Results[0][i].IsEmpty); } } } expectedMissingSteps = optSteps - optSteps2; } }
protected override void WriteTransition(TextWriter writer, XmlFastaSequence sequence, XmlPeptide peptide, XmlTransition transition) { char separator = TextUtil.GetCsvSeparator(_cultureInfo); writer.Write(transition.PrecursorMz.ToString(_cultureInfo)); writer.Write(separator); writer.Write(transition.ProductMz.ToString(_cultureInfo)); writer.Write(separator); if (MethodType == ExportMethodType.Standard) { writer.Write(Math.Round(DwellTime, 2).ToString(_cultureInfo)); } else { if (!peptide.PredictedRetentionTime.HasValue) { throw new InvalidOperationException(Resources.XmlThermoMassListExporter_WriteTransition_Attempt_to_write_scheduling_parameters_failed); } writer.Write(peptide.PredictedRetentionTime.Value.ToString(_cultureInfo)); } writer.Write(separator); // Write special ID for ABI software var fastaSequence = new FastaSequence(sequence.Name, sequence.Description, null, peptide.Sequence); var newPeptide = new Peptide(fastaSequence, peptide.Sequence, 0, peptide.Sequence.Length, peptide.MissedCleavages); var nodePep = new PeptideDocNode(newPeptide); string modifiedPepSequence = AbiMassListExporter.GetSequenceWithModsString(nodePep, _document.Settings); // Not L10N; string extPeptideId = string.Format("{0}.{1}.{2}.{3}", // Not L10N sequence.Name, modifiedPepSequence, GetTransitionName(transition), "light"); // Not L10N : file format writer.WriteDsvField(extPeptideId, separator); writer.Write(separator); writer.Write(Math.Round(transition.DeclusteringPotential ?? 0, 1).ToString(_cultureInfo)); writer.Write(separator); writer.Write(Math.Round(transition.CollisionEnergy, 1).ToString(_cultureInfo)); writer.WriteLine(); }
protected override DataObject GetNodeData() { FastaSequence fastaSeq = DocNode.Id as FastaSequence; if (fastaSeq == null) { return(base.GetNodeData()); } DataObject data = new DataObject(); string fastaText = fastaSeq.FastaFileText; // If protein has been renamed in the UI if (!Equals(DocNode.Name, fastaSeq.Name)) { int oldNameLen = (fastaSeq.Name != null ? fastaSeq.Name.Length : 0); fastaText = @">" + DocNode.Name + fastaText.Substring(oldNameLen + 1); } data.SetData(DataFormats.Text, fastaText); var sb = new StringBuilder(); sb.Append(@"<b>").Append(DocNode.Name).Append(@"</b> "); sb.Append(@"<i>"); if (string.IsNullOrEmpty(DocNode.Description)) // CONSIDER bspratt - a more complete set of data here, maybe - accession etc { sb.AppendLine(@"<br/>"); } else { foreach (string desc in Descriptions) { sb.Append(desc).AppendLine(@"<br/>"); } } sb.Append(@"</i>"); using (var peptides = GetChoices(true).GetEnumerator()) { HashSet <DocNode> peptidesChosen = new HashSet <DocNode>(Chosen); PeptideDocNode nodePep = (PeptideDocNode)(peptides.MoveNext() ? peptides.Current : null); bool chosen = (nodePep != null && peptidesChosen.Contains(nodePep)); bool inPeptide = false; string aa = fastaSeq.Sequence; for (int i = 0; i < aa.Length; i++) { if (nodePep != null) { while (nodePep != null && i >= nodePep.Peptide.End) { nodePep = (PeptideDocNode)(peptides.MoveNext() ? peptides.Current : null); if (nodePep != null) { bool chosenNew = peptidesChosen.Contains(nodePep); // Need a new font tag, if the chosen state is changing if (chosenNew != chosen) { sb.Append(@"</font>"); inPeptide = false; } chosen = chosenNew; } } if (nodePep != null && i >= nodePep.Peptide.Begin) { if (!inPeptide) { sb.Append(chosen // ReSharper disable LocalizableElement ? "<font style=\"font-weight: bold; color: blue\">" : "<font style=\"font-weight: bold\">"); // ReSharper restore LocalizableElement inPeptide = true; } } else if (inPeptide) { sb.Append(@"</font>"); inPeptide = false; } } sb.Append(aa[i]); } if (inPeptide) { sb.Append(@"</font>"); } } data.SetData(DataFormats.Html, HtmlFragment.ClipBoardText(sb.ToString())); var transitionListExporter = new AbiMassListExporter(Document, DocNode); transitionListExporter.Export(null); data.SetData(DataFormats.CommaSeparatedValue, transitionListExporter.MemoryOutput[AbstractMassListExporter.MEMORY_KEY_ROOT].ToString()); return(data); }
private static string GetTransitionName(XmlTransition transition) { return(AbiMassListExporter.GetTransitionName(Adduct.FromChargeProtonated(transition.PrecursorCharge), transition.FragmentType.ToString().ToLower() + transition.FragmentOrdinal, Adduct.FromChargeProtonated(transition.ProductCharge))); }
protected override DataObject GetNodeData() { FastaSequence fastaSeq = DocNode.Id as FastaSequence; if (fastaSeq == null) return base.GetNodeData(); DataObject data = new DataObject(); string fastaText = fastaSeq.FastaFileText; // If protein has been renamed in the UI if (!Equals(DocNode.Name, fastaSeq.Name)) { int oldNameLen = (fastaSeq.Name != null ? fastaSeq.Name.Length : 0); fastaText = ">" + DocNode.Name + fastaText.Substring(oldNameLen + 1); // Not L10N } data.SetData(DataFormats.Text, fastaText); var sb = new StringBuilder(); sb.Append("<b>").Append(DocNode.Name).Append("</b> "); // Not L10N sb.Append("<i>"); // Not L10N if (string.IsNullOrEmpty(DocNode.Description)) // CONSIDER bspratt - a more complete set of data here, maybe - accession etc sb.AppendLine("<br/>"); // Not L10N else { foreach (string desc in Descriptions) sb.Append(desc).AppendLine("<br/>"); // Not L10N } sb.Append("</i>"); // Not L10N IEnumerator<DocNode> peptides = GetChoices(true).GetEnumerator(); HashSet<DocNode> peptidesChosen = new HashSet<DocNode>(Chosen); PeptideDocNode nodePep = (PeptideDocNode)(peptides.MoveNext() ? peptides.Current : null); bool chosen = (nodePep != null && peptidesChosen.Contains(nodePep)); bool inPeptide = false; string aa = fastaSeq.Sequence; for (int i = 0; i < aa.Length; i++) { if (nodePep != null) { while (nodePep != null && i >= nodePep.Peptide.End) { nodePep = (PeptideDocNode)(peptides.MoveNext() ? peptides.Current : null); if (nodePep != null) { bool chosenNew = peptidesChosen.Contains(nodePep); // Need a new font tag, if the chosen state is changing if (chosenNew != chosen) { sb.Append("</font>"); // Not L10N inPeptide = false; } chosen = chosenNew; } } if (nodePep != null && i >= nodePep.Peptide.Begin) { if (!inPeptide) { sb.Append(chosen ? "<font style=\"font-weight: bold; color: blue\">" // Not L10N : "<font style=\"font-weight: bold\">"); // Not L10N inPeptide = true; } } else if (inPeptide) { sb.Append("</font>"); // Not L10N inPeptide = false; } } sb.Append(aa[i]); } if (inPeptide) sb.Append("</font>"); // Not L10N data.SetData(DataFormats.Html, HtmlFragment.ClipBoardText(sb.ToString())); var transitionListExporter = new AbiMassListExporter(Document, DocNode); transitionListExporter.Export(null); data.SetData(DataFormats.CommaSeparatedValue, transitionListExporter.MemoryOutput[AbstractMassListExporter.MEMORY_KEY_ROOT].ToString()); return data; }