Ejemplo n.º 1
0
static
rc_t DB_Init(const SParam* p, DB_Handle* h)
{
    rc_t rc;

    if( (rc = VDBManagerMakeUpdate(&h->mgr, NULL)) != 0 ) {
        LOGERR(klogErr, rc, "failed to create VDB Manager");

    }
    else if( (rc = VDBManagerMakeSchema(h->mgr, &h->schema)) != 0 ) {
        LOGERR(klogErr, rc, "failed to create schema");

    }
    else if( (rc = VSchemaParseFile(h->schema, p->schema)) != 0 ) {
        PLOGERR(klogErr, (klogErr, rc, "failed to parse schema file '$(schema)'", PLOG_S(schema), p->schema));

    }
    else if( (rc = VDBManagerCreateDB(h->mgr, &h->db, h->schema, "NCBI:align:db:alignment_evidence",
                                        p->force ? kcmInit : kcmCreate, p->out)) != 0 ) {
        PLOGERR(klogErr, (klogErr, rc, "failed to create database at '$(path)'", PLOG_S(path), p->out));

    }
    else if( (rc = ReferenceMgr_Make(&h->rmgr, h->db, h->mgr, (p->force_refw ? ewrefmgr_co_allREADs : 0),
                        p->refseqcfg, p->refseqpath, p->refseq_chunk, 350 * 1024 * 1024, 0)) != 0 ) {
        LOGERR(klogErr, rc, "failed to create reference manager");

    }
    else if( (rc = CGWriterAlgn_Make(&h->walgn, &h->mappings, h->db, h->rmgr, p->min_mapq, p->single_mate, p->cluster_size)) != 0 ) {
        LOGERR(klogErr, rc, "failed to create alignment writer");

    }
    else if( (rc = CGWriterSeq_Make(&h->wseq, &h->reads, h->db, (p->force_readw ? ewseq_co_SaveRead : 0) |
                                      (p->no_spot_group ? 0 : ewseq_co_SpotGroup), p->qual_quant)) != 0 ) {
        LOGERR(klogErr, rc, "failed to create sequence writer");

    } else if( p->asm_path && (rc = CGWriterEvdInt_Make(&h->wev_int, &h->ev_int, h->db, h->rmgr, 0)) != 0 ) {
        LOGERR(klogErr, rc, "failed to create evidence intervals writer");

    } else if( p->asm_path && (rc = CGWriterEvdDnbs_Make(&h->wev_dnb, &h->ev_dnb, h->db, h->rmgr, 0)) != 0 ) {
        LOGERR(klogErr, rc, "failed to create evidence dnbs writer");
    } else {
        const char** r = p->refFiles;
        while( rc == 0 && *r != NULL ) {
            if( (rc = ReferenceMgr_FastaPath(h->rmgr, *r++)) != 0 ) {
                PLOGERR(klogInfo, (klogInfo, rc, "fasta file '$(file)'", "file=%s", r[-1]));
            }
        }
    }
    return rc;
}
Ejemplo n.º 2
0
rc_t KeyRingDatabaseSave ( struct KeyRingData* self, struct KDirectory* wd, const char* path )
{
    rc_t rc;
    VDBManager* vdbMgr;
    rc = VDBManagerMakeUpdate( &vdbMgr, wd );
    if (rc == 0)
    {
        VSchema* schema;
        rc = VDBManagerMakeSchema(vdbMgr, &schema);
        if (rc == 0)
        {
            rc = VSchemaParseText ( schema, "keyring_schema", schema_text, string_measure(schema_text, NULL) );
            if (rc == 0)
            {   /* create a database */
                VDatabase* db;
                rc = VDBManagerCreateDB(vdbMgr, & db, schema, "keyring:KEYRING", kcmCreate | kcmMD5, path);
                if (rc == 0)
                {   
                    rc_t rc2;
                    rc = SaveProjects(&self->projects, db);
                    if (rc == 0)
                        rc = SaveObjects(&self->objects, db);
                    /*TODO: SaveKeys */
                    rc2 = VDatabaseRelease(db);
                    if (rc == 0)
                        rc = rc2;
                }

            }
            VSchemaRelease(schema);
        }
        VDBManagerRelease(vdbMgr);
    }

    return rc;
}
Ejemplo n.º 3
0
static rc_t pacbio_load( context *ctx, ld_context *lctx, 
                         bool cache_content, bool check_src_obj )
{
    bool consensus_present = true;
    rc_t rc1 = 0;
    rc_t rc = KLoadProgressbar_Make( &lctx->xml_progress, 0 );
    if ( rc != 0 )
        LOGERR( klogErr, rc, "cannot create LoadProgressBar" );

    if ( rc == 0 )
    {
        rc = VDBManagerMakeUpdate ( &lctx->vdb_mgr, lctx->wd );
        if ( rc != 0 )
            LOGERR( klogErr, rc, "cannot create vdb-update-manager" );
    }

    if ( rc == 0 )
        rc = pacbio_load_schema( lctx, ctx->schema_name );

    if ( rc == 0 )
    {
        rc = VSchemaParseFile ( lctx->schema, ctx->schema_name );
        if ( rc != 0 )
            PLOGERR( klogErr, ( klogErr, rc, "cannot to parse schema file '$(schema)'",
                                "schema=%s", ctx->schema_name ) );
    }

    if ( rc == 0 )
    {
        rc = MakeHDF5RootDir ( lctx->wd, &lctx->hdf5_dir, false, ctx->src_path );
        if ( rc != 0 )
            PLOGERR( klogErr, ( klogErr, rc, "cannot open hdf5-source-file '$(srcfile)'",
                                "srcfile=%s", ctx->src_path ) );

    }

    if ( rc == 0 )
    {
        KCreateMode cmode = kcmMD5 | kcmParents;
        if ( ctx->force )
            cmode |= kcmInit;
        else
            cmode |= kcmCreate;
        rc = VDBManagerCreateDB( lctx->vdb_mgr, & lctx->database, lctx->schema, 
                                 PACBIO_SCHEMA_DB, cmode, ctx->dst_path );
        if ( rc != 0 )
            PLOGERR( klogErr, ( klogErr, rc, "cannot create output-database '$(dst)'",
                                "dst=%s", ctx->dst_path ) );
    }

    if ( rc == 0 && ctx_ld_sequence( ctx ) )
        rc = load_seq( lctx, cache_content, check_src_obj );

    if ( rc == 0 && ctx_ld_consensus( ctx ) )
    {
        rc1 = load_consensus( lctx, cache_content, check_src_obj );
        if ( rc1 != 0 )
        {
            LOGMSG( klogWarn, "the consensus-group is missing" );
            VDatabaseDropTable ( lctx->database, "CONSENSUS" );
            consensus_present = false;
        }
    }

    if ( rc == 0 )
    {
        if ( rc1 == 0 )
        {
            /* CONSENSUS exists, create a alias named SEQUENCE to CONSENSUS */
            /* rc = pacbio_make_alias( lctx->database, "CONSENSUS", "SEQUENCE" ); */
        }
        else
        {
            /* CONSENSUS does not exist, create a alias named SEQUENCE to PULSE */
            /* rc = pacbio_make_alias( lctx->database, "PULSE", "SEQUENCE" ); */
        }
    }

    if ( rc == 0 && ctx_ld_passes( ctx )&& consensus_present )
    {
        rc1 = load_passes( lctx, cache_content, check_src_obj );
        if ( rc1 != 0 )
            LOGMSG( klogWarn, "the passes-table is missing" );
    }

    if ( rc == 0 && ctx_ld_metrics( ctx ) )
    {
        rc1 = load_metrics( lctx, cache_content, check_src_obj );
        if ( rc1 != 0 )
            LOGMSG( klogWarn, "the metrics-table is missing" );
    }

    return rc;

}
Ejemplo n.º 4
0
rc_t KMain ( int argc, char *argv [] )
{
    VDBManager *vmgr;
    rc_t rc = VDBManagerMakeUpdate ( & vmgr, NULL );
    if ( rc != 0 )
        LOGERR ( klogInt, rc, "failed to make update manager" );
    else
    {
        VSchema *vschema;
        rc = VDBManagerMakeSchema ( vmgr, & vschema );
        if ( rc != 0 )
            LOGERR ( klogInt, rc, "failed to make empty schema" );
        else
        {
            const char *file = "align/align.vschema";
#if _DEBUGGING
            VSchemaListSymtab ( vschema );
#endif
            rc = VSchemaParseFile ( vschema, "align/align.vschema" );
#if _DEBUGGING
            VSchemaListSymtab ( vschema );
#endif
            if ( rc != 0 )
            {
                pLOGERR ( klogErr, rc, "failed to parse schema file '$(file)'"
                          , "file=%s"
                          , file );
            }
            else
            {
                VDatabase *vdb;
                const char *path = "test-ac-db";
                const char *typespec = "NCBI:align:db:alignment";
                rc = VDBManagerCreateDB ( vmgr, & vdb, vschema, typespec, kcmInit, path );
                if ( rc != 0 )
                {
                    pLOGERR ( klogInt, rc, "failed to create '$(typespec)' db at '$(path)'"
                              , "typespec=%s,path=%s"
                              , typespec
                              , path
                        );
                }
                else
                {
                    VTable *vtbl;
                    const char *member = "align";
                    path = member;
                    rc = VDatabaseCreateTable ( vdb, & vtbl, member, kcmInit, path );
                    if ( rc != 0 )
                    {
                        pLOGERR ( klogInt, rc, "failed to create '$(member)' table at '$(path)'"
                                  , "member=%s,path=%s"
                                  , member
                                  , path
                            );
                    }
                    else
                    {
                        printf ( "done\n" );

                        VTableRelease ( vtbl );
                    }

                    VDatabaseRelease ( vdb );
                }
            }

            VSchemaRelease ( vschema );
        }

        VDBManagerRelease ( vmgr );
    }
    return rc;
}