Esempio n. 1
0
        public void TestLoadDatabase(string path, int expectedNumberOfTargets)
        {
            var reader          = new SqLiteTargetDatabaseReader();
            var database        = reader.ReadDb(GetTestSuiteDataPath(path));
            var numberOfTargets = database.ConsensusTargets.Count;

            Assert.AreEqual(expectedNumberOfTargets, numberOfTargets);
        }
        public void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            //mAbortRequested = false;

            var targetDatabaseReader = new SqLiteTargetDatabaseReader();

            //Database = targetDatabaseReader.Read(DatabaseFileName);
        }
Esempio n. 3
0
 /// <summary>
 /// Load an existing MTDB database into a TargetDatabase
 /// </summary>
 /// <param name="path">Path to MTDB file</param>
 /// <returns></returns>
 public static TargetDatabase LoadDB(string path)
 {
     if (File.Exists(path) && Path.GetExtension(path) == ".mtdb")
     {
         var mtdbReader = new SqLiteTargetDatabaseReader();
         return(mtdbReader.ReadDb(path));
     }
     return(new TargetDatabase());
 }
        private void ReadDatabase()
        {
            var dlg = new OpenFileDialog
            {
                Filter           = "Mass Tag Database (*.mtdb)|*.mtdb|AllFile (*.*)|*.*",
                Title            = "Load MTDB from file",
                InitialDirectory = RestoreDirectory,
                RestoreDirectory = true
            };

            if (dlg.ShowDialog() == true)
            {
                var reader = new SqLiteTargetDatabaseReader();
                //AnalysisJobViewModel.Database = reader.Read(dlg.FileName);
            }
        }
        private void ProcessAnalysisJob(object param)
        {
            // Insert database save location here
            var saveDatabaseDialog = new SaveFileDialog();

            if (Options.DatabaseType != DatabaseType.NotSaved)
            {
                if (RestoreDirectory == null)
                {
                    RestoreDirectory = "C:\\";
                }
                saveDatabaseDialog.InitialDirectory = RestoreDirectory;
                saveDatabaseDialog.RestoreDirectory = true;

                if (Options.DatabaseType == DatabaseType.SQLite)
                {
                    saveDatabaseDialog.Filter = "Mass Tag Database (*.mtdb)|*.mtdb|All Files (*.*)|*.*";
                    saveDatabaseDialog.Title  = "Save to MTDB";
                }
                else
                {
                    saveDatabaseDialog.Filter = "Access Database (*.mdb)|*.mdb|All Files (*.*)|*.*";
                    saveDatabaseDialog.Title  = "Save to Access Database";
                }
                saveDatabaseDialog.ShowDialog();
                if (saveDatabaseDialog.FileName != "")
                {
                    RestoreDirectory  = Path.GetDirectoryName(saveDatabaseDialog.FileName);
                    SavedDatabasePath = saveDatabaseDialog.FileName;
                }
            }



            DateTime start  = DateTime.Now;
            var      result = ProcessAnalysisTargets();

            OnAnalysisJobProcessed(new MtdbResultChangedEventArgs(result));
            DateTime end = DateTime.Now;

            Console.WriteLine("Analysis processed after " + (end - start));

            if (File.Exists(SavedDatabasePath))
            {
                ITargetDatabaseReader     reader;
                IEnumerable <LcmsDataSet> databaseDatasets = null;
                var loaded = false;
                MessageBoxResult errorResult = MessageBoxResult.OK;
                if (SavedDatabasePath.EndsWith("mtdb"))
                {
                    reader = new SqLiteTargetDatabaseReader();
                }
                else
                {
                    reader = new AccessTargetDatabaseReader();
                }
                try
                {
                    databaseDatasets = reader.Read(SavedDatabasePath);
                    loaded           = true;
                }
                catch (Exception)
                {
                    errorResult = MessageBox.Show(string.Format("{0} does not contain valid data to be imported into MTDBCreator", SavedDatabasePath),
                                                  "Error loading file", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation);
                }

                if (loaded)
                {
                    foreach (var dataset in databaseDatasets)
                    {
                        var exists        = false;
                        var priorAnalysis = new AnalysisJobItem(dataset.Name, dataset.Tool);
                        priorAnalysis.DataSet = dataset;
                        foreach (var item in AnalysisJobItems)
                        {
                            if (item.Title == priorAnalysis.Title)
                            {
                                item.DataSet = dataset;
                                exists       = true;
                            }
                        }
                        if (!exists)
                        {
                            AnalysisJobItems.Add(priorAnalysis);
                        }
                    }
                }
                else if (errorResult == MessageBoxResult.Cancel)
                {
                    // User cancelled processing
                    var squelch = 1;
                    squelch++;
                    return;
                }
            }

            if (result != null && param == null)
            {
                DateTime procStart = DateTime.Now;
                result = ProcessAnalysisDatabase();

                if (result == null && BackgroundWorkProcessHelper.MostRecentResult != null)
                {
                    // This condition will be true if MultithreadingEnabled = false
                    result = BackgroundWorkProcessHelper.MostRecentResult;

                    if (Database == null && result is TargetDatabase)
                    {
                        Database = (TargetDatabase)result;
                    }
                }

                OnAnalysisJobProcessed(new MtdbResultChangedEventArgs(result));
                end = DateTime.Now;
                Console.WriteLine("Alignment processed after " + (end - start) + " total");
                Console.WriteLine("Alignment took " + (end - procStart));

                if (result != null && saveDatabaseDialog.FileName != "")
                {
                    DateTime saveStart = DateTime.Now;

                    SaveAnalysisDatabase(saveDatabaseDialog.FileName);
                    IsDatabaseSaved = true;
                    end             = DateTime.Now;
                    Console.WriteLine("Database Save took " + (end - saveStart));
                }
            }
        }
        public MassTagDatabase LoadDatabase()
        {
            var database = new MassTagDatabase();

            //Implement the loading / reading of the MTDB Framework objects.

            var reader          = new SqLiteTargetDatabaseReader();
            var mtdbDatabase    = reader.ReadDb(m_path);
            var massTags        = new List<MassTagLight>();

            // Mapping objects to create unique proteins and for the mass tag database to load only those proteins for
            // the given consensus targets/mass tags.
            var proteinMap          = new Dictionary<int, Protein>();
            var massTagProteinMap   = new Dictionary<int, List<Protein>>();

            if (mtdbDatabase == null)
                return database;

            foreach (var target in mtdbDatabase.ConsensusTargets)
            {
                // Copy the consensus data into a mass tag light.
                var tag = new MassTagLight
                {
                    Id = target.Id,
                    MassMonoisotopic = target.TheoreticalMonoIsotopicMass,
                    NetAverage = target.AverageNet,
                    NetPredicted = target.PredictedNet,
                    PeptideSequence = target.Sequence,
                    NetStandardDeviation = target.StdevNet
                };

                // Here we create unique proteins for the mass tag copying information from the consensus target proteins.
                var proteinsForMassTag = new List<Protein>();
                foreach (var targetProtein in target.Proteins)
                {
                    if (!proteinMap.ContainsKey(targetProtein.Id))
                    {
                        var newProtein = new Protein
                        {
                            Id = targetProtein.Id,
                            Name = targetProtein.ProteinName,
                            ResidueStartPosition = targetProtein.ResidueStart,
                            ResidueEndPosition = targetProtein.ResidueEnd
                        };
                        //TODO: Do something about the cleavage state and terminus state of a protein loaded from MTDBCreator database.
                        //protein.CleavageState = ??
                        //protein.TerminusState = ??

                        proteinMap.Add(newProtein.Id, newProtein);
                    }

                    var protein = proteinMap[targetProtein.Id];
                    proteinsForMassTag.Add(protein);
                }

                massTagProteinMap.Add(tag.Id, proteinsForMassTag);
                massTags.Add(tag);
            }

            database.AddMassTagsAndProteins(massTags, massTagProteinMap);
            return database;
        }
Esempio n. 7
0
        /// <summary>
        /// Create a MTDB with the given files
        /// </summary>
        /// <param name="paths">Paths to the files to process</param>
        /// <param name="dbFileName">Name of MTDB to create</param>
        /// <returns></returns>
        public static TargetDatabase CreateDB(List <string> paths, string dbFileName)
        {
            var options           = new Options();
            var analysisProcessor = new AnalysisJobProcessor(options);
            var mtdbProcessor     = new MtdbProcessor(options);
            var bWorker           = new BackgroundWorker();
            var writer            = new SqLiteTargetDatabaseWriter();

            var reader           = new SqLiteTargetDatabaseReader();
            var existingDatabase = new TargetDatabase();

            IEnumerable <LcmsDataSet> priorDataSets = new List <LcmsDataSet>();

            if (File.Exists(dbFileName))
            {
                priorDataSets    = reader.Read(dbFileName);
                existingDatabase = reader.ReadDb(dbFileName);
            }
            var priorDatasetList = priorDataSets.Select(x => x.Name).ToList();
            var listJobs         = new List <AnalysisJobItem>();

            foreach (var path in paths)
            {
                if (File.Exists(path))
                {
                    var tool    = DetermineTool(path);
                    var jobName = path.Split('\\').Last();
                    if (tool == LcmsIdentificationTool.NOT_SUPPORTED)
                    {
                        Console.WriteLine(jobName + " is not a supported LCMS format for MTDBCreator;\nExcluding this file from MTDB creation\n");
                    }
                    else if (priorDatasetList.Any(x => jobName.Contains(x)))
                    {
                        Console.WriteLine(jobName + " is part of prior analysis;\nExcluding from reading portion of MTDB creation\n");
                    }
                    else
                    {
                        var individualJob = new AnalysisJobItem(path, tool);
                        listJobs.Add(individualJob);
                    }
                }
                else
                {
                    Console.WriteLine(path + " does not exist;\nExcluding this file in MTDB creation\n");
                }
            }
            if (listJobs.Count != 0)
            {
                var processedjobs = analysisProcessor.Process(listJobs, bWorker);

                var datasetList = processedjobs.Select(job => job.DataSet).ToList();
                if (priorDataSets != null)
                {
                    datasetList.AddRange(priorDataSets);
                }
                var database = mtdbProcessor.Process(datasetList, bWorker);

                writer.Write(database, options, dbFileName);

                return(database);
            }

            return(existingDatabase);
        }
Esempio n. 8
0
        public MassTagDatabase LoadDatabase()
        {
            var database = new MassTagDatabase();

            //Implement the loading / reading of the MTDB Framework objects.

            var reader       = new SqLiteTargetDatabaseReader();
            var mtdbDatabase = reader.ReadDb(m_path);
            var massTags     = new List <MassTagLight>();

            // Mapping objects to create unique proteins and for the mass tag database to load only those proteins for
            // the given consensus targets/mass tags.
            var proteinMap        = new Dictionary <int, Protein>();
            var massTagProteinMap = new Dictionary <int, List <Protein> >();

            if (mtdbDatabase == null)
            {
                return(database);
            }

            foreach (var target in mtdbDatabase.ConsensusTargets)
            {
                // Copy the consensus data into a mass tag light.
                var tag = new MassTagLight
                {
                    Id = target.Id,
                    MassMonoisotopic     = target.TheoreticalMonoIsotopicMass,
                    NetAverage           = target.AverageNet,
                    NetPredicted         = target.PredictedNet,
                    PeptideSequence      = target.Sequence,
                    NetStandardDeviation = target.StdevNet
                };


                // Here we create unique proteins for the mass tag copying information from the consensus target proteins.
                var proteinsForMassTag = new List <Protein>();
                foreach (var targetProtein in target.Proteins)
                {
                    if (!proteinMap.ContainsKey(targetProtein.Id))
                    {
                        var newProtein = new Protein
                        {
                            Id   = targetProtein.Id,
                            Name = targetProtein.ProteinName,
                            ResidueStartPosition = targetProtein.ResidueStart,
                            ResidueEndPosition   = targetProtein.ResidueEnd
                        };
                        //TODO: Do something about the cleavage state and terminus state of a protein loaded from MTDBCreator database.
                        //protein.CleavageState = ??
                        //protein.TerminusState = ??

                        proteinMap.Add(newProtein.Id, newProtein);
                    }

                    var protein = proteinMap[targetProtein.Id];
                    proteinsForMassTag.Add(protein);
                }

                massTagProteinMap.Add(tag.Id, proteinsForMassTag);
                massTags.Add(tag);
            }

            database.AddMassTagsAndProteins(massTags, massTagProteinMap);
            return(database);
        }