CRef<SInternalData> SplitQuery_CreateChunkData(CRef<IQueryFactory> qf, CRef<CBlastOptions> options, CRef<SInternalData> full_data, bool is_multi_threaded /* = false */) { BlastSeqSrc* seqsrc = BlastSeqSrcCopy(full_data->m_SeqSrc->GetPointer()); CRef<SBlastSetupData> setup_data = BlastSetupPreliminarySearchEx( qf, options, CRef<objects::CPssmWithParameters>(), seqsrc, is_multi_threaded); BlastSeqSrcResetChunkIterator(seqsrc); setup_data->m_InternalData->m_SeqSrc.Reset(new TBlastSeqSrc(seqsrc, BlastSeqSrcFree)); _ASSERT(setup_data->m_QuerySplitter->IsQuerySplit() == false); if (full_data->m_ProgressMonitor->Get()) { setup_data->m_InternalData->m_FnInterrupt = full_data->m_FnInterrupt; SBlastProgress* bp = SBlastProgressNew(full_data->m_ProgressMonitor->Get()->user_data); setup_data->m_InternalData->m_ProgressMonitor.Reset(new CSBlastProgress(bp)); } return setup_data->m_InternalData; }
void CBlastPrelimSearch::x_Init(CRef<IQueryFactory> query_factory, CRef<CBlastOptions> options, CConstRef<objects::CPssmWithParameters> pssm, BlastSeqSrc* seqsrc ) { CRef<SBlastSetupData> setup_data = BlastSetupPreliminarySearchEx(query_factory, options, pssm, seqsrc, IsMultiThreaded()); m_InternalData = setup_data->m_InternalData; copy(setup_data->m_Masks.begin(), setup_data->m_Masks.end(), back_inserter(m_MasksForAllQueries)); m_Messages = setup_data->m_Messages; }