/// <summary> /// Initializes a new instance of the <see cref="PrecursorSequenceIonViewModel"/> class. /// </summary> public PrecursorSequenceIonViewModel() { FragmentationSequence = new FragmentationSequence( new Sequence(new List <AminoAcid>()), 1, null, ActivationMethod.HCD); HeavyModifications = new SearchModification[0]; PrecursorViewMode = PrecursorViewMode.Isotopes; LabeledIonViewModels = new LabeledIonViewModel[0]; this.WhenAnyValue(x => x.ChargeViewMode).Subscribe(chargeViewMode => IsotopeViewMode = !chargeViewMode); this.WhenAnyValue(x => x.IsotopeViewMode).Subscribe(isotopeViewMode => ChargeViewMode = !isotopeViewMode); this.WhenAnyValue(x => x.IsotopeViewMode).Subscribe(isotopeViewMode => PrecursorViewMode = isotopeViewMode ? PrecursorViewMode.Isotopes : PrecursorViewMode.Charges); this.WhenAnyValue(x => x.PrecursorViewMode).Subscribe( viewMode => { IsotopeViewMode = viewMode == PrecursorViewMode.Isotopes; ChargeViewMode = viewMode == PrecursorViewMode.Charges; }); this.WhenAnyValue(x => x.PrecursorViewMode, x => x.RelativeIntensityThreshold, x => x.HeavyModifications, x => x.FragmentationSequence) .SelectMany(async _ => await GetLabeledIonViewModels()) .Subscribe(livms => LabeledIonViewModels = livms); }
/// <summary> /// Get a deconvoluted ion given a regular ion. /// </summary> /// <param name="labeledIon">The ion.</param> /// <param name="ionTypeFactory">A Deconvoluted IonTypeFactory</param> /// <returns>A deconvoluted ion.</returns> public static LabeledIonViewModel GetDeconvolutedLabeledIon(LabeledIonViewModel labeledIon, IonTypeFactory ionTypeFactory) { var deconIonTypeName = labeledIon.IonType.Name.Insert(1, "'"); var ionType = ionTypeFactory.GetIonType(deconIonTypeName); var deconLabeledIon = new LabeledIonViewModel( labeledIon.Composition, ionType, labeledIon.IsFragmentIon, null, labeledIon.PrecursorIon, labeledIon.IsChargeState, labeledIon.Index); return(deconLabeledIon); }
/// <summary> /// Get a color of fragment ion. /// </summary> /// <param name="label">LabeledIonViewModel for fragment ion.</param> /// <returns>Color of fragment ion.</returns> public OxyColor GetColor(LabeledIonViewModel label) { OxyColor color; if (label.IsFragmentIon) { var index = Math.Min(label.IonType.Charge - 1, this.fragmentColors[label.IonType.BaseIonType.Symbol].Count - 1); color = this.fragmentColors[label.IonType.BaseIonType.Symbol][index]; } else { if (this.precursorColors.ContainsKey(label.Index)) { color = this.precursorColors[label.Index]; } else { color = label.Index > 0 ? OxyColors.DarkRed : OxyColors.AliceBlue; } } return(color); }