示例#1
0
        public UnknownFeatureIonInstanceSpectrumChartDataProvider(IEntityDataService entityDataService, IEnumerable <EntityItemData> entityItemData)
        {
            ArgumentHelper.AssertNotNull(entityItemData, "entityItemData");

            m_entityDataService = entityDataService;

            var entityReader            = entityDataService.CreateEntityItemReader();
            var compoundIonInstanceItem = entityReader.Read <UnknownFeatureIonInstanceItem>(entityItemData.First().GetEntityIds());

            // make spectrum header
            m_extraHeaderLine = String.Format(
                "Ion: {0}, m/z: {1:F5}, Area: {2:F0}",
                compoundIonInstanceItem.IonDescription,
                compoundIonInstanceItem.Mass,
                compoundIonInstanceItem.Area);

            // set ion
            m_unknownFeatureIonInstanceItems = new[] { compoundIonInstanceItem };

            // get reader
            entityReader = entityDataService.CreateEntityItemReader();
            m_fileNames  = entityReader.ReadAll <WorkflowInputFile>().ToDictionary(file => file.FileID, file => Path.GetFileNameWithoutExtension(file.FileName));

            // load related chromatographic peak items
            var peakItems = entityReader.ReadFlat <UnknownFeatureIonInstanceItem, ChromatogramPeakItem>(compoundIonInstanceItem).Item2;

            m_chromatogramPeakItemsMap = new Dictionary <object[], IList <ChromatogramPeakItem> >(IdArrayComparer.Instance)
            {
                { compoundIonInstanceItem.GetIDs(), peakItems }
            };

            // load related spectrum tree
            SpectralTreeNodes = LoadSpectralTree();
        }
        public UnknownFeatureIonInstanceSpectrumChartDataProvider(IEntityDataService entityDataService, IEnumerable<EntityItemData> entityItemData)
        {
            ArgumentHelper.AssertNotNull(entityItemData, "entityItemData");

            m_entityDataService = entityDataService;

            var entityReader = entityDataService.CreateEntityItemReader();
            var compoundIonInstanceItem = entityReader.Read<UnknownFeatureIonInstanceItem>(entityItemData.First().GetEntityIds());

            // make spectrum header
            m_extraHeaderLine = String.Format(
                            "Ion: {0}, m/z: {1:F5}, Area: {2:F0}",
                            compoundIonInstanceItem.IonDescription,
                            compoundIonInstanceItem.Mass,
                            compoundIonInstanceItem.Area);

            // set ion
            m_unknownFeatureIonInstanceItems = new[] { compoundIonInstanceItem };

            // get reader
            entityReader = entityDataService.CreateEntityItemReader();
            m_fileNames = entityReader.ReadAll<WorkflowInputFile>().ToDictionary(file => file.FileID, file => Path.GetFileNameWithoutExtension(file.FileName));

            // load related chromatographic peak items
            var peakItems = entityReader.ReadFlat<UnknownFeatureIonInstanceItem, ChromatogramPeakItem>(compoundIonInstanceItem).Item2;
            m_chromatogramPeakItemsMap = new Dictionary<object[], IList<ChromatogramPeakItem>>(IdArrayComparer.Instance) { { compoundIonInstanceItem.GetIDs(), peakItems } };

            // load related spectrum tree
            SpectralTreeNodes = LoadSpectralTree();
        }
示例#3
0
        /// <summary>
        /// Loads spectral tree for current compound.
        /// </summary>
        private IEnumerable <MassSpectrumItemTreeNode> LoadSpectralTree()
        {
            // get spectra for each ion
            if ((m_unknownFeatureIonInstanceItems != null) && (m_unknownFeatureIonInstanceItems.Any()))
            {
                // check path
                IList <string> shortestConnectingPath;
                if (m_entityDataService.TryGetShortestConnection <UnknownFeatureIonInstanceItem, MassSpectrumItem>(out shortestConnectingPath))
                {
                    // init container
                    var spectra = new List <MassSpectrumItem>();

                    // init reader
                    var readerSettings = FlatConnectedReaderSettings.Create(shortestConnectingPath);
                    var entityReader   = m_entityDataService.CreateEntityItemReader();

                    // get spectra for each ion
                    foreach (var ionInstanceItem in m_unknownFeatureIonInstanceItems)
                    {
                        // get spectra
                        var connectedSpectra = entityReader.ReadFlat <UnknownFeatureIonInstanceItem, MassSpectrumItem>(
                            ionInstanceItem, readerSettingsT2: readerSettings);

                        // store spectra
                        if (connectedSpectra != null)
                        {
                            spectra.AddRange(connectedSpectra.Item2);
                        }
                    }

                    // use unique spectra only
                    var uniqueSpectra = spectra.GroupBy(g => g.Spectrum.Header.SpectrumID).Select(s => s.First()).ToList();

                    // build tree
                    return(MassSpectrumItemTreeNode.BuildSpectralTrees(uniqueSpectra));
                }
            }

            return(Enumerable.Empty <MassSpectrumItemTreeNode>());
        }