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(); }
/// <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>()); }