Esempio n. 1
0
CSeq_entry_Handle
CBioseq_Handle::GetComplexityLevel(CBioseq_set::EClass cls) const
{
    const CBioseq_set_Handle::TComplexityTable& ctab =
        CBioseq_set_Handle::sx_GetComplexityTable();
    if (cls == CBioseq_set::eClass_other) {
        // adjust 255 to the correct value
        cls = CBioseq_set::EClass(sizeof(ctab) - 1);
    }
    CSeq_entry_Handle last = GetParentEntry();
    _ASSERT(last && last.IsSeq());
    CSeq_entry_Handle e = last.GetParentEntry();
    while ( e ) {
        _ASSERT(e.IsSet());
        // Found good level
        if ( last.IsSet()  &&
             ctab[last.GetSet().GetClass()] == ctab[cls] )
            break;
        // Gone too high
        if ( ctab[e.GetSet().GetClass()] > ctab[cls] ) {
            break;
        }
        // Go up one level
        last = e;
        e = e.GetParentEntry();
    }
    return last;
}
Esempio n. 2
0
CSeq_entry_Handle
CBioseq_Handle::GetExactComplexityLevel(CBioseq_set::EClass cls) const
{
    CSeq_entry_Handle ret = GetComplexityLevel(cls);
    if ( ret  &&
         (!ret.IsSet()  ||  !ret.GetSet().IsSetClass()  ||
         ret.GetSet().GetClass() != cls) ) {
        ret.Reset();
    }
    return ret;
}
Esempio n. 3
0
CSeq_entry_EditHandle::CSeq_entry_EditHandle(const CSeq_entry_Handle& h)
    : CSeq_entry_Handle(h)
{
    if ( !h.GetTSE_Handle().CanBeEdited() ) {
        NCBI_THROW(CObjMgrException, eInvalidHandle,
                   "object is not in editing mode");
    }
}
Esempio n. 4
0
CSeq_entry_CI::CSeq_entry_CI(const CSeq_entry_Handle& entry,
                             TFlags flags,
                             CSeq_entry::E_Choice     type_filter )
    : m_Flags(flags),
      m_Filter(type_filter)
{
    if ( m_Flags & fIncludeGivenEntry ) {
        m_Current = entry;
        while ((*this)  &&  !x_ValidType()) {
            x_Next();
        }
    } else {
        if ( entry.IsSet() ) {
            x_Initialize( entry.GetSet() );
        }
    }
}
Esempio n. 5
0
//  ----------------------------------------------------------------------------
void 
CStartItem::x_SetDate( 
    CSeq_entry_Handle seh )
//  ----------------------------------------------------------------------------
{
    if ( ! seh.IsSetDescr() ) {
        m_Date = CurrentTime().AsString("Y-M-D");
        return;
    }
    const list< CRef< CSeqdesc > > lsd = seh.GetDescr().Get();
    if ( lsd.empty() ) {
        m_Date = CurrentTime().AsString("Y-M-D");
        return;
    }
    
    for ( list< CRef< CSeqdesc > >::const_iterator cit = lsd.begin(); 
        cit != lsd.end(); ++cit ) 
    {
        const CSeqdesc& sd = **cit;
        switch( sd.Which() ) {
        
            default:
                break;
                
            case CSeqdesc::e_Create_date:
                sd.GetCreate_date().GetDate( &m_Date, "%Y-%2M-%2D" );
                break;
                
            case CSeqdesc::e_Update_date:
                sd.GetUpdate_date().GetDate( &m_Date, "%Y-%2M-%2D" );
                return; 
        }        
    }
    if ( m_Date.empty() ) {
        m_Date = CurrentTime().AsString("Y-M-D");
    }
}
Esempio n. 6
0
int CTestApplication::Run()
//---------------------------------------------------------------------------
{
    int error = 0;

    string name1("DL_1"), name2("DL_2");

NcbiCout << "1.1.1 Creating CScope ==============================" << NcbiEndl;
{
    {
        CRef< CObjectManager> pOm = CObjectManager::GetInstance();
        {
            CTestDataLoader::RegisterInObjectManager
                (*pOm, name1, CObjectManager::eNonDefault);
            CTestDataLoader::RegisterInObjectManager
                (*pOm, name2, CObjectManager::eDefault);

            // scope in CRef container
            CRef< CScope> pScope1(new CScope(*pOm));
            pScope1->AddDefaults(); // loader 2 added
            pScope1->AddDataLoader(name1);
            // scope on the stack
            CScope scope2(*pOm);
            scope2.AddDefaults(); // loader 2 added
            // scope on the heap
            CScope* pScope3 = new CScope(*pOm);
            pScope3->AddDefaults(); // loader 2 added
            delete pScope3; //  loader 2 alive
        }
        // scopes deleted, all dataloaders alive
        pOm->RevokeDataLoader(name1);
        pOm->RevokeDataLoader(name2);
    }
// objmgr deleted, all dataloaders deleted
}
NcbiCout << "1.1.2 Adding Seq_entry to the scope=================" << NcbiEndl;
{
    {
        CRef< CObjectManager> pOm = CObjectManager::GetInstance();
        {
            // 3 scopes
            CRef< CScope> pScope1(new CScope(*pOm));
            CScope scope2(*pOm);
            CRef<CScope> pScope3(new CScope(*pOm));
            CRef< CSeq_entry> pEntry = CreateTestEntry();
            // add entry to all scopes
            pScope1->AddTopLevelSeqEntry( *pEntry);
            scope2.AddTopLevelSeqEntry( *pEntry);
            CSeq_entry_Handle eh = pScope3->AddTopLevelSeqEntry( *pEntry);

            pScope1.Reset();
            pScope3.Reset();
            eh.Reset();
            //delete pScope3; // data source and seq_entry alive
        }
        // scopes deleted, seq_entry and data source deleted
    }
// objmgr deleted
}
NcbiCout << "1.1.3 Handling Data loader==========================" << NcbiEndl;
{
    {
        CRef< CObjectManager> pOm = CObjectManager::GetInstance();
        {
            CScope* pScope1 = new CScope(*pOm);
            pScope1->AddDefaults(); // nothing added
            // must throw an exception: dataloader1 not found
            NcbiCout << "Expecting exception:" << NcbiEndl;
            try {
                pScope1->AddDataLoader( name1);
                NcbiCout << "ERROR: AddDataLoader has succeeded" << NcbiEndl;
                error += 1;
            }
            catch (exception& e) {
                NcbiCout << "Expected exception: " << e.what() << NcbiEndl;
            }
            CTestDataLoader::RegisterInObjectManager(*pOm, name1);
            pScope1->AddDefaults(); // nothing added
            pScope1->AddDataLoader( name1); // ok
            // must fail - dataloader1 is in use
            NcbiCout << "Expecting error:" << NcbiEndl;
            if (pOm->RevokeDataLoader( name1))
            {
                NcbiCout << "ERROR: RevokeDataLoader has succeeded" << NcbiEndl;
                error += 2;
            }
            delete pScope1; // loader1 alive
            // delete dataloader1
            pOm->RevokeDataLoader( name1); // ok
            // must throw an exception - dataloader1 not registered
            NcbiCout << "Expecting exception:" << NcbiEndl;
            try {
                pOm->RevokeDataLoader( name1);
                NcbiCout << "ERROR: RevokeDataLoader has succeeded" << NcbiEndl;
                error += 4;
            }
            catch (exception& e) {
                NcbiCout << "Expected exception: " << e.what() << NcbiEndl;
            }
        }
    }
}
{
    SAnnotSelector sel;
    map<string, set<int> > nav;
    vector<string> aa;
    for ( int i = 0; i < 100; ++i ) {
        string acc = "NA"+NStr::IntToString(rand()%1000);
        if ( nav.count(acc) ) continue;
        aa.push_back(acc);
        set<int>& vv = nav[acc];
        int nv = rand()%4;
        for ( int j = 0; j < nv; ++j ) {
            int v = rand()%10;
            vv.insert(v);
            string accv = acc+"."+NStr::IntToString(v);
            sel.IncludeNamedAnnotAccession(accv);
            //NcbiCout << "IncludeNamedAnnotAccession("<<accv<<")"<<NcbiEndl;
        }
        if ( nv == 0 ) {
            sel.IncludeNamedAnnotAccession(acc);
            //NcbiCout << "IncludeNamedAnnotAccession("<<acc<<")"<<NcbiEndl;
        }
    }
    for ( size_t t = 0; t < aa.size(); ++t ) {
        string acc = aa[t];
        acc[acc.size()-1]--;
        for ( int t1 = 0; t1 < 2; ++t1, acc[acc.size()-1]++ ) {
            const set<int>* vv = nav.count(acc)? &nav[acc]: 0;
            //NcbiCout << "IsIncludedNamedAnnotAccession("<<acc<<") "<< (vv?vv->size():0) <<NcbiEndl;
            if ( !vv || !vv->empty() ) {
                assert(!sel.IsIncludedNamedAnnotAccession(acc));
            }
            else {
                assert(sel.IsIncludedNamedAnnotAccession(acc));
            }
            for ( int s = 0; s < 100; ++s ) {
                int v = rand()%10;
                string accv = acc+"."+NStr::IntToString(v);
                //NcbiCout<<"IsIncludedNamedAnnotAccession("<<accv<<")"<<NcbiEndl;
                if ( !vv || (!vv->empty() && !vv->count(v)) ) {
                    assert(!sel.IsIncludedNamedAnnotAccession(accv));
                }
                else {
                    assert(sel.IsIncludedNamedAnnotAccession(accv));
                }
            }
        }
    }
}
if ( error > 0 ) {
NcbiCout << "==================================================" << NcbiEndl;
 NcbiCout << "ERROR " << error << ": Some tests failed." << NcbiEndl;
}
else {
NcbiCout << "==================================================" << NcbiEndl;
NcbiCout << "Test completed successfully" << NcbiEndl;
}
    return error;
}