/// <summary> /// Load the data from the dataset information objects to the cache at the analysis Path /// </summary> private void PerformDataLoadAndAlignment(AnalysisConfig config) { UmcLoaderFactory.Status += UMCLoaderFactory_Status; UpdateStatus("Loading data."); var analysisOptions = config.Analysis.Options; var datasets = config.Analysis.MetaData.Datasets.ToList(); var lcmsFilterOptions = analysisOptions.LcmsFilteringOptions; var msFilterOptions = analysisOptions.MsFilteringOptions; var baselineDataset = config.Analysis.MetaData.BaselineDataset; var baselineFeatures = LoadBaselineData(baselineDataset, msFilterOptions, analysisOptions.LcmsFindingOptions, lcmsFilterOptions, config.Analysis.DataProviders, config.Analysis.MassTagDatabase, config.Analysis.Options.AlignmentOptions.IsAlignmentBaselineAMasstagDB); var alignmentData = new AlignmentDAOHibernate(); alignmentData.ClearAll(); var providers = config.Analysis.DataProviders; var featureCache = new FeatureLoader { Providers = providers }; RegisterProgressNotifier(featureCache); MassTagDatabase database = null; if (config.Analysis.MassTagDatabase != null) database = new MassTagDatabase(config.Analysis.MassTagDatabase, config.Analysis.Options.AlignmentOptions.MassTagObservationCount); SingletonDataProviders.Providers = config.Analysis.DataProviders; foreach (var dataset in datasets) { if (dataset.IsBaseline) continue; var features = featureCache.LoadDataset(dataset, analysisOptions.MsFilteringOptions, analysisOptions.LcmsFindingOptions, analysisOptions.LcmsFilteringOptions); features = AlignDataset(features, baselineFeatures, database, dataset, baselineDataset); featureCache.CacheFeatures(features); } UmcLoaderFactory.Status -= UMCLoaderFactory_Status; }
/// <summary> /// Loads baseline data for alignment. /// </summary> private IList<UMCLight> LoadBaselineData(DatasetInformation baselineInfo, MsFeatureFilteringOptions msFilterOptions, LcmsFeatureFindingOptions lcmsFindingOptions, LcmsFeatureFilteringOptions lcmsFilterOptions, FeatureDataAccessProviders dataProviders, MassTagDatabase database, bool shouldUseMassTagDbAsBaseline) { IList<UMCLight> baselineFeatures = null; UpdateStatus("Loading baseline features."); if (!shouldUseMassTagDbAsBaseline) { if (baselineInfo == null) { throw new Exception("The baseline dataset was never set."); } var cache = new FeatureLoader { Providers = dataProviders }; RegisterProgressNotifier(cache); UpdateStatus("Loading baseline features from " + baselineInfo.DatasetName + " for alignment."); baselineFeatures = cache.LoadDataset(baselineInfo, msFilterOptions, lcmsFindingOptions, lcmsFilterOptions); cache.CacheFeatures(baselineFeatures); if (BaselineFeaturesLoaded != null) { BaselineFeaturesLoaded(this, new BaselineFeaturesLoadedEventArgs(baselineInfo, baselineFeatures.ToList())); } DeRegisterProgressNotifier(cache); } else { if (database == null) throw new NullReferenceException( "The mass tag database has to have data in it if it's being used for drift time alignment."); UpdateStatus("Setting baseline features for post drift time alignment from mass tag database."); var tags = FeatureDataConverters.ConvertToUMC(database.MassTags); if (BaselineFeaturesLoaded == null) return tags; if (tags != null) BaselineFeaturesLoaded(this, new BaselineFeaturesLoadedEventArgs(null, tags.ToList(), database)); } return baselineFeatures; }