Ejemplo n.º 1
0
def cli(ctx, conn_host, database, username, password, port, host, verbose, 
        logfile, backend):
    """loqusdb: manage a local variant count database."""
    # configure root logger to print to STDERR
    loglevel = LEVELS.get(min(verbose,1), "INFO")
    init_log(
        logger = logger, 
        filename = logfile, 
        loglevel = loglevel
    )
    
    # mongo uri looks like:
    #mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
    uri = None
    if username and password:
        uri = "{0}{1}:{2}@{3}:{4}/{5}".format(
              conn_host, username, password, host, port, database
              )
        logger.info('uri={0}'.format(uri))
    
    adapter = MongoAdapter()
    adapter.connect(
        host=host, 
        port=port, 
        database=database,
        uri=uri
    )
    
    ctx.obj = {}
    ctx.obj['db'] = database
    ctx.obj['user'] = username
    ctx.obj['password'] = password
    ctx.obj['port'] = port
    ctx.obj['host'] = host
    ctx.obj['adapter'] = adapter
Ejemplo n.º 2
0
def cli(ctx, conn_host, database, username, password, port, host, verbose):
    """loqusdb: manage a local variant count database."""
    # configure root logger to print to STDERR
    loglevel = LEVELS.get(max(verbose, 1), "INFO")
    coloredlogs.install(level=loglevel)

    # mongo uri looks like:
    #mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
    uri = None
    if username and password:
        uri = "{0}{1}:{2}@{3}:{4}/{5}".format(conn_host, username, password,
                                              host, port, database)
        if password:
            pwd = '******'
        else:
            pwd = None
        logger.info('uri={0}{1}:{2}@{3}:{4}/{5}'.format(
            conn_host, username, pwd, host, port, database))

    adapter = MongoAdapter()
    adapter.connect(host=host, port=port, database=database, uri=uri)

    ctx.obj = {}
    ctx.obj['db'] = database
    ctx.obj['user'] = username
    ctx.obj['password'] = password
    ctx.obj['port'] = port
    ctx.obj['host'] = host
    ctx.obj['adapter'] = adapter
Ejemplo n.º 3
0
def frequency(context, bulk, remove):
    """Upload or remove variants to/from frequency database."""
    loqusdb_auth = context.obj.get("loqusdb", {})
    adapter = LoqusdbAdapter()
    adapter.connect(**loqusdb_auth)

    mip_case = context.obj["case"]
    if mip_case.is_old:
        logger.warn("unsupported MIP version for frequency: %s", mip_case.version)
    else:
        vcf_path = mip_case.research_vcf
        case_group_id = group_id(mip_case)
        # we only care about "rare" variants
        ped_path = mip_case.configs.pedigree

        try:
            affected_inds = affected_individuals(ped_path)
        except FrequencyError as error:
            logger.warn("LOQUSDB: {}".format(error.message))

        if "affected_inds" in locals():
            with open(vcf_path, "r") as vcf_stream:
                try:
                    if remove:
                        count = delete_variants(adapter, vcf_stream, case_group_id, affected_inds)
                        logger.info("removed {} variants".format(count))
                    else:
                        load_variants(
                            adapter, case_group_id, affected_inds, vcf_stream, bulk_insert=bulk, vcf_path=vcf_path
                        )
                except CaseError as error:
                    logger.warn("LOQUSDB: {}".format(error.message))
Ejemplo n.º 4
0
def parse_payload(db, payload, config, force=False):
    """Upload frequency to the database."""
    loqusdb_auth = config['LOQUSDB_AUTH']
    adapter = LoqusdbAdapter()
    adapter.connect(**loqusdb_auth)
    case_id = payload['case_id']
    mip_analysis = load_analysis(payload['family_dir'])

    if mip_analysis.is_old:
        logger.warn("unsupported MIP version for frequency: %s",
                    mip_analysis.version)
    else:
        vcf_path, affected = parse_mip(mip_analysis)
        if affected:
            upload(adapter, vcf_path, affected, case_id, force=force)
Ejemplo n.º 5
0
def cli(ctx, database, username, password, authdb, port, host, uri, verbose,
        config, test, genome_build):
    """loqusdb: manage a local variant count database."""
    loglevel = "INFO"
    if verbose:
        loglevel = "DEBUG"
    coloredlogs.install(level=loglevel)
    LOG.info("Running loqusdb version %s", __version__)

    configs = {}
    if config:
        try:
            configs = yaml.safe_load(config)
        except yaml.YAMLError as err:
            LOG.warning(err)
            ctx.abort()

    uri = configs.get('uri') or uri
    if test:
        uri = "mongomock://"
    try:
        client = get_client(
            host=configs.get('host') or host,
            port=configs.get('port') or port,
            username=configs.get('username') or username,
            password=configs.get('password') or password,
            authdb=authdb or database or 'loqusdb',
            uri=uri,
        )
    except DB_Error as err:
        LOG.warning(err)
        ctx.abort()

    database = configs.get('db_name') or database

    if not database:
        database = 'loqusdb'
        if uri:
            uri_info = uri_parser.parse_uri(uri)
            database = uri_info.get('database')

    adapter = MongoAdapter(client, db_name=database)

    genome_build = genome_build or configs.get('genome_build') or GRCH37

    ctx.obj = {}
    ctx.obj['db'] = database
    ctx.obj['user'] = username
    ctx.obj['password'] = password
    ctx.obj['port'] = port
    ctx.obj['host'] = host
    ctx.obj['adapter'] = adapter
    ctx.obj['version'] = __version__
    ctx.obj['genome_build'] = genome_build
Ejemplo n.º 6
0
def mongo_adapter(request, mongo_client):
    """Return a mongo adapter"""
    adapter = MongoAdapter()
    adapter.connect(database='test', client=mongo_client)
    return adapter
Ejemplo n.º 7
0
def loqusdb_adapter(mongo_client):
    adapter = MongoAdapter()
    adapter.connect(database='test', client=mongo_client)
    return adapter
Ejemplo n.º 8
0
def mongo_adapter(request, mongo_client):
    """Return a mongo adapter"""
    adapter = MongoAdapter()
    adapter.connect(database='test', client=mongo_client)
    return adapter
Ejemplo n.º 9
0
def test_connect_uri(mongo_client):
    adapter = MongoAdapter()
    uri = "{0}".format("mongodb://localhost")
    adapter.connect(uri=uri)
    assert True
Ejemplo n.º 10
0
def test_connect(mongo_client):
    adapter = MongoAdapter()
    db_name = 'test'
    adapter.connect(database=db_name, client=mongo_client)
    assert True
def test_init_app(mongo_client):
    app = FlaskApp()
    app.config['LOQUSDB_URI'] = "mongodb://localhost"
    adapter = MongoAdapter()
    adapter.init_app(app)
    assert True
Ejemplo n.º 12
0
def real_mongo_adapter(request, real_mongo_client):
    """Return a mongo adapter"""
    db_name = REAL_DATABASE
    adapter = MongoAdapter(real_mongo_client, db_name)

    return adapter
Ejemplo n.º 13
0
def mongo_adapter(request, mongo_client):
    """Return a mongo adapter"""
    db_name = TEST_DATABASE
    adapter = MongoAdapter(mongo_client, db_name)

    return adapter
Ejemplo n.º 14
0
def test_init_app(mongo_client):
    app = MockFlaskApp()
    adapter = MongoAdapter()
    adapter.init_app(app)
    assert adapter.db_name == app.config['MONGO_DBNAME']
Ejemplo n.º 15
0
def test_connect(mongo_client):
    adapter = MongoAdapter()
    db_name = 'test'
    adapter.connect(database=db_name, client=mongo_client)
    assert True
Ejemplo n.º 16
0
def test_connect_uri(mongo_client):
    adapter = MongoAdapter()
    uri = "{0}".format("mongodb://localhost")
    adapter.connect(uri=uri)
    assert True