//---------------------------------------------------------------------------- // CTmTxKey::transid // Construct a transid from the key and return it. //---------------------------------------------------------------------------- TM_Txid_Internal CTmTxKey::transid() { TM_Txid_Internal lv_transid; memset(&lv_transid, 0, sizeof(lv_transid)); lv_transid.iv_node = node(); lv_transid.iv_seq_num = seqnum(); lv_transid.iv_incarnation_num = gv_tm_info.incarnation_num(); return lv_transid; } //transid
//------------------------------------------------------------------------------ void CheckDuplicates( const vector< string > & input, const string & infmt, const CWinMaskUtil::CIdSet * ids, const CWinMaskUtil::CIdSet * exclude_ids ) { typedef vector< string >::const_iterator input_iterator; dup_lookup_table table; CRef<CObjectManager> om(CObjectManager::GetInstance()); for( input_iterator i( input.begin() ); i != input.end(); ++i ) { Uint4 seqnum( 0 ); for(CWinMaskUtil::CInputBioseq_CI bs_iter(*i, infmt); bs_iter; ++bs_iter) { CBioseq_Handle bsh = *bs_iter; if( CWinMaskUtil::consider( bsh, ids, exclude_ids ) ) { TSeqPos data_len = bsh.GetBioseqLength(); if( data_len < MIN_SEQ_LENGTH ) continue; string id; sequence::GetId(bsh, sequence::eGetId_Best) .GetSeqId()->GetLabel(&id); data_len -= SAMPLE_SKIP; tracker track( table, id ); string index; CSeqVector data = bsh.GetSeqVector(CBioseq_Handle::eCoding_Iupac); for( TSeqPos i = 0; i < data_len; ++i ) { index.erase(); data.GetSeqData(i, i + SAMPLE_LENGTH, index); const dup_lookup_table::sample * sample( table[index] ); if( sample != 0 ) track( index, seqnum, i, sample->begin(), sample->end() ); } table.add_seq_info( id, data ); ++seqnum; } } } }