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
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
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))
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)
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
def mongo_adapter(request, mongo_client): """Return a mongo adapter""" adapter = MongoAdapter() adapter.connect(database='test', client=mongo_client) return adapter
def loqusdb_adapter(mongo_client): adapter = MongoAdapter() adapter.connect(database='test', client=mongo_client) return adapter
def test_connect_uri(mongo_client): adapter = MongoAdapter() uri = "{0}".format("mongodb://localhost") adapter.connect(uri=uri) assert True
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
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
def mongo_adapter(request, mongo_client): """Return a mongo adapter""" db_name = TEST_DATABASE adapter = MongoAdapter(mongo_client, db_name) return adapter
def test_init_app(mongo_client): app = MockFlaskApp() adapter = MongoAdapter() adapter.init_app(app) assert adapter.db_name == app.config['MONGO_DBNAME']