Skip to content

DRAM 1.5.0 bugfixes and tips #408

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
captaindet opened this issue Apr 3, 2025 · 0 comments
Open

DRAM 1.5.0 bugfixes and tips #408

captaindet opened this issue Apr 3, 2025 · 0 comments

Comments

@captaindet
Copy link

As the devs have stated that they will not further maintain version 1, I am posting here my collection of fixes and tips that enabled me to use v1.5 including KEGG/KO and UniRef databases (tested: DB setup, annotation, distill). Some of the fixes were already posted in the forum, others I found during debugging.

Starting point is the latest official release 1.5.0 from 2024-01-04:
https://github.com/WrightonLabCSU/DRAM/archive/refs/tags/v1.5.0.tar.gz

Bugfixes

  • 2 important bugfixes have been added to master since the release of v1.5.0, they can be found here v1.5.0...master, BUT NOTE:
    1. 'README.md': Does not need patching
    2. mag_annotator/annotate_bins.py/annotate_orfs() ln1045+: This fix is wrong, the warning message is not the problem, the code logic does not do what the new message claims. What happened is that the else-block has been separated from its original, logical position, see fix below
    3. mag_annotator/annotate_bins.py/annotate_called_genes_cmd() ln1604+ and mag_annotator/annotate_bins.py/annotate_called_genes() ln1628+: Probably an important fix (I haven't tested what happens w/o)
    4. scripts/DRAM-setup.py ln123+: Essential fix, DRAM-setup will not work w/o
  • mag_annotator/annotate_bins.py/annotate_orfs() ln1045+ else...logger.warning:
    the else-block (with unchanged warning message) needs to be moved back to
    where it belongs, right after the elif...kofam block ln1029+
  • mag_annotator/database_processing.py/process_vogdb() ln376: Change line
    according to VOGDB issue--extra enclosing folder #340
  • mag_annotator/annotate_vgfs.py/get_gene_order() ln189+: Change according to
    Dram-v on Virsorter2 output: pandas error, unexpected EOF, syntax error #363 Probably an important fix (I haven't tested what happens w/o)
  • mag_annotator/database_setup.py/UniRefDescription() ln43-44:
    replace the 2 occurrences of kegg_ with uniref_
  • mag_annotator/database_handler.py/set_database_paths() ln251: Add a new line to
    function signature: gene_ko_link_loc=None,
  • mag_annotator/database_processing.py/prepare_databases() ln503: in dictionary
    process_settings change line to
    'kegg': {'gene_ko_link_loc': gene_ko_link_loc, 'download_date': kegg_download_date},

Other notes/tips

  • barrnap v0.9 (https://github.com/tseemann/barrnap) is a required dependency even though it is not listed here: https://github.com/WrightonLabCSU/DRAM?tab=readme-ov-file#manual-installation
  • For some parameters, DRAM is iffy about filenames with a relative path and fails. In this
    case use an absolute path.
  • To run DRAM (DB setup and, e.g., annotate, but not distill) huge amounts of RAM are
    necessary, at least enough to hold the biggest database (all of it including
    index files etc.). This is usually the UniRef MMseqs2 DB (unless skipped): For a recent UniRef90 download this is >700GB. ATTN: DRAM does not complain or
    fail if the RAM is insufficient, instead it gets stuck indefinitely.
  • DRAM performance (DB setup and annotate) is highly impacted by I/O speed. In my experience, DRAM cannot at all be used with UniRef on a standard file system / disk storage in HPC. However, everything works reasonably well if you have a node attached SSD: Build the DRAM database on the SDD (and archive somewhere else afterwards) and copy the database to the SSD before annotating.
  • Output directories (-o parameter) must not exist, DRAM will fail otherwise.
  • Bash globbing (wildcards) on the command line do not work. However, globbing for input files is applied within DRAM if the pattern is provided as a single quotation string literal, e.g. 'mydata/*.fa'.
  • The KEGG gene_ko_link_loc file must be a 2 column TSV file with a KO in every line, in the 2nd column (the ko: tag is not required). I have used the following command to extract this information from the dat files that nowadays come with KEGG:
gzip -cd "path-to-KEGG/prokaryotes.dat.gz" \
    | sed -nE 's/^(\S+)\s+(K\S+).*/\1\t\2/p' \
    > "./prokaryotes_2c.tsv"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant