{"id":26572626,"url":"https://github.com/WrightonLabCSU/DRAM","last_synced_at":"2025-03-23T00:35:23.223Z","repository":{"id":37327063,"uuid":"170215083","full_name":"WrightonLabCSU/DRAM","owner":"WrightonLabCSU","description":"Distilled and Refined Annotation of Metabolism: A tool for the annotation and curation of function for microbial and viral genomes","archived":false,"fork":false,"pushed_at":"2025-02-26T15:55:45.000Z","size":15321,"stargazers_count":267,"open_issues_count":115,"forks_count":54,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-14T08:17:02.869Z","etag":null,"topics":["annotation","bioinformatics","genomics","metagenome-assembled-genomes","metagenomics","microbiome","viral-genomics","viral-metagenomics"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WrightonLabCSU.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-11T22:48:25.000Z","updated_at":"2025-03-05T15:54:25.000Z","dependencies_parsed_at":"2023-02-14T11:46:02.303Z","dependency_job_id":"48241023-4a7b-481c-b39b-1e85edfcb75f","html_url":"https://github.com/WrightonLabCSU/DRAM","commit_stats":{"total_commits":765,"total_committers":18,"mean_commits":42.5,"dds":0.2705882352941177,"last_synced_commit":"840346c55011adc80d7559e279c097a5d4bb3a20"},"previous_names":["shafferm/dram"],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WrightonLabCSU%2FDRAM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WrightonLabCSU%2FDRAM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WrightonLabCSU%2FDRAM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WrightonLabCSU%2FDRAM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WrightonLabCSU","download_url":"https://codeload.github.com/WrightonLabCSU/DRAM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245040214,"owners_count":20551297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["annotation","bioinformatics","genomics","metagenome-assembled-genomes","metagenomics","microbiome","viral-genomics","viral-metagenomics"],"created_at":"2025-03-23T00:34:35.136Z","updated_at":"2025-03-23T00:35:23.194Z","avatar_url":"https://github.com/WrightonLabCSU.png","language":"Python","funding_links":[],"categories":["Genome Analysis"],"sub_categories":["Genome Annotation"],"readme":"# DRAM\n[![CircleCI](https://circleci.com/gh/WrightonLabCSU/DRAM/tree/master.svg?style=svg)](https://circleci.com/gh/WrightonLabCSU/DRAM/tree/master)\n[![CircleCI](https://img.shields.io/conda/dn/bioconda/dram.svg?label=Bioconda)](https://anaconda.org/bioconda/dram)\n\nDRAM (Distilled and Refined Annotation of Metabolism) is a tool for annotating metagenomic assembled genomes and [VirSorter](https://github.com/simroux/VirSorter) identified viral contigs. DRAM annotates MAGs and viral contigs using [KEGG](https://www.kegg.jp/) (if provided by the user), [UniRef90](https://www.uniprot.org/), [PFAM](https://pfam.xfam.org/), [dbCAN](http://bcb.unl.edu/dbCAN2/), [RefSeq viral](https://www.ncbi.nlm.nih.gov/genome/viruses/), [VOGDB](http://vogdb.org/) and the [MEROPS](https://www.ebi.ac.uk/merops/) peptidase database as well as custom user databases. DRAM is run in two stages. First an annotation step to assign database identifiers to gene, and then a distill step to curate these annotations into useful functional categories. Additionally, viral contigs are further analyzed during to identify potential AMGs. This is done via assigning an auxiliary score and flags representing the confidence that a gene is both metabolic and viral.\n\nFor more detail on DRAM and how DRAM works please see our [paper](https://academic.oup.com/nar/article/48/16/8883/5884738) as well as the [wiki](https://github.com/WrightonLabCSU/DRAM/wiki).\n\nFor information on how DRAM is changing, please read the most recent [release notes](https://github.com/WrightonLabCSU/DRAM/releases/latest).\n\n### DRAM v2 Development Note\n\nThe DRAM development team is actively working on DRAM v2. We do not anticipate adding any additional functionality to DRAM, i.e. DRAM v1. Features requested for DRAM1 will be added to DRAM v2, to the best of our ability and as appropriate. \n\n#### DRAM v2 Public Beta\n\nDRAM v2 is now open for public beta testing. You can try out DRAM v2 by heading over to the dev branch of this [repository](https://github.com/WrightonLabCSU/DRAM/tree/dev)\n\nDRAM v2 was implemented in [Nextflow](https://www.nextflow.io) due to its innate scalability on HPCs and containerization, ensuring rigorous reproducibility and version control, thus making it ideally suited for high-performance computing environments. \n\n## Getting Started Part 1: Installation\n\n**NOTE** If you already have an old release of DRAM installed and just want to upgrade, then please read the set-up step before you remove your old environment.\n\nTo install DRAM you also must install some dependencies. The easiest way to install both DRAM and its dependencies is to use [conda](https://docs.conda.io/en/latest/miniconda.html),  but you can also use manual instructions, or if you are an adventurer you can install a release candidate from this repository .\n   \n### Conda Installation\n\nInstall DRAM into a new [conda](https://docs.conda.io/en/latest/) environment using the provided\nenvironment.yaml file.\n```bash\nwget https://raw.githubusercontent.com/WrightonLabCSU/DRAM/master/environment.yaml\nconda env create -f environment.yaml -n DRAM\n```\nIf this installation method is used, then all further steps should be run inside the newly created DRAM environment, or with the full path to the executable, use `which` with the environment active to find these, the eg. `which DRAM.py`. This environment can be activated using this command:\n```bash\nconda activate DRAM\n```\n\nYou have now installed DRAM, and are ready to set up the databases.\n\n### Manual Installation\n\nIf you do not install via a conda environment, then the dependencies [pandas](https://pandas.pydata.org/), [networkx](https://networkx.github.io/), [scikit-bio](http://scikit-bio.org/), [prodigal](https://github.com/hyattpd/Prodigal), [mmseqs2](https://github.com/soedinglab/mmseqs2), [hmmer](http://hmmer.org/) and [tRNAscan-SE](http://lowelab.ucsc.edu/tRNAscan-SE/) need to be installed manually. Then you can install DRAM using pip:\n```bash\npip install DRAM-bio\n```\n\nYou have now installed DRAM, and are ready to set up the databases.\n\n### Release Candidate Installation\n\nThe latest version of DRAM is often a release candidate, and these are not pushed to pypi, or Bioconda and so can't be installed with the methods above. You can tell if there is currently a release candidate by reading the [release notes](https://github.com/WrightonLabCSU/DRAM/releases).\n\nTo install a potentially unstable release candidate, follow the instructions below. Note the comments within the code sections as there is a context in which commands must be used.\n\n```bash\n# Clone the git repository and move into it\ngit clone https://github.com/WrightonLabCSU/DRAM.git\ncd DRAM\n# Install dependencies, this will also install a stable version of DRAM that will then be replaced.\nconda env create --name my_dram_env -f environment.yaml\nconda activate my_dram_env\n# Install pip\nconda install pip3\npip3 install ./\n```\n\nYou have now installed DRAM, and are ready to set up the databases.\n\n\n## Getting Started Part 2: Setup Databases\n\n### I Want to Use an Already Setup Databases\n\nIf you already installed and set up a previous version of dram and want to use your old databases, then you can do it with two steps.\n\nActivate your old DRAM environment, and save your old config:\n\n```bash\nconda activate my_old_env\nDRAM-setup.py export_config \u003e my_old_config.txt\n```\n\nActivate your new DRAM environment, and import your old databases\n\n```bash\nconda activate my_new_env\nDRAM-setup.py import_config --config_loc  my_old_config.txt\n```\n\n### I have access to KEGG\n\nSet up DRAM using the following command:\n\n```bash\nDRAM-setup.py prepare_databases --output_dir DRAM_data --kegg_loc kegg.pep\n```\n\n`kegg.pep` is the path to the amino acid FASTA file downloaded from KEGG. This can be any of the gene fasta files that are provided by the KEGG FTP server or a concatenated version of them. `DRAM_data` is the path  to the processed databases used by DRAM. If you already have any of the databases downloaded to your server and don't want to download them again then you can pass them to the `prepare_databases` command by use the `--{db_name}_loc` flags such as `--uniref_loc` and `--viral_loc`.\n\n### I don't have access to KEGG\n\nNot a problem. Then use this command:\n\n```bash\nDRAM-setup.py prepare_databases --output_dir DRAM_data\n```\n\nSimilar to above you can still provide locations of databases you have already downloaded so you don't have to do it\nagain.\n\nTo test that your set up worked use the command `DRAM-setup.py print_config` and the location of all databases provided\nwill be shown as well as the presence of additional annotation information.\n\n*NOTE:* Setting up DRAM can take a long time (up to 5 hours) and uses a large amount of memory (512 gb) by default. To\nuse less memory you can use the `--skip_uniref` flag which will reduce memory usage to ~64 gb if you do not provide KEGG\n Genes and 128 gb if you do. Depending on the number of processors which you tell  it to use (using the `--threads`\nargument) and the speed of your internet connection. On a less than 5 year old server with 10 processors it takes about\n 2 hours to process the data when databases do not need to be downloaded.\n\n## Getting Started Part 3: Usage\n\nOnce DRAM is set up you are ready to annotate some MAGs. The following command will generate your full annotation:\n\n```bash\nDRAM.py annotate -i 'my_bins/*.fa' -o annotation\n```\n\n`my_bins` should be replaced with the path to a directory which contains all of your bins you would like to annotated and `.fa` should be replaced with the file extension used for your bins (i.e. `.fasta`, `.fna`, etc). If you only need to annotate a single genome (or an entire assembly) a direct path to a nucleotide fasta should be provided. Using 20 processors, DRAM.py takes about 17 hours to annotate ~80 MAGs of medium quality or higher from a mouse gut metagenome.\n\nIn the output `annotation` folder, there will be various files. `genes.faa` and `genes.fna` are fasta files with all genes called by prodigal with additional header information gained from the annotation as nucleotide and amino acid records respectively. `genes.gff` is a GFF3 with the same annotation information as well as gene locations. `scaffolds.fna` is a collection of all scaffolds/contigs given as input to `DRAM.py annotate` with added bin information in the headers. `annotations.tsv` is the most important output of the annotation. This includes all annotation information about every gene from all MAGs. Each line is a different gene and each column contains annotation information. `trnas.tsv` contains a summary of the tRNAs found in each MAG.\n\nThen after your annotation is finished you can summarize these annotations with the following command:\n\n```bash\nDRAM.py distill -i annotation/annotations.tsv -o genome_summaries --trna_path annotation/trnas.tsv --rrna_path annotation/rrnas.tsv\n```\nThis will generate the distillate and liquor files.\n\n## System Requirements\nDRAM has a large memory burden and is designed to be run on high performance computers. DRAM annotates against a large\nvariety of databases which must be processed and stored. Setting up DRAM with KEGG Genes and UniRef90 will take up ~500\nGB of storage after processing and require ~512 GB of RAM while using KOfam and skipping UniRef90 will mean all\nprocessed databases will take up ~30 GB of disk and will only use ~128 GB of RAM while processing. DRAM annotation\nmemory usage depends on the databases used. When annotating with UniRef90, around 220 GB of RAM is required. If the KEGG\ngene database has been provided and UniRef90 is not used, then memory usage is around 100 GB of RAM. If KOfam is used to\nannotate KEGG and UniRef90 is not used, then less than 50 GB of RAM is required. DRAM can be run with any number of\nprocessors on a single node.\n\n## Citing DRAM\nThe DRAM was published in Nucleic Acids Research in 2020 and is available [here](https://academic.oup.com/nar/article/48/16/8883/5884738). If\nDRAM helps you out in your research, please cite it.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWrightonLabCSU%2FDRAM","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWrightonLabCSU%2FDRAM","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWrightonLabCSU%2FDRAM/lists"}