public static ExperimentPresetViewModel Create(ExperimentPresets preset) { ExperimentPresetViewModel model = null; switch (preset) { case ExperimentPresets.LipidsPositive: model = new ExperimentPresetViewModel("Small Molecules Positive Mode (Lipids, Metabolites)", 2000, 300, false, InstrumentPresetFactory.Create(InstrumentPresets.LtqOrbitrap)); break; case ExperimentPresets.LipidsNegative: model = new ExperimentPresetViewModel("Small Molecules Negative Mode (Lipids, Metabolites)", 2000, 200, false, InstrumentPresetFactory.Create(InstrumentPresets.LtqOrbitrap)); break; case ExperimentPresets.Peptides: model = new ExperimentPresetViewModel("Bottom Up Proteomics (Peptides)", 10000, 200, false, InstrumentPresetFactory.Create(InstrumentPresets.LtqOrbitrap)); break; } return(model); }
public void TestClustering( string directory, string outputPath, FeatureAlignmentType alignmentType, LcmsFeatureClusteringAlgorithmType clusterType) { var matchPath = string.Format("{0}.txt", outputPath); var errorPath = string.Format("{0}-errors.txt", outputPath); // Loads the supported MultiAlign types var supportedTypes = DatasetLoader.SupportedFileTypes; var extensions = new List <string>(); supportedTypes.ForEach(x => extensions.Add("*" + x.Extension)); // Find our datasets var datasetLoader = new DatasetLoader(); var datasets = datasetLoader.GetValidDatasets(directory, extensions, SearchOption.TopDirectoryOnly); // Setup our alignment options var alignmentOptions = new AlignmentOptions(); var spectralOptions = new SpectralOptions { ComparerType = SpectralComparison.CosineDotProduct, Fdr = .01, IdScore = 1e-09, MzBinSize = .5, MzTolerance = .5, NetTolerance = .1, RequiredPeakCount = 32, SimilarityCutoff = .75, TopIonPercent = .8 }; // Options setup var instrumentOptions = InstrumentPresetFactory.Create(InstrumentPresets.LtqOrbitrap); var featureTolerances = new FeatureTolerances { Mass = instrumentOptions.Mass + 6, Net = instrumentOptions.NetTolerance, DriftTime = instrumentOptions.DriftTimeTolerance }; var featureFindingOptions = new LcmsFeatureFindingOptions(featureTolerances) { MaximumNetRange = .002, MaximumScanRange = 50 }; // Create our algorithms var finder = FeatureFinderFactory.CreateFeatureFinder(FeatureFinderType.TreeBased); var aligner = FeatureAlignerFactory.CreateDatasetAligner(alignmentType, alignmentOptions.LCMSWarpOptions, spectralOptions); var clusterer = ClusterFactory.Create(clusterType); clusterer.Parameters = new FeatureClusterParameters <UMCLight> { Tolerances = featureTolerances }; RegisterProgressNotifier(aligner); RegisterProgressNotifier(finder); RegisterProgressNotifier(clusterer); var lcmsFilters = new LcmsFeatureFilteringOptions { FeatureLengthRangeScans = new FilterRange(50, 300) }; var msFilterOptions = new MsFeatureFilteringOptions { MinimumIntensity = 5000, ChargeRange = new FilterRange(1, 6), ShouldUseChargeFilter = true, ShouldUseDeisotopingFilter = true, ShouldUseIntensityFilter = true }; for (var i = 0; i < 1; i++) { var aligneeDatasets = datasets.Where((t, j) => j != i).ToList(); PerformMultiAlignAnalysis(datasets[0], aligneeDatasets, featureFindingOptions, msFilterOptions, lcmsFilters, spectralOptions, finder, aligner, clusterer, matchPath, errorPath); } }
public void TestPeptideBands(string directory, string matchPath) { // Loads the supported MultiAlign types var supportedTypes = DatasetLoader.SupportedFileTypes; var extensions = new List <string>(); supportedTypes.ForEach(x => extensions.Add("*" + x.Extension)); // Find our datasets var datasetLoader = new DatasetLoader(); var datasets = datasetLoader.GetValidDatasets(directory, extensions, SearchOption.TopDirectoryOnly); // Options setup var instrumentOptions = InstrumentPresetFactory.Create(InstrumentPresets.LtqOrbitrap); var featureTolerances = new FeatureTolerances { Mass = instrumentOptions.Mass, Net = instrumentOptions.NetTolerance, DriftTime = instrumentOptions.DriftTimeTolerance }; var msFilterOptions = new MsFeatureFilteringOptions { MinimumIntensity = 5000, ChargeRange = new FilterRange(1, 6), ShouldUseChargeFilter = true, ShouldUseDeisotopingFilter = true, ShouldUseIntensityFilter = true }; var featureFindingOptions = new LcmsFeatureFindingOptions(featureTolerances) { MaximumNetRange = .002, MaximumScanRange = 50 }; var baselineDataset = datasets[0]; UpdateStatus("Loading baseline features."); var msFeatures = UmcLoaderFactory.LoadMsFeatureData(baselineDataset.Features.Path); msFeatures = LcmsFeatureFilters.FilterMsFeatures(msFeatures, msFilterOptions); var finderFinder = FeatureFinderFactory.CreateFeatureFinder(FeatureFinderType.TreeBased); var peptideOptions = new SpectralOptions { ComparerType = SpectralComparison.CosineDotProduct, Fdr = .05, IdScore = 1e-09, MzBinSize = .5, MzTolerance = .5, NetTolerance = .1, RequiredPeakCount = 32, SimilarityCutoff = .75, TopIonPercent = .8 }; var features = new List <MSFeatureLight>(); // Load the baseline reference set using (var rawProviderX = RawLoaderFactory.CreateFileReader(baselineDataset.RawFile.Path)) { rawProviderX.AddDataFile(baselineDataset.RawFile.Path, 0); UpdateStatus("Creating Baseline LCMS Features."); var baselineFeatures = finderFinder.FindFeatures(msFeatures, featureFindingOptions, rawProviderX); LinkPeptidesToFeatures(baselineDataset.Sequence.Path, baselineFeatures, peptideOptions.Fdr, peptideOptions.IdScore); baselineFeatures.ForEach(x => features.AddRange(x.MsFeatures)); features = features.Where(x => x.HasMsMs()).ToList(); features = features.OrderBy(x => x.Mz).ToList(); var peptideList = new List <MSFeatureLight>(); foreach (var feature in features) { foreach (var spectrum in feature.MSnSpectra) { var peptideFound = false; foreach (var peptide in spectrum.Peptides) { peptideList.Add(feature); peptideFound = true; break; } if (peptideFound) { break; } } } using (var writer = File.CreateText(matchPath)) { writer.WriteLine("Charge\tpmz\tscan\tNET\t"); foreach (var feature in peptideList) { writer.WriteLine("{0}\t{1}\t{2}\t{3}\t", feature.ChargeState, feature.Mz, feature.Scan, feature.Net); } } } }
public void GenerateClusterAlignmentStatistics(string relativeDatabasePath, string relativeName, string name, FeatureAlignmentType alignmentType, LcmsFeatureClusteringAlgorithmType clusterType) { var databasePath = GetPath(relativeDatabasePath); var outputPath = GetOutputPath(relativeName); if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } // Connect to the NHibernate database var providers = DataAccessFactory.CreateDataAccessProviders(databasePath, false); // Setup our alignment options var alignmentOptions = new AlignmentOptions(); var spectralOptions = new SpectralOptions { ComparerType = SpectralComparison.CosineDotProduct, Fdr = .01, IdScore = 1e-09, MzBinSize = .5, MzTolerance = .5, NetTolerance = .1, RequiredPeakCount = 32, SimilarityCutoff = .75, TopIonPercent = .8 }; // Options setup var instrumentOptions = InstrumentPresetFactory.Create(InstrumentPresets.LtqOrbitrap); var featureTolerances = new FeatureTolerances { Mass = instrumentOptions.Mass + 6, Net = instrumentOptions.NetTolerance, DriftTime = instrumentOptions.DriftTimeTolerance }; UpdateStatus("Retrieving all datasets for test."); var datasets = providers.DatasetCache.FindAll(); // Create our algorithms var aligner = FeatureAlignerFactory.CreateDatasetAligner(alignmentType, alignmentOptions.LCMSWarpOptions, spectralOptions); var clusterer = ClusterFactory.Create(clusterType); clusterer.Parameters = new FeatureClusterParameters <UMCLight> { Tolerances = featureTolerances }; RegisterProgressNotifier(aligner); RegisterProgressNotifier(clusterer); for (var i = 0; i < datasets.Count - 1; i++) { var matchPath = string.Format("{0}-{1}-matches.txt", name, i); var errorPath = string.Format("{0}-{1}-errors.txt", name, i); matchPath = Path.Combine(outputPath, matchPath); errorPath = Path.Combine(outputPath, errorPath); var aligneeDataset = datasets[i + 1]; var baselineDataset = datasets[i]; // Load the baseline reference set using (var rawProviderX = new InformedProteomicsReader()) { rawProviderX.AddDataFile(baselineDataset.RawFile.Path, 0); // Load the baseline reference set using (var rawProviderY = new InformedProteomicsReader()) { rawProviderY.AddDataFile(aligneeDataset.RawFile.Path, 0); var baselineFeatures = RetrieveFeatures(baselineDataset.DatasetId, providers); var aligneeFeatures = RetrieveFeatures(aligneeDataset.DatasetId, providers); var providerX = new CachedFeatureSpectraProvider(rawProviderX, baselineFeatures); var providerY = new CachedFeatureSpectraProvider(rawProviderY, aligneeFeatures); AlignDatasets(baselineFeatures, aligneeFeatures, providerX, providerY, aligner, clusterer, matchPath, errorPath); } } } }
public AnalysisOptionsViewModel(MultiAlignAnalysisOptions options) { m_options = options; ClusteringAlgorithms = new ObservableCollection <LcmsFeatureClusteringAlgorithmType>(); AlignmentAlgorithms = new ObservableCollection <FeatureAlignmentType>(); FeatureFindingAlgorithms = new ObservableCollection <FeatureFinderType>(); UpdateOptions(); InstrumentPresets = new ObservableCollection <InstrumentPresetViewModel>(); ExperimentPresets = new ObservableCollection <ExperimentPresetViewModel>(); TimeOptions = new ObservableCollection <string>(); var presets = new Dictionary <string, bool>(); foreach (var preset in ExperimentPresetFactory.Create()) { ExperimentPresets.Add(preset); if (!presets.ContainsKey(preset.InstrumentPreset.Name)) { presets.Add(preset.InstrumentPreset.Name, false); InstrumentPresets.Add(preset.InstrumentPreset); } } foreach (var preset in InstrumentPresetFactory.Create()) { if (!presets.ContainsKey(preset.Name)) { InstrumentPresets.Add(preset); } } TimeOptions.Add("Minutes"); TimeOptions.Add("Scans"); SelectedPreset = InstrumentPresets[0]; SelectedExperimentPreset = ExperimentPresets[0]; TreatAsTimeOrScan = TimeOptions[0]; m_saveDialog = new SaveFileDialog(); m_dialog = new OpenFileDialog { Filter = Resources.MultiAlignParameterFileFilter }; m_saveDialog.Filter = Resources.MultiAlignParameterFileFilter; ShowAdvancedWindowCommand = new BaseCommand(ShowAdvancedWindow); SaveOptionsCommand = new BaseCommand(SaveCurrentParameters); LoadExistingCommand = new BaseCommand(LoadExistingParameters); Enum.GetValues(typeof(LcmsFeatureClusteringAlgorithmType)) .Cast <LcmsFeatureClusteringAlgorithmType>() .ToList() .ForEach(x => ClusteringAlgorithms.Add(x)); Enum.GetValues(typeof(FeatureAlignmentType)) .Cast <FeatureAlignmentType>() .ToList() .ForEach(x => AlignmentAlgorithms.Add(x)); Enum.GetValues(typeof(FeatureFinderType)) .Cast <FeatureFinderType>() .ToList() .ForEach(x => FeatureFindingAlgorithms.Add(x)); }
public void CreateFeatureDatabase(string directoryPath, string databasePath) { var directory = GetPath(directoryPath); databasePath = GetPath(databasePath); // Loads the supported MultiAlign types var supportedTypes = DatasetLoader.SupportedFileTypes; var extensions = new List <string>(); supportedTypes.ForEach(x => extensions.Add("*" + x.Extension)); // Find our datasets var datasetLoader = new DatasetLoader(); var datasets = datasetLoader.GetValidDatasets(directory, extensions, SearchOption.TopDirectoryOnly); // Options setup var instrumentOptions = InstrumentPresetFactory.Create(InstrumentPresets.LtqOrbitrap); var featureTolerances = new FeatureTolerances { Mass = instrumentOptions.Mass + 6, Net = instrumentOptions.NetTolerance, DriftTime = instrumentOptions.DriftTimeTolerance }; var featureFindingOptions = new LcmsFeatureFindingOptions(featureTolerances) { MaximumNetRange = .002, MaximumScanRange = 50 }; var lcmsFilters = new LcmsFeatureFilteringOptions { FeatureLengthRangeScans = new FilterRange(50, 300) }; var msFilterOptions = new MsFeatureFilteringOptions { MinimumIntensity = 5000, ChargeRange = new FilterRange(1, 6), ShouldUseChargeFilter = true, ShouldUseDeisotopingFilter = true, ShouldUseIntensityFilter = true }; var spectralOptions = new SpectralOptions { ComparerType = SpectralComparison.CosineDotProduct, Fdr = .01, IdScore = 1e-09, MzBinSize = .5, MzTolerance = .5, NetTolerance = .1, RequiredPeakCount = 32, SimilarityCutoff = .75, TopIonPercent = .8 }; var finder = FeatureFinderFactory.CreateFeatureFinder(FeatureFinderType.TreeBased); NHibernateUtil.CreateDatabase(databasePath); // Synchronization and IO for serializing all data to the database. var providers = DataAccessFactory.CreateDataAccessProviders(databasePath, true); var cache = new FeatureLoader { Providers = providers }; var datasetId = 0; foreach (var dataset in datasets) { dataset.DatasetId = datasetId++; var features = FindFeatures(dataset, featureFindingOptions, msFilterOptions, lcmsFilters, spectralOptions, finder); cache.CacheFeatures(features); } providers.DatasetCache.AddAll(datasets); }