Skip to content

Commit

Permalink
fix time and version in bakta_io outputs
Browse files Browse the repository at this point in the history
  • Loading branch information
oschwengers committed Jan 24, 2025
1 parent 3c573bf commit cbd3804
Show file tree
Hide file tree
Showing 11 changed files with 28 additions and 26 deletions.
2 changes: 2 additions & 0 deletions bakta/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from datetime import datetime
from pathlib import Path

import bakta
import bakta.constants as bc


Expand All @@ -26,6 +27,7 @@
debug = None

# input / output configuration
version = bakta.__version__
db_path = None
db_info = None
tmp_path = None
Expand Down
8 changes: 4 additions & 4 deletions bakta/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,10 @@ def check(db_path: Path) -> dict:
log.info('detected: major=%i, minor=%i, type=%s, date=%s', db_info['major'], db_info['minor'], db_info['type'], db_info['date'])
if(db_info['major'] < bakta.__db_schema_version__):
log.error('wrong database version detected! required=%i, detected=%i', bakta.__db_schema_version__, db_info['major'])
sys.exit(f"ERROR: wrong database version detected!\nBakta version {bakta.__version__} requires database version {bakta.__db_schema_version__}.x, but {db_info['major']}.{db_info['minor']} was detected. Please, update the database from https://doi.org/10.5281/zenodo.4247253")
sys.exit(f"ERROR: wrong database version detected!\nBakta version {cfg.version} requires database version {bakta.__db_schema_version__}.x, but {db_info['major']}.{db_info['minor']} was detected. Please, update the database from https://doi.org/10.5281/zenodo.4247253")
elif(db_info['major'] > bakta.__db_schema_version__):
log.error('wrong database version detected! required=%i, detected=%i', bakta.__db_schema_version__, db_info['major'])
sys.exit(f"ERROR: wrong database version detected!\nBakta version {bakta.__version__} requires database version {bakta.__db_schema_version__}.x, but {db_info['major']}.{db_info['minor']} was detected. Please, update Bakta or download a compatible database version from https://doi.org/10.5281/zenodo.4247253")
sys.exit(f"ERROR: wrong database version detected!\nBakta version {cfg.version} requires database version {bakta.__db_schema_version__}.x, but {db_info['major']}.{db_info['minor']} was detected. Please, update Bakta or download a compatible database version from https://doi.org/10.5281/zenodo.4247253")

required_db_files = FILE_NAMES
required_db_files.append('psc.dmnd' if db_info['type'] == 'full' else 'pscc.dmnd')
Expand Down Expand Up @@ -150,7 +150,7 @@ def main():
parser = bu.init_parser(sub_command='_db')
group_runtime = parser.add_argument_group('Runtime & auxiliary options')
group_runtime.add_argument('--help', '-h', action='help', help='Show this help message and exit')
group_runtime.add_argument('--version', '-V', action='version', version=f'%(prog)s {bakta.__version__}')
group_runtime.add_argument('--version', '-V', action='version', version=f'%(prog)s {cfg.version}')

subparsers = parser.add_subparsers(dest='subcommand', help='sub-command help')
parser_list = subparsers.add_parser('list', help='List available database versions') # add list sub-command options
Expand All @@ -166,7 +166,7 @@ def main():
parser_update.add_argument('--tmp-dir', '-t', action='store', dest='tmp_dir', default=Path.cwd(), help='Temporary directory to download & extract (default = current working directory)')

args = parser.parse_args()
print(f'Bakta software version: {bakta.__version__}')
print(f'Bakta software version: {cfg.version}')
print(f'Required database schema version: {bakta.__db_schema_version__}\n')
if(args.subcommand == 'list'):
versions = fetch_db_versions()
Expand Down
2 changes: 1 addition & 1 deletion bakta/io/gff.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def write_features(data: dict, features_by_sequence: Dict[str, dict], gff3_path:
fh.write(f"# organism {data['genome']['taxon']}\n")

fh.write('# Annotated with Bakta\n')
fh.write(f'# Software: v{bakta.__version__}\n')
fh.write(f'# Software: v{cfg.version}\n')
fh.write(f"# Database: v{cfg.db_info['major']}.{cfg.db_info['minor']}, {cfg.db_info['type']}\n")
fh.write(f'# DOI: {bc.BAKTA_DOI}\n')
fh.write(f'# URL: {bc.BAKTA_URL}\n')
Expand Down
7 changes: 3 additions & 4 deletions bakta/io/insdc.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
from Bio.Seq import Seq
from Bio.SeqFeature import SeqFeature, FeatureLocation, CompoundLocation, AfterPosition, BeforePosition

import bakta
import bakta.config as cfg
import bakta.constants as bc
import bakta.features.annotation as ba
Expand All @@ -27,7 +26,7 @@ def build_biopython_sequence_list(data: dict, features: Sequence[dict]):
sequence_features = [feat for feat in features if feat['sequence'] == seq['id']] if 'sequence' in features[0] else [feat for feat in features if feat['contig'] == seq['id']] # <1.10.0 compatibility
comment = (
'Annotated with Bakta',
f"Software: v{bakta.__version__}\n",
f"Software: v{cfg.version}\n",
f"Database: v{cfg.db_info['major']}.{cfg.db_info['minor']}, {cfg.db_info['type']}\n",
f'DOI: {bc.BAKTA_DOI}\n',
f'URL: {bc.BAKTA_URL}\n',
Expand All @@ -49,7 +48,7 @@ def build_biopython_sequence_list(data: dict, features: Sequence[dict]):
sequence_annotations = {
'molecule_type': 'DNA',
'source': data['genome'].get('taxon', ''),
'date': date.today().strftime('%d-%b-%Y').upper(),
'date': cfg.run_end.strftime('%d-%b-%Y').upper(),
'topology': seq['topology'],
'data_file_division': 'HGT' if seq['type'] == bc.REPLICON_CONTIG else 'BCT',
# 'accession': '*', # hold back until EMBL output bug is fixed in BioPython (https://github.com/biopython/biopython/pull/3572)
Expand Down Expand Up @@ -140,7 +139,7 @@ def build_biopython_sequence_list(data: dict, features: Sequence[dict]):
else:
inference.append('ab initio prediction:Prodigal:2.6')
else:
inference.append(f"ab initio prediction:Bakta:{'.'.join(bakta.__version__.split('.')[0:2])}")
inference.append(f"ab initio prediction:Bakta:{'.'.join(cfg.version.split('.')[0:2])}")
if('ncbi_nrp_id' in feature.get('ups', {})):
nrp_id = feature['ups']['ncbi_nrp_id']
inference.append(f'similar to AA sequence:{bc.DB_XREF_REFSEQ_NRP}:{nrp_id}')
Expand Down
2 changes: 1 addition & 1 deletion bakta/io/json.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def write_json(data: dict, features: Sequence[dict], json_path: Path):
psc.pop('db_xrefs')

version = OrderedDict()
version['bakta'] = bakta.__version__
version['bakta'] = cfg.version
version['db'] = {
'version': f"{cfg.db_info['major']}.{cfg.db_info['minor']}",
'type': cfg.db_info['type']
Expand Down
8 changes: 4 additions & 4 deletions bakta/io/tsv.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def write_features(sequences: Sequence[dict], features_by_sequence: Dict[str, di

with tsv_path.open('wt') as fh:
fh.write('# Annotated with Bakta\n')
fh.write(f'# Software: v{bakta.__version__}\n')
fh.write(f'# Software: v{cfg.version}\n')
fh.write(f"# Database: v{cfg.db_info['major']}.{cfg.db_info['minor']}, {cfg.db_info['type']}\n")
fh.write(f'# DOI: {bc.BAKTA_DOI}\n')
fh.write(f'# URL: {bc.BAKTA_URL}\n')
Expand Down Expand Up @@ -82,7 +82,7 @@ def write_feature_inferences(sequences: Sequence[dict], features_by_sequence: Di

with tsv_path.open('wt') as fh:
fh.write('# Annotated with Bakta\n')
fh.write(f'# Software: v{bakta.__version__}\n')
fh.write(f'# Software: v{cfg.version}\n')
fh.write(f"# Database: v{cfg.db_info['major']}.{cfg.db_info['minor']}, {cfg.db_info['type']}\n")
fh.write(f'# DOI: {bc.BAKTA_DOI}\n')
fh.write(f'# URL: {bc.BAKTA_URL}\n')
Expand Down Expand Up @@ -150,7 +150,7 @@ def write_protein_features(features: Sequence[dict], header_columns: Sequence[st
log.info('write protein feature tsv: path=%s', tsv_path)

with tsv_path.open('wt') as fh:
fh.write(f'#Annotated with Bakta (v{bakta.__version__}): https://github.com/oschwengers/bakta\n')
fh.write(f'#Annotated with Bakta (v{cfg.version}): https://github.com/oschwengers/bakta\n')
fh.write(f"#Database (v{cfg.db_info['major']}.{cfg.db_info['minor']}): https://doi.org/10.5281/zenodo.4247252\n")
fh.write('\t'.join(header_columns))
fh.write('\n')
Expand All @@ -166,7 +166,7 @@ def write_hypotheticals(hypotheticals: Sequence[dict], tsv_path: Path):
log.info('write hypothetical tsv: path=%s', tsv_path)

with tsv_path.open('wt') as fh:
fh.write(f'#Annotated with Bakta v{bakta.__version__}, https://github.com/oschwengers/bakta\n')
fh.write(f'#Annotated with Bakta v{cfg.version}, https://github.com/oschwengers/bakta\n')
fh.write(f"#Database v{cfg.db_info['major']}.{cfg.db_info['minor']}, https://doi.org/10.5281/zenodo.4247252\n")
fh.write('#Sequence Id\tStart\tStop\tStrand\tLocus Tag\tMol Weight [kDa]\tIso El. Point\tPfam hits\tDbxrefs\n')
for hypo in hypotheticals:
Expand Down
7 changes: 4 additions & 3 deletions bakta/json_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def main():
arg_group_general.add_argument('--verbose', '-v', action='store_true', help='Print verbose information')
arg_group_general.add_argument('--debug', action='store_true', help='Run Bakta in debug mode. Temp data will not be removed.')
arg_group_general.add_argument('--tmp-dir', action='store', default=None, dest='tmp_dir', help='Location for temporary files (default = system dependent auto detection)')
arg_group_general.add_argument('--version', '-V', action='version', version=f'%(prog)s {bakta.__version__}')
arg_group_general.add_argument('--version', '-V', action='version', version=f'%(prog)s {cfg.version}')
args = parser.parse_args()

############################################################################
Expand Down Expand Up @@ -77,7 +77,7 @@ def main():
log.info('verbose=%s', cfg.verbose)

if(cfg.verbose):
print(f'Bakta v{bakta.__version__}')
print(f'Bakta v{cfg.version}')
print('Options and arguments:')
print(f'\tinput: {annotation_path}')
print(f'\toutput: {cfg.output_path}')
Expand All @@ -103,6 +103,7 @@ def main():
sequence_features.append(feature)

# set global config objects based on information from imported JSON document
cfg.version = data['version']['bakta']
cfg.db_info = {
'type': data['version']['db']['type'],
'major': data['version']['db']['version'].split('.')[0],
Expand Down Expand Up @@ -188,7 +189,7 @@ def main():
fh_out.write(f"oriVs: {len([feat for feat in features if feat['type'] == bc.FEATURE_ORIV])}\n")
fh_out.write(f"oriTs: {len([feat for feat in features if feat['type'] == bc.FEATURE_ORIT])}\n")
fh_out.write('\nBakta:\n')
fh_out.write(f'Software: v{bakta.__version__}\n')
fh_out.write(f'Software: v{cfg.version}\n')
fh_out.write(f"Database: v{cfg.db_info['major']}.{cfg.db_info['minor']}, {cfg.db_info['type']}\n")
fh_out.write('DOI: 10.1099/mgen.0.000685\n')
fh_out.write('URL: github.com/oschwengers/bakta\n')
Expand Down
4 changes: 2 additions & 2 deletions bakta/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def main():
cfg.db_info = db.check(cfg.db_path)
bu.test_dependencies()
if(cfg.verbose):
print(f'Bakta v{bakta.__version__}')
print(f'Bakta v{cfg.version}')
print('Options and arguments:')
print(f'\tinput: {cfg.genome_path}')
print(f"\tdb: {cfg.db_path}, version {cfg.db_info['major']}.{cfg.db_info['minor']}, {cfg.db_info['type']}")
Expand Down Expand Up @@ -614,7 +614,7 @@ def main():
fh_out.write(f"oriVs: {len([feat for feat in features if feat['type'] == bc.FEATURE_ORIV])}\n")
fh_out.write(f"oriTs: {len([feat for feat in features if feat['type'] == bc.FEATURE_ORIT])}\n")
fh_out.write('\nBakta:\n')
fh_out.write(f'Software: v{bakta.__version__}\n')
fh_out.write(f'Software: v{cfg.version}\n')
fh_out.write(f"Database: v{cfg.db_info['major']}.{cfg.db_info['minor']}, {cfg.db_info['type']}\n")
fh_out.write('DOI: 10.1099/mgen.0.000685\n')
fh_out.write('URL: github.com/oschwengers/bakta\n')
Expand Down
4 changes: 2 additions & 2 deletions bakta/plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def main():
arg_group_general.add_argument('--verbose', '-v', action='store_true', help='Print verbose information')
arg_group_general.add_argument('--debug', action='store_true', help='Run Bakta in debug mode. Temp data will not be removed.')
arg_group_general.add_argument('--tmp-dir', action='store', default=None, dest='tmp_dir', help='Location for temporary files (default = system dependent auto detection)')
arg_group_general.add_argument('--version', action='version', version=f'%(prog)s {bakta.__version__}')
arg_group_general.add_argument('--version', action='version', version=f'%(prog)s {cfg.version}')
args = parser.parse_args()

############################################################################
Expand Down Expand Up @@ -163,7 +163,7 @@ def main():

bu.test_dependencies()
if(cfg.verbose):
print(f'Bakta v{bakta.__version__}')
print(f'Bakta v{cfg.version}')
print('Options and arguments:')
print(f'\tinput: {annotation_path}')
if(args.config): print(f'\tconfig: {args.config}')
Expand Down
4 changes: 2 additions & 2 deletions bakta/proteins.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def main():
arg_group_general.add_argument('--debug', action='store_true', help='Run Bakta in debug mode. Temp data will not be removed.')
arg_group_general.add_argument('--threads', '-t', action='store', type=int, default=0, help='Number of threads to use (default = number of available CPUs)')
arg_group_general.add_argument('--tmp-dir', action='store', default=None, dest='tmp_dir', help='Location for temporary files (default = system dependent auto detection)')
arg_group_general.add_argument('--version', '-V', action='version', version=f'%(prog)s {bakta.__version__}')
arg_group_general.add_argument('--version', '-V', action='version', version=f'%(prog)s {cfg.version}')
args = parser.parse_args()

############################################################################
Expand Down Expand Up @@ -108,7 +108,7 @@ def main():

bu.test_dependencies()
if(cfg.verbose):
print(f'Bakta v{bakta.__version__}')
print(f'Bakta v{cfg.version}')
print('Options and arguments:')
print(f'\tinput: {aa_path}')
print(f"\tdb: {cfg.db_path}, version {cfg.db_info['major']}.{cfg.db_info['minor']}")
Expand Down
6 changes: 3 additions & 3 deletions bakta/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def init_parser(sub_command: str=''):
parser = argparse.ArgumentParser(
prog=f'bakta{sub_command}',
description='Rapid & standardized annotation of bacterial genomes, MAGs & plasmids',
epilog=f'Version: {bakta.__version__}\nDOI: {bc.BAKTA_DOI}\nURL: github.com/oschwengers/bakta\n\nCitation:\n{bc.BAKTA_CITATION}',
epilog=f'Version: {cfg.version}\nDOI: {bc.BAKTA_DOI}\nURL: github.com/oschwengers/bakta\n\nCitation:\n{bc.BAKTA_CITATION}',
formatter_class=argparse.RawDescriptionHelpFormatter,
add_help=False
)
Expand Down Expand Up @@ -115,7 +115,7 @@ def parse_arguments():
arg_group_general.add_argument('--debug', action='store_true', help='Run Bakta in debug mode. Temp data will not be removed.')
arg_group_general.add_argument('--threads', '-t', action='store', type=int, default=0, help='Number of threads to use (default = number of available CPUs)')
arg_group_general.add_argument('--tmp-dir', action='store', default=None, dest='tmp_dir', help='Location for temporary files (default = system dependent auto detection)')
arg_group_general.add_argument('--version', action='version', version=f'%(prog)s {bakta.__version__}')
arg_group_general.add_argument('--version', action='version', version=f'%(prog)s {cfg.version}')
return parser.parse_args()


Expand All @@ -127,7 +127,7 @@ def setup_logger(output_path: Path, prefix: str, args: Namespace):
datefmt='%H:%M:%S',
level=logging.DEBUG if args.debug else logging.INFO
)
log.info('version=%s', bakta.__version__)
log.info('version=%s', cfg.version)
log.info('developer: Oliver Schwengers, github.com/oschwengers')
log.info('command: %s', ' '.join(sys.argv))
log.info('local time: %s', datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
Expand Down

0 comments on commit cbd3804

Please # to comment.