/// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }