43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
|
from argparse import ArgumentParser
|
||
|
import asyncio
|
||
|
from automlst.engine.remote.databases.bigsdb import BIGSdbIndex
|
||
|
|
||
|
def setup_parser(parser: ArgumentParser):
|
||
|
parser.description = "Fetches the latest BIGSdb MLST database definitions."
|
||
|
parser.add_argument(
|
||
|
"--retrieve-bigsdbs", "-l",
|
||
|
action="store_true",
|
||
|
dest="list_dbs",
|
||
|
required=False,
|
||
|
default=False,
|
||
|
help="Lists all known BIGSdb MLST databases (fetched from known APIs and cached)."
|
||
|
)
|
||
|
|
||
|
parser.add_argument(
|
||
|
"--retrieve-bigsdb-schemas", "-lschemas",
|
||
|
nargs="+",
|
||
|
action="extend",
|
||
|
dest="list_bigsdb_schemas",
|
||
|
required=False,
|
||
|
default=[],
|
||
|
type=str,
|
||
|
help="Lists the known schema IDs for a given BIGSdb sequence definition database name. The name, and then the ID of the schema is given."
|
||
|
)
|
||
|
|
||
|
parser.set_defaults(func=run_asynchronously)
|
||
|
|
||
|
async def run(args):
|
||
|
async with BIGSdbIndex() as bigsdb_index:
|
||
|
if args.list_dbs:
|
||
|
known_seqdef_dbs = await bigsdb_index.get_known_seqdef_dbs(force=False)
|
||
|
print("\n".join(known_seqdef_dbs.keys()))
|
||
|
|
||
|
for bigsdb_schema_name in args.list_bigsdb_schemas:
|
||
|
schemas = await bigsdb_index.get_schemas_for_seqdefdb(bigsdb_schema_name)
|
||
|
for schema_desc, schema_id in schemas.items():
|
||
|
print(f"{schema_desc}: {schema_id}")
|
||
|
|
||
|
def run_asynchronously(args):
|
||
|
asyncio.run(run(args))
|
||
|
|