Compare commits
5 Commits
43a17d698b
...
0.5.0
Author | SHA1 | Date | |
---|---|---|---|
a4d8de7cc6 | |||
5ef5b6ac08 | |||
3aa2916324 | |||
af9c8c70b8 | |||
319edf36af |
7
Jenkinsfile
vendored
7
Jenkinsfile
vendored
@@ -32,6 +32,11 @@ pipeline {
|
|||||||
stage("publish") {
|
stage("publish") {
|
||||||
parallel {
|
parallel {
|
||||||
stage ("git.reslate.systems") {
|
stage ("git.reslate.systems") {
|
||||||
|
when {
|
||||||
|
not {
|
||||||
|
tag '*.*.*'
|
||||||
|
}
|
||||||
|
}
|
||||||
environment {
|
environment {
|
||||||
CREDS = credentials('username-password-rs-git')
|
CREDS = credentials('username-password-rs-git')
|
||||||
}
|
}
|
||||||
@@ -41,7 +46,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
stage ("pypi.org") {
|
stage ("pypi.org") {
|
||||||
when {
|
when {
|
||||||
tag '*.*'
|
tag '*.*.*'
|
||||||
}
|
}
|
||||||
environment {
|
environment {
|
||||||
TOKEN = credentials('pypi.org')
|
TOKEN = credentials('pypi.org')
|
||||||
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
name = "autoBIGS.cli"
|
name = "autoBIGS.cli"
|
||||||
dynamic = ["version"]
|
dynamic = ["version"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license = {file = "LICENSE"}
|
license = {text = "GPL-3.0-or-later"}
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autoBIGS-engine==0.12.*"
|
"autoBIGS-engine==0.12.*"
|
||||||
]
|
]
|
||||||
@@ -14,8 +14,8 @@ requires-python = ">=3.12"
|
|||||||
description = "A CLI tool to rapidly fetch fetch MLST profiles given sequences for various diseases."
|
description = "A CLI tool to rapidly fetch fetch MLST profiles given sequences for various diseases."
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
Repository = "https://github.com/RealYHD/autoBIGS.cli"
|
Repository = "https://github.com/Syph-and-VPD-Lab/autoBIGS.cli"
|
||||||
Issues = "https://github.com/RealYHD/autoBIGS.cli/issues"
|
Issues = "https://github.com/Syph-and-VPD-Lab/autoBIGS.cli/issues"
|
||||||
|
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
from argparse import ArgumentParser, Namespace
|
from argparse import ArgumentParser, Namespace
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import csv
|
||||||
|
from os import path
|
||||||
from autobigs.engine.analysis.bigsdb import BIGSdbIndex
|
from autobigs.engine.analysis.bigsdb import BIGSdbIndex
|
||||||
|
|
||||||
def setup_parser(parser: ArgumentParser):
|
def setup_parser(parser: ArgumentParser):
|
||||||
@@ -24,24 +26,50 @@ def setup_parser(parser: ArgumentParser):
|
|||||||
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."
|
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.add_argument(
|
||||||
|
"--csv", "-o",
|
||||||
|
dest="csv_output",
|
||||||
|
required=False,
|
||||||
|
default=None,
|
||||||
|
help="Output list as CSV at a given path. A suffix is added depending on the action taken."
|
||||||
|
)
|
||||||
|
|
||||||
parser.set_defaults(run=run_asynchronously)
|
parser.set_defaults(run=run_asynchronously)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
async def run(args: Namespace):
|
async def run(args: Namespace):
|
||||||
async with BIGSdbIndex() as bigsdb_index:
|
async with BIGSdbIndex() as bigsdb_index:
|
||||||
|
if args.list_dbs and len(args.list_bigsdb_schemas) > 0:
|
||||||
|
print("Cannot specify both database listing and schema listing, please choose one!")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
if args.list_dbs:
|
if args.list_dbs:
|
||||||
known_seqdef_dbs = await bigsdb_index.get_known_seqdef_dbs(force=False)
|
known_seqdef_dbs = await bigsdb_index.get_known_seqdef_dbs(force=False)
|
||||||
print("The following are all known BIGS database names (sorted alphabetically):")
|
sorted_seqdef_dbs = [(name, source) for name, source in sorted(known_seqdef_dbs.items())]
|
||||||
print("\n".join(sorted(known_seqdef_dbs.keys())))
|
print("The following are all known BIGS database names, and their source (sorted alphabetically):")
|
||||||
|
print("\n".join(["{0}: {1}".format(name, source) for name, source in sorted_seqdef_dbs]))
|
||||||
|
if args.csv_output:
|
||||||
|
with open(args.csv_output, "w") as csv_out_handle:
|
||||||
|
writer = csv.writer(csv_out_handle)
|
||||||
|
writer.writerow(("BIGSdb Names", "Source"))
|
||||||
|
writer.writerows(sorted_seqdef_dbs)
|
||||||
|
print("\nDatabase output written to {0}".format(args.csv_output))
|
||||||
|
|
||||||
for bigsdb_schema_name in args.list_bigsdb_schemas:
|
for bigsdb_schema_name in args.list_bigsdb_schemas:
|
||||||
schemas = await bigsdb_index.get_schemas_for_seqdefdb(bigsdb_schema_name)
|
schemas = await bigsdb_index.get_schemas_for_seqdefdb(bigsdb_schema_name)
|
||||||
|
sorted_schemas = [(name, id) for name, id in sorted(schemas.items())]
|
||||||
print("The following are the known schemas for \"{0}\", and their associated IDs:".format(bigsdb_schema_name))
|
print("The following are the known schemas for \"{0}\", and their associated IDs:".format(bigsdb_schema_name))
|
||||||
for schema_desc, schema_id in schemas.items():
|
print("\n".join(["{0}: {1}".format(name, id) for name, id in sorted_schemas]))
|
||||||
print(f"{schema_desc}: {schema_id}")
|
if args.csv_output:
|
||||||
|
with open(args.csv_output, "w") as csv_out_handle:
|
||||||
|
writer = csv.writer(csv_out_handle)
|
||||||
|
writer.writerow(("Name", "ID"))
|
||||||
|
writer.writerows(sorted_schemas)
|
||||||
|
print("\nSchema list output written to {0}".format(args.csv_output))
|
||||||
|
|
||||||
if not (args.list_dbs or len(args.list_bigsdb_schemas) > 0):
|
if not (args.list_dbs or len(args.list_bigsdb_schemas) > 0):
|
||||||
print("Nothing to do. Try specifying \"-l\" for a list of known databases, or \"-h\" for more information.")
|
print("Nothing to do. Try specifying \"-l\" for a list of known databases, or \"-h\" for more information.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
def run_asynchronously(args: Namespace):
|
def run_asynchronously(args: Namespace):
|
||||||
asyncio.run(run(args))
|
asyncio.run(run(args))
|
||||||
|
@@ -50,7 +50,7 @@ async def run(args: Namespace):
|
|||||||
async with BIGSdbIndex() as bigsdb_index:
|
async with BIGSdbIndex() as bigsdb_index:
|
||||||
gen_strings = read_multiple_fastas(args.fastas)
|
gen_strings = read_multiple_fastas(args.fastas)
|
||||||
async with await bigsdb_index.build_profiler_from_seqdefdb(False, args.seqdefdb, args.schema) as mlst_profiler:
|
async with await bigsdb_index.build_profiler_from_seqdefdb(False, args.seqdefdb, args.schema) as mlst_profiler:
|
||||||
mlst_profiles = mlst_profiler.profile_multiple_strings(gen_strings)
|
mlst_profiles = mlst_profiler.profile_multiple_strings(gen_strings, args.stop_on_fail)
|
||||||
failed = await write_mlst_profiles_as_csv(mlst_profiles, args.out)
|
failed = await write_mlst_profiles_as_csv(mlst_profiles, args.out)
|
||||||
if len(failed) > 0:
|
if len(failed) > 0:
|
||||||
print(f"A total of {len(failed)} IDs failed (no profile found):\n{"\n".join(failed)}")
|
print(f"A total of {len(failed)} IDs failed (no profile found):\n{"\n".join(failed)}")
|
||||||
|
Reference in New Issue
Block a user