예제 #1
0
파일: Workspace.cs 프로젝트: zrolfs/pwiz
 public void SetTaskScheduler(TaskScheduler taskScheduler)
 {
     _taskScheduler = taskScheduler;
     if (_taskScheduler != null)
     {
         if (SessionFactory == null)
         {
             OpenSessionFactory();
         }
         _databasePoller = _databasePoller ?? new DatabasePoller(this);
         _databasePoller.Start();
         _resultCalculator = _resultCalculator ?? new ResultCalculator(this);
         _resultCalculator.Start();
         _chromatogramGenerator = _chromatogramGenerator ?? new ChromatogramGenerator(this);
         _chromatogramGenerator.Start();
     }
     else
     {
         if (null != _chromatogramGenerator)
         {
             _chromatogramGenerator.Stop();
         }
         if (null != _resultCalculator)
         {
             _resultCalculator.Stop();
         }
         if (null != _databasePoller)
         {
             _databasePoller.Stop();
         }
         CloseSessionFactory();
     }
 }
예제 #2
0
        public void TestChromatogramGenerator()
        {
            String dbPath = Path.Combine(TestContext.TestDir, "test" + Guid.NewGuid() + ".tpg");

            using (var sessionFactory = SessionFactoryFactory.CreateSessionFactory(dbPath, SessionFactoryFlags.CreateSchema))
            {
                using (var session = sessionFactory.OpenSession())
                {
                    session.BeginTransaction();
                    DbWorkspace dbWorkspace = new DbWorkspace
                    {
                        TracerDefCount = 1,
                    };
                    session.Save(dbWorkspace);
                    DbTracerDef dbTracerDef = TracerDef.GetN15Enrichment();
                    dbTracerDef.Workspace = dbWorkspace;
                    dbTracerDef.Name      = "Tracer";

                    session.Save(dbTracerDef);
                    session.Save(new DbSetting
                    {
                        Workspace = dbWorkspace,
                        Name      = SettingEnum.data_directory.ToString(),
                        Value     = GetDataDirectory()
                    });
                    session.Transaction.Commit();
                }
            }
            Workspace workspace = new Workspace(dbPath);

            workspace.SetTaskScheduler(TaskScheduler.Default);
            var dbMsDataFile = new DbMsDataFile
            {
                Name = "20090724_HT3_0",
            };

            using (var session = workspace.OpenWriteSession())
            {
                session.BeginTransaction();
                session.Save(dbMsDataFile);
                session.Transaction.Commit();
            }
            workspace.DatabasePoller.LoadAndMergeChanges(null);
            var msDataFile = workspace.MsDataFiles.FindByKey(dbMsDataFile.GetId());

            Assert.IsTrue(MsDataFileUtil.InitMsDataFile(workspace, msDataFile));
            DbPeptide dbPeptide;

            using (var session = workspace.OpenWriteSession())
            {
                session.BeginTransaction();
                dbPeptide = new DbPeptide
                {
                    Protein      = "TestProtein",
                    Sequence     = "YLAAYLLLVQGGNAAPSAADIK",
                    FullSequence = "K.YLAAYLLLVQGGNAAPSAADIK.A",
                };
                session.Save(dbPeptide);
                var searchResult = new DbPeptideSpectrumMatch
                {
                    Peptide         = dbPeptide,
                    MsDataFile      = session.Load <DbMsDataFile>(msDataFile.Id),
                    PrecursorCharge = 3,
                    RetentionTime   = 20.557 * 60,
                };
                session.Save(searchResult);
                session.Transaction.Commit();
            }
            var peptide         = new Peptide(workspace, dbPeptide);
            var peptideAnalysis = peptide.EnsurePeptideAnalysis();

            peptideAnalysis.IncChromatogramRefCount();
            var peptideFileAnalysis = PeptideFileAnalysis.EnsurePeptideFileAnalysis(peptideAnalysis, msDataFile);

            workspace.DatabasePoller.LoadAndMergeChanges(null);
            peptideAnalysis.IncChromatogramRefCount();
            var chromatogramGenerator = new ChromatogramGenerator(workspace);

            chromatogramGenerator.Start();
            while (peptideFileAnalysis.ChromatogramSet == null)
            {
                Thread.Sleep(100);
            }
            var chromatogramDatas = peptideFileAnalysis.GetChromatograms();

            Assert.IsFalse(chromatogramDatas.Chromatograms.Count == 0);
            chromatogramGenerator.Stop();
            while (chromatogramGenerator.IsThreadAlive)
            {
                Thread.Sleep(100);
            }
        }