本文整理汇总了C#中SrmDocument.AddPeptideGroups方法的典型用法代码示例。如果您正苦于以下问题:C# SrmDocument.AddPeptideGroups方法的具体用法?C# SrmDocument.AddPeptideGroups怎么用?C# SrmDocument.AddPeptideGroups使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SrmDocument
的用法示例。
在下文中一共展示了SrmDocument.AddPeptideGroups方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddFasta
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;
}
示例2: AddTransitionList
//.........这里部分代码省略.........
}
if (!tranGroupFound)
{
var node = GetMoleculeTransitionGroup(document, row, pep.Peptide, requireProductInfo);
if (node == null)
return null;
document =
(SrmDocument)
document.Add(pepPath, node);
}
break;
}
}
if (!pepFound)
{
var node = GetMoleculePeptide(document, row, pepGroup.PeptideGroup, requireProductInfo);
if (node == null)
return null;
document =
(SrmDocument)
document.Add(pathPepGroup,node);
}
break;
}
}
if (!pepGroupFound)
{
var node = GetMoleculePeptideGroup(document, row, requireProductInfo);
if (node == null)
return null;
IdentityPath first;
IdentityPath next;
document =
document.AddPeptideGroups(new[] {node}, false,null
, out first,out next);
}
}
}
else
{
var backgroundProteome = GetBackgroundProteome(document);
var sbTransitionList = new StringBuilder();
var dictNameSeq = new Dictionary<string, FastaSequence>();
// Add all existing FASTA sequences in the document to the name to seq dictionary
// Including named peptide lists would cause the import code to give matching names
// in this list new names (e.g. with 1, 2, 3 appended). In this code, the names
// are intended to be merged.
foreach (var nodePepGroup in document.Children.Cast<PeptideGroupDocNode>().Where(n => !n.IsPeptideList))
{
if (!dictNameSeq.ContainsKey(nodePepGroup.Name))
dictNameSeq.Add(nodePepGroup.Name, (FastaSequence) nodePepGroup.PeptideGroup);
}
// Check for simple errors and build strings for import
for (int i = 0; i < gridViewTransitionList.Rows.Count; i++)
{
var row = gridViewTransitionList.Rows[i];
var peptideSequence = Convert.ToString(row.Cells[colTransitionPeptide.Index].Value);
var proteinName = Convert.ToString(row.Cells[colTransitionProteinName.Index].Value);
var precursorMzText = Convert.ToString(row.Cells[colTransitionPrecursorMz.Index].Value);
var productMzText = Convert.ToString(row.Cells[colTransitionProductMz.Index].Value);
if (string.IsNullOrEmpty(peptideSequence) && string.IsNullOrEmpty(proteinName))
{
continue;
}
if (string.IsNullOrEmpty(peptideSequence))
示例3: TestModificationMatcher
public void TestModificationMatcher()
{
InitSeqs();
var carbC = StaticModList.GetDefaultsOn()[0];
// Test exception thrown if unable to match - mass.
UpdateMatcherFail(STR_FAIL_MASS);
UpdateMatcherFail(STR_FAIL_NOT_A_NUMBER);
// Test exception thrown if unable to match - name.
UpdateMatcherFail(STR_FAIL_NAME);
// Can't match empty modifications.
UpdateMatcherFail(STR_FAIL_EMPTY_MOD);
UpdateMatcherFail(STR_FAIL_EMPTY_MOD2);
// Can't match double modifications.
UpdateMatcherFail(STR_FAIL_DOUBLE_MOD);
// Test exception thrown if unimod not specified correctly
UpdateMatcherFail(STR_FAIL_UNIMOD);
UpdateMatcherFail(STR_UNKNOWN_UNIMOD);
// Can't phosphorylate tryptophan
UpdateMatcherFail(STR_FAIL_WRONG_AA_UNIMOD);
// Can't put C-terminal modification in middle of peptide
UpdateMatcherFail(STR_FAIL_UNIMOD_TERMINUS);
// Test mods in UniMod match correctly.
UpdateMatcher(StaticModList.GetDefaultsOn(), HeavyModList.GetDefaultsOn(), null, null);
// A sequence with no modifications should not be explicitly modified.
Assert.IsFalse(MATCHER.GetModifiedNode(STR_NO_MODS).HasExplicitMods);
var nodeCysOxi = MATCHER.GetModifiedNode(STR_CYS_AND_OXI);
Assert.IsTrue(nodeCysOxi.HasExplicitMods);
Assert.IsFalse(nodeCysOxi.ExplicitMods.HasHeavyModifications);
// Modifications should match by name.
Assert.IsTrue(MATCHER.GetModifiedNode(STR_MOD_BY_NAME).ExplicitMods.StaticModifications.Contains(mod =>
Equals(mod.Modification.Name, "Phospho (ST)")));
// Test can find terminal modification
Assert.IsTrue(MATCHER.GetModifiedNode(STR_TERM_ONLY).ExplicitMods.HeavyModifications.Contains(mod =>
mod.Modification.EquivalentAll(UniMod.GetModification("Label:13C(6) (C-term R)", false))));
// Test can find matches on terminus that are not terminal
Assert.IsTrue(MATCHER.GetModifiedNode(STR_MOD_BY_NAME).ExplicitMods.StaticModifications.Contains(mod =>
mod.Modification.Terminus == null));
// Test matching negative masses
Assert.IsTrue(MATCHER.GetModifiedNode(STR_AMMONIA_LOSS).ExplicitMods.StaticModifications.Contains(mod =>
mod.Modification.EquivalentAll(UniMod.GetModification("Ammonia-loss (N-term C)", true))));
// General and specific
// If all AAs modified, try for most general modification.
Assert.IsTrue(MATCHER.GetModifiedNode(STR_HEAVY_15)
.ExplicitMods.HeavyModifications.Contains(mod => mod.Modification.Equivalent(LABEL15_N)));
// Updating the settings.
// Peptide settings should change to include new mods.
var docNew = new SrmDocument(SrmSettingsList.GetDefault());
IdentityPath firstAdded;
IdentityPath nextAdded;
docNew = docNew.AddPeptideGroups(new[] { new PeptideGroupDocNode(new PeptideGroup(), "PepGroup1", "",
new[] {MATCHER.GetModifiedNode(STR_MOD_BY_NAME)})}, true, null, out firstAdded, out nextAdded);
var pepSetNew = MATCHER.GetDocModifications(docNew);
Assert.IsTrue(pepSetNew.StaticModifications.Contains(UniMod.GetModification("Phospho (ST)", true).ChangeExplicit(true)));
// Update the document to the new settings.
var pepSetNew1 = pepSetNew;
var settingsNew2 = docNew.Settings.ChangePeptideModifications(mods => pepSetNew1);
var lightGlobalMods = new MappedList<string, StaticMod>();
lightGlobalMods.AddRange(settingsNew2.PeptideSettings.Modifications.StaticModifications);
var heavyGlobalMods = new MappedList<string, StaticMod>();
heavyGlobalMods.AddRange(settingsNew2.PeptideSettings.Modifications.HeavyModifications);
// Match again. Test FoundMatches string should now be empty.
MATCHER.CreateMatches(docNew.Settings.ChangePeptideModifications(mods => pepSetNew1),
new List<string> { STR_MOD_BY_NAME }, lightGlobalMods, heavyGlobalMods);
Assert.IsTrue(string.IsNullOrEmpty(MATCHER.FoundMatches));
// Adding 15N to the settings.
UpdateMatcher(new[] { carbC }, new[] { LABEL15_N }, null, null);
// Test sequences with only explicit heavy mods should not have explicit light mods
Assert.IsNull(MATCHER.GetModifiedNode(STR_HEAVY_ONLY).ExplicitMods.StaticModifications);
// Test sequences with only explicit light mods should not have explicit heavy mods
Assert.IsFalse(MATCHER.GetModifiedNode(STR_LIGHT_ONLY).ExplicitMods.HasHeavyModifications);
// Test global mods take precendence over UniMod
UpdateMatcher(new[] { carbC }, null, new[] { OXIDATION_M_GLOBAL }, new[] { LABEL15_N });
Assert.IsTrue(MATCHER.GetModifiedNode(STR_CYS_AND_OXI).ExplicitMods.StaticModifications
.Contains(mod => Equals(mod.Modification, OXIDATION_M_GLOBAL)));
// Test document mods take precendence over UniMod
UpdateMatcher(new[] { carbC, METHIONINE_OXIDATION }, null, new[] { OXIDATION_M_GLOBAL }, new[] { LABEL15_N });
Assert.IsFalse(MATCHER.GetModifiedNode(STR_CYS_AND_OXI).HasExplicitMods);
// Test exception thrown if match doesn't make sense - wrong AA.
UpdateMatcherFail(STR_FAIL_OX_ON_D);
// Test exception thrown if match doesn't make sense - wrong terminus.
_seqs.Add(STR_FAIL_OX_TERM);
AssertEx.ThrowsException<FormatException>(() => UpdateMatcher(new[] {OXIDATION_M_C_TERM}, null, null, null));
_seqs.Remove(STR_FAIL_OX_TERM);
// Heavy 15N - All AAs.
UpdateMatcher(new[] { carbC, METHIONINE_OXIDATION }, new[] {LABEL15_N}, null, null);
// Node should be created from document settings if possible.
Assert.IsNull(MATCHER.GetModifiedNode(STR_HEAVY_15).ExplicitMods);
// Heavy 15N - specific AA.
// If only a specific AA is modified, there must be an explicit mod.
//.........这里部分代码省略.........
示例4: AddProteomePeptides
//.........这里部分代码省略.........
bool foundInList = false;
if (!foundInDoc)
{
// If the protein is not already in the document,
// check to see if we have already created a PeptideGroupDocNode for it.
if (dictPeptideGroupsNew.TryGetValue(name, out peptideGroupDocNode))
foundInList = true;
// If not, create a new PeptideGroupDocNode.
else
{
List<ProteinMetadata> alternativeProteins = new List<ProteinMetadata>(protein.Alternatives);
peptideGroupDocNode = new PeptideGroupDocNode(
new FastaSequence(name, protein.ProteinMetadata.Description, alternativeProteins, protein.Sequence),
null, null, new PeptideDocNode[0]);
}
}
// Create a new peptide that matches this protein.
var fastaSequence = peptideGroupDocNode.PeptideGroup as FastaSequence;
var peptideSequence = pepMatch.NodePep.Peptide.Sequence;
// ReSharper disable PossibleNullReferenceException
var begin = fastaSequence.Sequence.IndexOf(peptideSequence, StringComparison.Ordinal);
// ReSharper restore PossibleNullReferenceException
// Create a new PeptideDocNode using this peptide.
var newPeptide = new Peptide(fastaSequence, peptideSequence, begin, begin + peptideSequence.Length,
Settings.PeptideSettings.Enzyme.CountCleavagePoints(peptideSequence));
// Make sure we keep the same children.
PeptideMatch match = pepMatch;
var newNodePep = ((PeptideDocNode) new PeptideDocNode(newPeptide, pepMatch.NodePep.ExplicitMods, pepMatch.NodePep.ExplicitRetentionTime)
.ChangeChildren(pepMatch.NodePep.Children.ToList().ConvertAll(nodeGroup =>
{
// Create copies of the children in order to prevent transition groups with the same
// global indices.
var nodeTranGroup = (TransitionGroupDocNode) nodeGroup;
if(match.Proteins != null && match.Proteins.Count() > 1)
{
nodeTranGroup = (TransitionGroupDocNode) nodeTranGroup.CopyId();
nodeTranGroup = (TransitionGroupDocNode) nodeTranGroup.ChangeChildren(
nodeTranGroup.Children.ToList().ConvertAll(nodeTran => nodeTran.CopyId()));
}
return (DocNode) nodeTranGroup;
})).ChangeAutoManageChildren(false)).ChangeSettings(document.Settings, SrmSettingsDiff.ALL);
// If this PeptideDocNode is already a child of the PeptideGroupDocNode,
// ignore it.
if (peptideGroupDocNode.Children.Contains(nodePep => Equals(((PeptideDocNode) nodePep).Key, newNodePep.Key)))
{
Console.WriteLine(Resources.ViewLibraryPepMatching_AddProteomePeptides_Skipping__0__already_present, newNodePep.Peptide.Sequence);
continue;
}
// Otherwise, add it to the list of children for the PeptideGroupNode.
var newChildren = peptideGroupDocNode.Children.Cast<PeptideDocNode>().ToList();
newChildren.Add(newNodePep);
newChildren.Sort(FastaSequence.ComparePeptides);
// Store modified proteins by global index in a HashSet for second pass.
var newPeptideGroupDocNode = peptideGroupDocNode.ChangeChildren(newChildren.Cast<DocNode>().ToArray())
.ChangeAutoManageChildren(false);
// If the protein was already in the document, replace with the new PeptideGroupDocNode.
if (foundInDoc)
document = (SrmDocument)document.ReplaceChild(newPeptideGroupDocNode);
// Otherwise, update the list of new PeptideGroupDocNodes to add.
else
{
if (foundInList)
dictPeptideGroupsNew.Remove(peptideGroupDocNode.Name);
dictPeptideGroupsNew.Add(peptideGroupDocNode.Name, (PeptideGroupDocNode) newPeptideGroupDocNode);
}
// If we are only adding a single node, select it.
if (PeptideMatches.Count == 1)
selectedPath = new IdentityPath(new[] {peptideGroupDocNode.Id, newNodePep.Peptide});
// If the user only wants to add the first protein found,
// we break the foreach loop after peptide has been added to its first protein.)
if (FilterMultipleProteinMatches == BackgroundProteome.DuplicateProteinsFilter.FirstOccurence)
break;
}
}
if (dictPeptideGroupsNew.Count == 0)
{
return document;
}
// Sort the peptides.
var nodePepGroupsSortedChildren = new List<PeptideGroupDocNode>();
foreach(PeptideGroupDocNode nodePepGroup in dictPeptideGroupsNew.Values)
{
var newChildren = nodePepGroup.Children.ToList();
// Have to cast all children to PeptideDocNodes in order to sort.
var newChildrenNodePeps = newChildren.Cast<PeptideDocNode>().ToList();
newChildrenNodePeps.Sort(FastaSequence.ComparePeptides);
nodePepGroupsSortedChildren.Add((PeptideGroupDocNode)
nodePepGroup.ChangeChildren(newChildrenNodePeps.Cast<DocNode>().ToArray()));
}
// Sort the proteins.
nodePepGroupsSortedChildren.Sort((node1, node2) => Comparer<string>.Default.Compare(node1.Name, node2.Name));
IdentityPath selPathTemp = selectedPath, nextAdd;
document = document.AddPeptideGroups(nodePepGroupsSortedChildren, false,
toPath, out selectedPath, out nextAdd);
selectedPath = PeptideMatches.Count == 1 ? selPathTemp : selectedPath;
return document;
}
示例5: AddPeptidesToLibraryGroup
private static SrmDocument AddPeptidesToLibraryGroup(SrmDocument document,
ICollection<PeptideMatch> listMatches,
ILongWaitBroker broker,
IdentityPath toPath,
out IdentityPath selectedPath)
{
// Get starting progress values
int startPercent = (broker != null ? broker.ProgressValue : 0);
int processedPercent = 0;
int processedCount = 0;
int totalMatches = listMatches.Count;
var listPeptides = new List<PeptideDocNode>();
foreach (var match in listMatches)
{
// Show progress, if in a long wait
if (broker != null)
{
if (broker.IsCanceled)
{
selectedPath = null;
return document;
}
processedCount++;
int processPercentNow = processedCount * (100 - startPercent) / totalMatches;
if (processedPercent != processPercentNow)
{
processedPercent = processPercentNow;
broker.ProgressValue = startPercent + processedPercent;
}
}
listPeptides.Add(match.NodePep.ChangeSettings(document.Settings, SrmSettingsDiff.ALL));
}
bool hasVariable =
listPeptides.Contains(nodePep => nodePep.HasExplicitMods && nodePep.ExplicitMods.IsVariableStaticMods);
// Use existing group by this name, if present.
var nodePepGroupNew = FindPeptideGroupDocNode(document, Resources.ViewLibraryPepMatching_AddPeptidesToLibraryGroup_Library_Peptides);
if(nodePepGroupNew != null)
{
var newChildren = nodePepGroupNew.Children.ToList();
newChildren.AddRange(listPeptides.ConvertAll(nodePep => (DocNode) nodePep));
selectedPath = (listPeptides.Count == 1 ? new IdentityPath(nodePepGroupNew.Id, listPeptides[0].Id) : toPath);
nodePepGroupNew = (PeptideGroupDocNode) nodePepGroupNew.ChangeChildren(newChildren);
if (hasVariable)
nodePepGroupNew = (PeptideGroupDocNode) nodePepGroupNew.ChangeAutoManageChildren(false);
return (SrmDocument) document.ReplaceChild(nodePepGroupNew);
}
else
{
nodePepGroupNew = new PeptideGroupDocNode(new PeptideGroup(),
Resources.ViewLibraryPepMatching_AddPeptidesToLibraryGroup_Library_Peptides,
string.Empty, listPeptides.ToArray());
if (hasVariable)
nodePepGroupNew = (PeptideGroupDocNode) nodePepGroupNew.ChangeAutoManageChildren(false);
IdentityPath nextAdd;
document = document.AddPeptideGroups(new[] { nodePepGroupNew }, true,
toPath, out selectedPath, out nextAdd);
selectedPath = new IdentityPath(selectedPath, nodePepGroupNew.Children[0].Id);
return document;
}
}
示例6: ImportFasta
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;
}