From a72e53d94f9436607815d0df074c7b55756f2749 Mon Sep 17 00:00:00 2001 From: Andrew Tritt Date: Tue, 13 Jun 2023 15:57:02 -0700 Subject: [PATCH] Update documentation and release issues (#35) * Add epilog to classify help statement - This was causing the printing of the help statement to break. * Make description and epilog more informative * Add logos for RTD * Add gtnet commands to coverage tests * Fix typo * Add background to logo * Only display logo on home page * Tweak logos * Shorten logo * Move Github README to RST * Add CodeCov badge --- .github/workflows/run_coverage.yml | 3 ++ README.md => README.rst | 63 ++++++++++++----------------- docs/source/conf.py | 9 ++++- docs/source/gtnet-favicon.png | Bin 0 -> 27508 bytes docs/source/gtnet.png | Bin 0 -> 32999 bytes src/gtnet/classify.py | 5 ++- 6 files changed, 38 insertions(+), 42 deletions(-) rename README.md => README.rst (72%) create mode 100644 docs/source/gtnet-favicon.png create mode 100644 docs/source/gtnet.png diff --git a/.github/workflows/run_coverage.yml b/.github/workflows/run_coverage.yml index 665a948..e01dffa 100644 --- a/.github/workflows/run_coverage.yml +++ b/.github/workflows/run_coverage.yml @@ -55,6 +55,9 @@ jobs: - name: Run tests and generate coverage report run: | pytest --cov + gtnet predict data/small.fna > data/small.raw.test.csv + gtnet filter --fpr 0.05 data/small.raw.csv > data/small.tax.test.csv + gtnet classify --fpr 0.05 data/small.fna > data/small.tax.test.csv python -m coverage xml # codecov uploader requires xml format python -m coverage report -m diff --git a/README.md b/README.rst similarity index 72% rename from README.md rename to README.rst index 66d8abc..82f1dab 100644 --- a/README.md +++ b/README.rst @@ -1,42 +1,29 @@ +===== GTNet ===== -The Genome Taxonomy Network for assigning microbial taxonomy to DNA sequences - -## Getting started -Installing GTNet from PyPI -```bash -pip install gtnet -``` - -Installing GTNet from source -```bash -pip install git+https://github.com/exabiome/gtnet.git -``` - -## Running GTNet -Getting taxonomic classifications for all sequences in a Fasta file. -```bash -gtnet classify data/small.fna > data/small.tax.csv -``` - -### GTNet steps -GTNet consists of two main steps: 1) get scored predictions of taxonoimc assignments and 2) filter -scored predictions. The previous command combines these two commands into a single command with a -default false-positive rate. The two steps have been separated into two commands for those who -want to experiment with different false-positive rates. - -Getting predictions for all sequences in a Fasta file. -```bash -gtnet predict data/small.fna > data/small.tax.raw.csv -``` -The first time you run `predict`, the model file will be downloaded and stored in the -same directory that the `gtnet` package is installed in. Therefore, for the this to be successful, -you must have write privileges on the directory that `gtnet` is installed in. - -Filtering predictions -```bash -gtnet filter --fpr 0.05 data/small.tax.raw.csv > data/small.tax.csv -``` +The Genome Taxonomy Network for assigning GTDB microbial taxonomy to DNA sequences. + +Documentation can be found at https://gtnet.readthedocs.io. + +Latest Release +============== + +.. image:: https://badge.fury.io/py/gtnet.svg + :target: https://badge.fury.io/py/gtnet + +Overall Health +============== + +.. image:: https://codecov.io/gh/exabiome/gtnet/branch/main/graph/badge.svg?token=AFJH59YZ3U + :target: https://codecov.io/gh/exabiome/gtnet + +.. image:: https://readthedocs.org/projects/hdmf/badge/?version=stable + :target: https://hdmf.readthedocs.io/en/stable/?badge=stable + +Installation +============ + +See the `GTNet documentation `_. LICENSE ======= @@ -101,5 +88,5 @@ NOTICE. This Software was developed under funding from the U.S. Department of Energy and the U.S. Government consequently retains certain rights. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the -Software to reproduce, distribute copies to the public, prepare derivative +Software to reproduce, distribute copies to the public, prepare derivative works, and perform publicly and display publicly, and to permit others to do so. diff --git a/docs/source/conf.py b/docs/source/conf.py index 56b92f4..ea9cfe6 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -136,6 +136,10 @@ # documentation. # html_theme_options = {} +html_theme_options = { + 'logo_only': True, +} + # Add any paths that contain custom themes here, relative to this directory. # html_theme_path = [] @@ -148,12 +152,13 @@ # The name of an image file (relative to this directory) to place at the top # of the sidebar. -# html_logo = None +html_logo = "gtnet.png" # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. -# html_favicon = None +html_favicon = "gtnet-favicon.png" + # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/docs/source/gtnet-favicon.png b/docs/source/gtnet-favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..49461eebe9040dd843e53ef5a92ee81e212699d7 GIT binary patch literal 27508 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 literal 0 HcmV?d00001 diff --git a/docs/source/gtnet.png b/docs/source/gtnet.png new file mode 100644 index 0000000000000000000000000000000000000000..acbf8557d8bc2255e0bb1c652c8b5e6b201db75b GIT binary patch literal 32999 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 literal 0 HcmV?d00001 diff --git a/src/gtnet/classify.py b/src/gtnet/classify.py index 4ac1ca2..81f4d92 100644 --- a/src/gtnet/classify.py +++ b/src/gtnet/classify.py @@ -20,8 +20,9 @@ def classify(argv=None): argv : Namespace, default=sys.argv The command-line arguments to use for running this command """ - desc = "Get taxonomic classification for each sequence in a Fasta file." - epi = () + desc = "Get filtered taxonomic classification for each sequence in a Fasta file." + epi = ("This command will output a taxonomic classification filtered to a specified false-positive rate " + "for each sequence") parser = argparse.ArgumentParser(description=desc, epilog=epi) parser.add_argument('fasta', type=str, help='the Fasta files to do taxonomic classification on')