From ad02a5f2e52a4e6ff07ff71a6e22a53df5067828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20K=C3=B6nig?= <35546377+patrick-koenig@users.noreply.github.com> Date: Fri, 23 Aug 2024 11:48:56 +0200 Subject: [PATCH] Updates and fixes, enhanced docs --- docs/api.md | 13 +- docs/assets/Thumbs.db | Bin 0 -> 24064 bytes docs/assets/usegalaxy_eu_00.jpg | Bin 0 -> 19838 bytes docs/assets/usegalaxy_eu_01.jpg | Bin 0 -> 110558 bytes docs/assets/usegalaxy_eu_02.jpg | Bin 0 -> 15946 bytes docs/assets/usegalaxy_eu_03.jpg | Bin 0 -> 23347 bytes docs/assets/usegalaxy_eu_04.jpg | Bin 0 -> 128884 bytes docs/assets/usegalaxy_eu_05.jpg | Bin 0 -> 93498 bytes docs/cli.md | 4 +- docs/configuration.md | 109 ++++++- docs/index.md | 8 +- docs/tutorial.md | 150 ++++++++++ docs/usage.md | 33 +- mkdocs.yml | 11 +- pyproject.toml | 37 ++- src/blast2galaxy/__init__.py | 415 +++++++++++++++++++++++++- src/blast2galaxy/api/blast_request.py | 4 +- src/blast2galaxy/api/server_info.py | 42 ++- src/blast2galaxy/cli.py | 321 +++++++++++++++----- src/blast2galaxy/config.py | 76 ++++- 20 files changed, 1072 insertions(+), 151 deletions(-) create mode 100644 docs/assets/Thumbs.db create mode 100644 docs/assets/usegalaxy_eu_00.jpg create mode 100644 docs/assets/usegalaxy_eu_01.jpg create mode 100644 docs/assets/usegalaxy_eu_02.jpg create mode 100644 docs/assets/usegalaxy_eu_03.jpg create mode 100644 docs/assets/usegalaxy_eu_04.jpg create mode 100644 docs/assets/usegalaxy_eu_05.jpg create mode 100644 docs/tutorial.md diff --git a/docs/api.md b/docs/api.md index be52978..c5b37e1 100644 --- a/docs/api.md +++ b/docs/api.md @@ -13,7 +13,7 @@ This page provides API docs for the Python API of blast2galaxy. show_signature_annotations: false --> - + + + +::: blast2galaxy + handler: python + options: + show_source: false + annotations_path: brief + show_signature: true + separate_signature: true + show_signature_annotations: false \ No newline at end of file diff --git a/docs/assets/Thumbs.db b/docs/assets/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..df716b18ff5167219bd12a2623689f4014435c14 GIT binary patch literal 24064 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 S6FH-XRsM}%ZewAgCjTFF3YlsE literal 0 HcmV?d00001 diff --git a/docs/assets/usegalaxy_eu_01.jpg b/docs/assets/usegalaxy_eu_01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..094bbff6f2c862b0ff71e5d90eead6fd640f1ae0 GIT binary patch literal 110558 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 K|EU*s<=G!|A68EQ literal 0 HcmV?d00001 diff --git a/docs/assets/usegalaxy_eu_05.jpg b/docs/assets/usegalaxy_eu_05.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85deb68b8707096ea83d606befbb4567da846f9a GIT binary patch literal 93498 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 V|G(D%{}+)3@%|6I4&&FM{|B&ivNQky literal 0 HcmV?d00001 diff --git a/docs/cli.md b/docs/cli.md index 0c4947f..a91be74 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -4,4 +4,6 @@ This page provides documentation for our command line tools. ::: mkdocs-click :module: blast2galaxy.cli - :command: cli \ No newline at end of file + :command: cli + :style: plain + :list_subcommands: True \ No newline at end of file diff --git a/docs/configuration.md b/docs/configuration.md index 0edcdf5..768c54c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,5 +1,17 @@ # Configuration +blast2galaxy provides two ways to configure servers and profiles to be used with blast2galaxy. + +- **TOML file based configuration**
+ This type of configuration can be used when using the CLI or Python API of blast2galaxy. + +- **Python API based configuration**
+ This type of configuration can only be used when using the Python API of blast2galaxy. + +Both ways of configuration are described in the following sections of this page. + +## TOML file based configuration + To connect to an API of an existing Galaxy server, the user of blast2galaxy has to provide API access credentials in the form of a Galaxy API key. Furthermore, it is possible to connect via the username and password of the user account on the specific Galaxy server. For security reasons, the latter variant should only be used if the use of an API key is not possible. @@ -10,12 +22,16 @@ If it can't find a configuration file in the current working directory it looks If it can't find any configuration file an error message will be displayed. An individually named configuration file at a storage location of your choice can be set via the `--configfile=PATH` parameter of the CLI. -Example: `--configfile=/opt/myapps/config/app1.blast2galaxy.config.toml` + +Example: +``` +--configfile=/opt/myapps/config/app1.blast2galaxy.config.toml +```
-

General Structure of the config TOML

+### General Structure of the config TOML file The configuration file has two types of sections: @@ -28,7 +44,7 @@ Where `###` has to be replaced with either `default` or a unique server-ID / pro !!! note A config file must consist at least one `[servers.]` entry and one `[profiles.]` entry. - If you provide `[servers.default]` and `[profiles.default]` the `--profile` parameter of the CLI can be omitted. + If you provide `[servers.default]` and `[profiles.default]` the `--server=` and `--profile=` parameter of the CLI commands can be omitted. @@ -38,7 +54,7 @@ Where `###` has to be replaced with either `default` or a unique server-ID / pro
-

Servers

+### Servers The servers section holds one or multiple Galaxy server instances with their corresponding URLs and API-Keys. @@ -52,28 +68,28 @@ api_key = "65dcb*******************************" !!! tip - After configuration of at least one default server you can use the `list-tools` command of the CLI to get a table with all NCBI BLAST+ tools and DIAMOND available on that Galaxy server. The table also contains the Tool-IDs for configuration of the profiles and also all available sequences databases corresponding to the specific tool. + After configuration of at least one default server you can use the `list-tools` command of the CLI to get a table with all compatible NCBI BLAST+ tools and DIAMOND available on that Galaxy server. The table also contains the Tool-IDs for configuration of the profiles. List all available tools of the default server: ```bash blast2galaxy list-tools ``` - List all available tools of the server with ID server_id: + List all available tools of the server with ID `SERVER_ID`: ```bash - blast2galaxy list-tools --server=server_id + blast2galaxy list-tools --server=SERVER_ID ```
-

Profiles

+### Profiles The profiles section holds one or multiple profiles where each profile configures at least the Galaxy server and the Tool-ID to be used. Mandatory fields for each profile are: - `server`   *An ID of an configured server in the servers section* -- `tool_id`   *Tool-ID for the tool on the Galaxy server* +- `tool`   *Tool-ID for the tool on the Galaxy server* Optional fields for each profile are: @@ -84,10 +100,22 @@ Example: ```toml [profiles.default] server = "default" -tool_id = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastn_wrapper/2.14.1+galaxy2" +tool = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastn_wrapper/2.14.1+galaxy2" ``` +!!! tip + + After configuration of at least one default profile you can use the `list-dbs` command of the CLI to get a table with all available sequence databases for a specific tool. + + List all available databases of the tool with ID `TOOL_ID` on the default server: + ```bash + blast2galaxy list-tools --tool=TOOL_ID + ``` + List all available databases of the tool with ID `TOOL_ID` on the server with ID `SERVER_ID`: + ```bash + blast2galaxy list-tools --server=SERVER_ID --tool=TOOL_ID + ``` @@ -105,24 +133,75 @@ api_key = "1k32z*******************************" [profiles.default] server = "default" -tool_id = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastn_wrapper/2.14.1+galaxy2" +tool = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastn_wrapper/2.14.1+galaxy2" [profiles.blastp] server = "default" -tool_id = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastp_wrapper/2.14.1+galaxy2" +tool = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastp_wrapper/2.14.1+galaxy2" [profiles.blastp_plantae_genes] server = "default" -tool_id = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastp_wrapper/2.14.1+galaxy2" +tool = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastp_wrapper/2.14.1+galaxy2" database = "plant_proteins" [profiles.diamond_blastp_plantae_genes] server = "default" -tool_id = "toolshed.g2.bx.psu.edu/repos/bgruening/diamond/bg_diamond/2.0.15+galaxy0" +tool = "toolshed.g2.bx.psu.edu/repos/bgruening/diamond/bg_diamond/2.0.15+galaxy0" database = "plant_proteins" [profiles.blastn_vertebrata] server = "default" -tool_id = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastn_wrapper/2.14.1+galaxy2" +tool = "toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastn_wrapper/2.14.1+galaxy2" database = "vertebrata_proteins" +``` + +## Python API based configuration + +If you use the Python API of blast2galaxy it is also possible to provide the configuration programmatically without the need for an `.blast2galaxy.toml` file. + +Example for API based configuration during runtime for setting a default server and a default profile: +```python +import blast2galaxy + +blast2galaxy.config.add_default_server( + server_url = 'https://usegalaxy.eu', + api_key = 'your_api_key' +) + +blast2galaxy.config.add_default_profile( + server = 'default', + tool = 'toolshed.g2.bx.psu.edu/repos/devteam/ncbi_blast_plus/ncbi_blastp_wrapper/2.14.1+galaxy2' +) + +blast2galaxy.blastp( + query = 'prot.fasta', + db = 'database_id', + out = 'result_blastp.txt', + outfmt = '6' +) +``` + +If you want to add further servers and profiles beside the defaults you can use `blast2galaxy.config.add_server()` and `blast2galaxy.config.add_profile()`: +```python +import blast2galaxy + +blast2galaxy.config.add_server( + server = 'myserver', + server_url = 'https://usegalaxy.eu', + api_key = 'your_api_key' +) + +blast2galaxy.config.add_profile( + profile = 'diamond', + server = 'myserver', + tool = 'toolshed.g2.bx.psu.edu/repos/bgruening/diamond/bg_diamond/2.0.15+galaxy0' +) + +blast2galaxy.diamond( + profile = 'diamond', + query = 'prot.fasta', + db = 'database_id', + out = 'result_diamond_blastp.txt', + outfmt = '6' +) ``` \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 9bc3187..fc3fd70 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,16 +1,20 @@ -# Welcome to blast2galaxy +# Welcome to blast2galaxy documentation blast2galaxy provides a Python API and CLI to perform BLAST and DIAMOND queries against Galaxy servers that have the NCBI BLAST+ tools [[1]](#1) and DIAMOND [[2]](#2) installed. +blast2galaxy is available as a PyPI package (pip) and tested to be working with the following Python versions: 3.10, 3.11, 3.12 + ![Screenshot](figure_1_v3.png) -*Figure 1: Blast2galaxy provides a high-level convenience layer between any Galaxy server with NCBI BLAST+ tools and/or DIAMOND installed and different types of clients and usage scenarios. Researchers, applications and computational pipelines can either use the Python-API or the CLI of blast2galaxy to send requests for a BLAST search to any compatible Galaxy server. The use of BLAST+ tools and/or DIAMOND by multiple applications and the provision of corresponding BLAST databases can be centralized and made reusable by use of a Galaxy server.* +*Figure 1: blast2galaxy provides a high-level convenience layer between any Galaxy server with NCBI BLAST+ tools and/or DIAMOND installed and different types of clients and usage scenarios. Researchers, applications and computational pipelines can either use the Python-API or the CLI of blast2galaxy to send requests for a BLAST search to any compatible Galaxy server. The use of BLAST+ tools and/or DIAMOND by multiple applications and the provision of corresponding BLAST databases can be centralized and made reusable by use of a Galaxy server.* + Please read the [CLI Reference](cli.md) if you want to use blast2galaxy on the command line as drop-in replacement for NCBI BLAST+ tools or DIAMOND or read the [API Reference](api.md) if you want to use blast2galaxy inside a Python application to perform BLAST or DIAMOND queries against a Galaxy server. +

References

[1] Peter J. A. Cock, John M. Chilton, Björn Grüning, James E. Johnson, Nicola Soranzo, NCBI BLAST+ integrated into Galaxy, GigaScience, Volume 4, Issue 1, December 2015, s13742-015-0080-7, [https://doi.org/10.1186/s13742-015-0080-7](https://doi.org/10.1186/s13742-015-0080-7) diff --git a/docs/tutorial.md b/docs/tutorial.md new file mode 100644 index 0000000..1cb8634 --- /dev/null +++ b/docs/tutorial.md @@ -0,0 +1,150 @@ +# Tutorial + +This tutorial described all process from installation to performing a BLAST search on the usegalaxy.eu instance. + +## 1. Obtaining API key from usegalaxy.eu + +1. Login into your account at [usegalaxy.eu](https://usegalaxy.eu/). If you don't have an account yet you can create one using LifeScience Login or the registration. +

+ +2. After login into your account: In the main menu at the top of the page: click on `User` and in the appearing sub menu on `Preferences`: ![Galaxy User Settings](assets/usegalaxy_eu_00.jpg) +

+ +3. On the then appearing `User Preferences` page click on `Manage API Key`: + ![Galaxy User Preferences](assets/usegalaxy_eu_01.jpg) +

+ +4. On the then appearing `Manage API Key` page click on the button `Create a new key`: + ![Galaxy Manage API Key](assets/usegalaxy_eu_02.jpg) +

+ +4. Click on the `Copy Key` button to copy your newly created API key into your clipboard. + ![Galaxy Manage API Key](assets/usegalaxy_eu_03.jpg) + +5. Please paste the API key into an editor for later usage. + + +## 2. Installation of blast2galaxy + +Install blast2galaxy by using the following command. + +!!! note + It is highly recommended to install blast2galaxy in an isolated environment created with an environment management tool like conda/mamba, pixi, virtualenv or similar. + +``` +pip install blast2galaxy +``` + +After installation you can check if the blast2galaxy CLI is available by executing the following command: + +``` +blast2galaxy --help +``` + +You should then see some help information about the blast2galaxy CLI: + +``` +Usage: blast2galaxy [OPTIONS] COMMAND [ARGS]... + + Main entrypoint. + +Options: + --help Show this message and exit. + +Commands: + blastn + blastp + blastx + diamond-blastp + diamond-blastx + list-tools + show-config + tblastn +``` + +## 3. Configuration of blast2galaxy + +To configure blast2galaxy it is needed to create a config file named `.blast2galaxy.toml` in your home directory or in the current working directory where you execute blast2galaxy. + +Lets create a config file in your home directory: + +``` +touch ~/.blast2galaxy.toml +``` + +You can now add the usegalaxy.eu Server as default server by pasting the following content to the config file. +Please replace `PASTE_YOUR_API_KEY_HERE` with the API key you created and stored previously. + +``` +[servers.default] +server_url = "https://usegalaxy.eu" +api_key = "PASTE_YOUR_API_KEY_HERE" +``` + +After this initial configuration you can use the following command to get a list of compatible BLAST and DIAMOND tools available on usegalaxy.eu: + +``` +blast2galaxy list-tools +``` + +The output of this command should look similar to this: + +![BLAST and DIAMOND tools on usegalaxy.eu](assets/usegalaxy_eu_04.jpg) + +You can use this information to configure a default profile for blast2galaxy. + +To do this add the following content to your existing `.blast2galaxy.toml` config file: + +``` +[profiles.default] +server = "default" +tool = "toolshed.g2.bx.psu.edu/repos/bgruening/diamond/bg_diamond/2.0.15+galaxy0" +``` + +## 4. Obtaining available sequence databases for a BLAST or DIAMOND tool + +Once you have configured a default server in the `.blast2galaxy.toml` config file you can get a list of available sequence databases for a specific tool. + +For this tutorial we want to list all databases for the DIAMOND tool with the ID `toolshed.g2.bx.psu.edu/repos/bgruening/diamond/bg_diamond/2.0.15+galaxy0`: +``` +blast2galaxy list-dbs --tool=toolshed.g2.bx.psu.edu/repos/bgruening/diamond/bg_diamond/2.0.15+galaxy0 +``` + +The output of this command should look similar to this: + +![BLAST and DIAMOND tools on usegalaxy.eu](assets/usegalaxy_eu_05.jpg) + +For the example search request in step 5 we will use the database with ID `uniprot_swissprot_2023_03`. + + +## 5. Executing search requests + +In the previous steps you have configured a default server and a default profile for blast2galaxy. +The default profile points to the DIAMOND tool on usegalaxy.eu. +Therefore you can now execute DIAMOND searches on usegalaxy.eu: + +1. Create an example FASTA file called `query_protein.fasta` with a protein sequence to be searched with DIAMOND on usegalaxy.eu: + ``` + >sp|P62805|H4_HUMAN Histone H4 OS=Homo sapiens OX=9606 GN=H4C1 PE=1 SV=2 + MSGRGKGGKGLGKGGAKRHRKVLRDNIQGITKPAIRRLARRGGVKRISGLIYEETRGVLK + VFLENVIRDAVTYTEHAKRKTVTAMDVVYALKRQGRTLYGFGG + ``` + +2. Execute DIAMOND search with blast2galaxy: + ``` + blast2galaxy diamond-blastp --query=query_protein.fasta --db=uniprot_swissprot_2023_03 --out=result_diamond_query_protein.txt --outfmt=6 + ``` + +3. Check the result of the DIAMOND search: + ``` + less result_diamond_query_protein.txt + ``` + The result file should contain a search result similar to the following content: + ``` + sp|P62805|H4_HUMAN sp|P62803|H4_BOVIN 100 103 0 0 1 103 1 103 5.60e-66 196 + sp|P62805|H4_HUMAN sp|P62800|H4_CAIMO 100 103 0 0 1 103 1 103 5.60e-66 196 + sp|P62805|H4_HUMAN sp|Q7KQD1|H4_CHAVR 100 103 0 0 1 103 1 103 5.60e-66 196 + sp|P62805|H4_HUMAN sp|P62801|H4_CHICK 100 103 0 0 1 103 1 103 5.60e-66 196 + sp|P62805|H4_HUMAN sp|Q4R362|H4_MACFA 100 103 0 0 1 103 1 103 5.60e-66 196 + ... + ``` \ No newline at end of file diff --git a/docs/usage.md b/docs/usage.md index 01f0cb6..fb53bd1 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -5,7 +5,7 @@ After installation of blast2galaxy you can use the `blast2galaxy` CLI to perform BLAST and DIAMOND searches against the Galaxy servers you have configured in the `.blast2galaxy.config.toml` file -`blast2galaxy blastn --help` + You can find all possible subcommands and parameters in the [CLI reference](cli.md). @@ -13,13 +13,36 @@ You can find all possible subcommands and parameters in the [CLI reference](cli. -### List available tools and sequence database of a Galaxy server +### List available and compatible BLAST+ and DIAMOND tools of a Galaxy server -After configuration of at least one default server you can use the `list-tools` command of the CLI to get a table with all NCBI BLAST+ tools and DIAMOND available on that Galaxy server. The table also contains the Tool-IDs for configuration of the blast2galaxy profiles and also all available sequences databases corresponding to the specific tool. +After configuration of at least one default server you can use the `list-tools` command of the CLI to get a table with all NCBI BLAST+ tools and DIAMOND available on that Galaxy server. The table also contains the Tool-IDs for configuration of the blast2galaxy profiles. -List all available tools of the default server: `blast2galaxy list-tools` +List all available tools of the default server: +```shell +blast2galaxy list-tools +``` + +List all available tools of the server with the ID `SERVER_ID`: +``` +blast2galaxy list-tools --server=SERVER_ID +``` + + +### List available tools and sequence databases of a Galaxy server -List all available tools of the server with ID server_id: `blast2galaxy list-tools --server=server_id` +After configuration of at least one default profile you can use the `list-dbs` command of the CLI to get a table with all available sequence databases for a specific tool. + +List all available databases of the tool with ID `TOOL_ID` on the default server: +```bash +blast2galaxy list-tools --tool=TOOL_ID +``` + +If you have configured multiple servers in the config file `.blast2galaxy.toml`, you can also obtain the available databases for a tool on a specific server other than the default server. + +List all available databases of the tool with ID `TOOL_ID` on the server with ID `SERVER_ID`: +```bash +blast2galaxy list-tools --server=SERVER_ID --tool=TOOL_ID +``` ### Perform search requests diff --git a/mkdocs.yml b/mkdocs.yml index f9bf7d4..bf4b0e3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,7 +1,5 @@ site_name: blast2galaxy Documentation - -site_url: https://example.com/ - +repo_name: blast2galaxy repo_url: https://github.com/IPK-BIT/blast2galaxy edit_uri: edit/main/docs/ @@ -10,6 +8,7 @@ nav: - Installation: installation.md - Configuration: configuration.md - Usage: usage.md + - Tutorial: tutorial.md - CLI Reference: cli.md - API Reference: api.md @@ -17,12 +16,18 @@ theme: name: material icon: repo: fontawesome/brands/github + features: + - content.code.annotate + - content.code.copy + - content.tabs.link + - search.highlight plugins: - mkdocstrings markdown_extensions: + - attr_list - mkdocs-click - admonition - pymdownx.details diff --git a/pyproject.toml b/pyproject.toml index 0c52c69..32dc35e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "blast2galaxy" -version = "0.1.0" +version = "0.1.0a1" keywords = ["bioinformatics", "blast", "sequence alignment"] description = "" authors = ["Patrick König "] @@ -34,3 +34,38 @@ blast2galaxy = "blast2galaxy.cli:cli" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" + +[project] +name = "blast2galaxy" +description = "A Python package with a CLI and API to perform BLAST queries against Galaxy servers" +requires-python = ">=3.10" +license = "MIT" +authors = [ + {name = "Patrick König"}, +] +maintainers = [ + {name = "Patrick König", email = "koenig@ipk-gatersleben.de"}, +] +readme = "README.md" + +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX :: Linux", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: Implementation :: CPython", + "Topic :: Scientific/Engineering :: Bio-Informatics", +] + +[project.urls] +Documentation = "https://ipk-bit.github.io/blast2galaxy/" +Source = "https://github.com/IPK-BIT/blast2galaxy/" +Homepage = "https://github.com/IPK-BIT/blast2galaxy/" \ No newline at end of file diff --git a/src/blast2galaxy/__init__.py b/src/blast2galaxy/__init__.py index 9807b7c..a1bcc0f 100644 --- a/src/blast2galaxy/__init__.py +++ b/src/blast2galaxy/__init__.py @@ -1,5 +1,9 @@ +from typing import Optional +from typing_extensions import Annotated + import click +from .api.choices import ChoicesBlastType, ChoicesTaskBlastn, ChoicesTaskTblastn, ChoicesTaskBlastp, ChoicesTaskBlastx, ChoicesOutfmt, ChoicesOutfmtDiamond, ChoicesYesNo, ChoicesStrand from . import cli @@ -23,25 +27,420 @@ def __check_required_but_missing_params(_method, _kwargs): def __invoke(cli_method, _kwargs): __check_required_but_missing_params(cli_method, _kwargs) ctx = click.Context(cli_method) - ctx.invoke(cli_method, **_kwargs) + return ctx.invoke(cli_method, **_kwargs) + + + + + +def list_tools( + server: Optional[str] = 'default', + type: Optional[ChoicesBlastType | None] = None, + ): + """ + list_tools + + list available and compatible BLAST+ and DIAMOND tools installed on a Galaxy server + + Arguments: + server: Server-ID + type: limit the list to a specific tool type (blastn, tblast, blastp, blastx, diamond) + """ + params = locals() + params['calltype'] = 'api' + return __invoke(cli.list_tools, params) + + + +def list_dbs( + tool: str, + server: Optional[str] = 'default' + ): + """ + list_dbs + + list available databases of a BLAST+ or DIAMOND tool installed on a Galaxy server + + Arguments: + server: Server-ID + tool: Tool-ID + """ + params = locals() + params['calltype'] = 'api' + return __invoke(cli.list_dbs, params) + + + +#def blastn(**kwargs): +# __invoke(cli.blastn, kwargs) + + +def blastn( + profile: Optional[str] = '', + query: str = '', + task: Optional[ChoicesTaskBlastn] = ChoicesTaskBlastn.megablast, + db: Optional[str | None] = None, + evalue: Optional[str] = '0.001', + out: str = '', + outfmt: Optional[ChoicesOutfmt] = ChoicesOutfmt.tab_std.value, + html: Optional[bool] = False, + dust: Optional[ChoicesYesNo] = ChoicesYesNo.yes.value, + strand: Optional[ChoicesStrand] = ChoicesStrand.both.value, + max_hsps: Optional[int | None] = None, + perc_identity: Optional[float] = 0.0, + word_size: Optional[int | None] = None, + ungapped: Optional[bool] = False, + parse_deflines: Optional[bool] = False, + qcov_hsp_perc: Optional[float] = 0.0, + window_size: Optional[int | None] = None, + gapopen: Optional[int | None] = None, + gapextend: Optional[int | None] = None + ): + """ + blastn + + search nucleotide databases using a nucleotide query + + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + html: Format output as HTML document + dust: Filter out low complexity regions (with DUST) + strand: Query strand(s) to search against database/subject + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + perc_identity: Percent identity cutoff + word_size: Word size for wordfinder algorithm + ungapped: Perform ungapped alignment only? + parse_deflines: Should the query and subject defline(s) be parsed? + qcov_hsp_perc: Minimum query coverage per hsp (percentage, 0 to 100) + window_size: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + """ + + params = locals() + params['calltype'] = 'api' + __invoke(cli.blastn, params) + + + +def tblastn( + profile: str = '', + query: str = '', + task: Optional[ChoicesTaskTblastn] = ChoicesTaskTblastn.tblastn, + db: Optional[str] = None, + evalue: Optional[str] = '0.001', + out: str = '', + outfmt: Optional[ChoicesOutfmt] = ChoicesOutfmt.tab_std.value, + html: Optional[bool] = False, + seg: Optional[ChoicesYesNo] = ChoicesYesNo.yes.value, + db_gencode: Optional[int] = None, + matrix: Optional[str] = None, + max_target_seqs: Optional[int] = None, + num_descriptions: Optional[int] = None, + num_alignments: Optional[int] = None, + threshold: Optional[float] = None, + max_hsps: Optional[int] = None, + word_size: Optional[int] = None, + ungapped: Optional[bool] = False, + parse_deflines: Optional[bool] = False, + qcov_hsp_perc: Optional[float] = 0.0, + window_size: Optional[int] = None, + gapopen: Optional[int] = None, + gapextend: Optional[int] = None, + comp_based_stats: Optional[str] = '2', + ): + """ + tblastn + + search translated nucleotide databases using a protein query + + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + html: Format output as HTML document + seg: Filter out low complexity regions (with SEG) + db_gencode: Genetic code to use to translate database/subjects (see user manual for details) + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + num_descriptions: Number of database sequences to show one-line descriptions for. Not applicable for outfmt > 4. Default = 500 * Incompatible with: max_target_seqs + num_alignments: Number of database sequences to show alignments for. Default = 250 * Incompatible with: max_target_seqs + threshold: Minimum word score such that the word is added to the BLAST lookup table + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + word_size: Word size for wordfinder algorithm + ungapped: Perform ungapped alignment only? + parse_deflines: Should the query and subject defline(s) be parsed? + qcov_hsp_perc: Minimum query coverage per hsp (percentage, 0 to 100) + window_size: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + """ + + params = locals() + params['calltype'] = 'api' + __invoke(cli.tblastn, params) + + + + +def blastp( + profile: str = '', + query: str = '', + task: Optional[ChoicesTaskBlastp] = ChoicesTaskBlastp.blastp, + db: Optional[str] = None, + evalue: Optional[str] = '0.001', + out: str = '', + outfmt: Optional[ChoicesOutfmt] = ChoicesOutfmt.tab_std.value, + html: Optional[bool] = False, + seg: Optional[ChoicesYesNo] = ChoicesYesNo.yes.value, + matrix: Optional[str] = None, + max_target_seqs: Optional[int] = None, + num_descriptions: Optional[int] = None, + num_alignments: Optional[int] = None, + threshold: Optional[float] = None, + max_hsps: Optional[int] = None, + word_size: Optional[int] = None, + ungapped: Optional[bool] = False, + parse_deflines: Optional[bool] = False, + qcov_hsp_perc: Optional[float] = 0.0, + window_size: Optional[int] = None, + gapopen: Optional[int] = None, + gapextend: Optional[int] = None, + comp_based_stats: Optional[str] = '2', + use_sw_tback: Optional[bool] = False + ): + """ + blastp + + search protein databases using a protein query + + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + html: Format output as HTML document + seg: Filter out low complexity regions (with SEG) + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + num_descriptions: Number of database sequences to show one-line descriptions for. Not applicable for outfmt > 4. Default = 500 * Incompatible with: max_target_seqs + num_alignments: Number of database sequences to show alignments for. Default = 250 * Incompatible with: max_target_seqs + threshold: Minimum word score such that the word is added to the BLAST lookup table + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + word_size: Word size for wordfinder algorithm + ungapped: Perform ungapped alignment only? + parse_deflines: Should the query and subject defline(s) be parsed? + qcov_hsp_perc: Minimum query coverage per hsp (percentage, 0 to 100) + window_size: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + use_sw_tback: Compute locally optimal Smith-Waterman alignments? + """ + + params = locals() + params['calltype'] = 'api' + __invoke(cli.blastp, params) + + + +def blastx( + profile: str = '', + query: str = '', + task: Optional[ChoicesTaskBlastx] = ChoicesTaskBlastx.blastx, + db: Optional[str] = None, + evalue: Optional[str] = '0.001', + out: str = '', + outfmt: Optional[ChoicesOutfmt] = ChoicesOutfmt.tab_std.value, + html: Optional[bool] = False, + seg: Optional[ChoicesYesNo] = ChoicesYesNo.yes.value, + matrix: Optional[str] = None, + max_target_seqs: Optional[int] = None, + num_descriptions: Optional[int] = None, + num_alignments: Optional[int] = None, + threshold: Optional[float] = None, + max_hsps: Optional[int] = None, + word_size: Optional[int] = None, + ungapped: Optional[bool] = False, + parse_deflines: Optional[bool] = False, + qcov_hsp_perc: Optional[float] = 0.0, + window_size: Optional[int] = None, + gapopen: Optional[int] = None, + gapextend: Optional[int] = None, + comp_based_stats: Optional[str] = '2', + ): + """ + blastx + + search protein databases using a translated nucleotide query + + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + html: Format output as HTML document + seg: Filter out low complexity regions (with SEG) + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + num_descriptions: Number of database sequences to show one-line descriptions for. Not applicable for outfmt > 4. Default = 500 * Incompatible with: max_target_seqs + num_alignments: Number of database sequences to show alignments for. Default = 250 * Incompatible with: max_target_seqs + threshold: Minimum word score such that the word is added to the BLAST lookup table + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + word_size: Word size for wordfinder algorithm + ungapped: Perform ungapped alignment only? + parse_deflines: Should the query and subject defline(s) be parsed? + qcov_hsp_perc: Minimum query coverage per hsp (percentage, 0 to 100) + window_size: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + """ + + params = locals() + params['calltype'] = 'api' + __invoke(cli.blastx, params) + + + +def diamond_blastp( + profile: str = '', + query: str = '', + task: Optional[ChoicesTaskBlastp] = ChoicesTaskBlastp.blastp, + db: Optional[str] = None, + evalue: Optional[str] = '0.001', + out: str = '', + outfmt: Optional[ChoicesOutfmtDiamond] = ChoicesOutfmtDiamond.blast_pairwise.value, + faster: Optional[bool] = False, + fast: Optional[bool] = False, + mid_sensitive: Optional[bool] = False, + sensitive: Optional[bool] = False, + more_sensitive: Optional[bool] = False, + very_sensitive: Optional[bool] = False, + ultra_sensitive: Optional[bool] = False, + strand: Optional[ChoicesStrand] = ChoicesStrand.both.value, + matrix: Optional[str] = 'BLOSUM62', + max_target_seqs: Optional[int] = None, + max_hsps: Optional[int] = None, + window: Optional[int] = None, + gapopen: Optional[int] = None, + gapextend: Optional[int] = None, + comp_based_stats: Optional[str] = '1', + ): + """ + diamond_blastp + search protein databases using a protein query with DIAMOND + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + faster: faster mode + fast: fast mode + mid_sensitive: mid_sensitive mode + sensitive: sensitive mode + more_sensitive: more_sensitive mode + very_sensitive: very_sensitive mode + ultra_sensitive: ultra_sensitive mode + strand: Query strand(s) to search against database/subject + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + window: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + """ + params = locals() + params['calltype'] = 'api' + __invoke(cli.diamond_blastp, params) -def list_tools(**kwargs): - __invoke(cli.list_tools, kwargs) -def blastn(**kwargs): - __invoke(cli.blastn, kwargs) +def diamond_blastx( + profile: str = '', + query: str = '', + task: Optional[ChoicesTaskBlastp] = ChoicesTaskBlastp.blastp, + db: Optional[str] = None, + evalue: Optional[str] = '0.001', + out: str = '', + outfmt: Optional[ChoicesOutfmtDiamond] = ChoicesOutfmtDiamond.blast_pairwise.value, + faster: Optional[bool] = False, + fast: Optional[bool] = False, + mid_sensitive: Optional[bool] = False, + sensitive: Optional[bool] = False, + more_sensitive: Optional[bool] = False, + very_sensitive: Optional[bool] = False, + ultra_sensitive: Optional[bool] = False, + strand: Optional[ChoicesStrand] = ChoicesStrand.both.value, + matrix: Optional[str] = 'BLOSUM62', + max_target_seqs: Optional[int] = None, + max_hsps: Optional[int] = None, + window: Optional[int] = None, + gapopen: Optional[int] = None, + gapextend: Optional[int] = None, + comp_based_stats: Optional[str] = '1', + ): + """ + diamond_blastx -def tblastn(**kwargs): - __invoke(cli.tblastn, kwargs) + search protein databases using a translated nucleotide query with DIAMOND + + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + faster: faster mode + fast: fast mode + mid_sensitive: mid_sensitive mode + sensitive: sensitive mode + more_sensitive: more_sensitive mode + very_sensitive: very_sensitive mode + ultra_sensitive: ultra_sensitive mode + strand: Query strand(s) to search against database/subject + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + window: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + """ + params = locals() + params['calltype'] = 'api' + __invoke(cli.diamond_blastx, params) -__all__ = ['blastn'] \ No newline at end of file +__all__ = ['list_tools', 'list_dbs', 'blastn', 'tblastn', 'blastp', 'blastx', 'diamond_blastp', 'diamond_blastx'] \ No newline at end of file diff --git a/src/blast2galaxy/api/blast_request.py b/src/blast2galaxy/api/blast_request.py index 24fa525..0705116 100644 --- a/src/blast2galaxy/api/blast_request.py +++ b/src/blast2galaxy/api/blast_request.py @@ -335,7 +335,7 @@ def request(params): tool_inputs_dict = tool_inputs.to_dict() print('='*150) print(json.dumps(tool_inputs_dict, indent=4)) - print('+ tool_id = ', profile['tool_id']) + print('+ tool_id = ', profile['tool']) print('+ history_id = ', history_id) print('='*150) @@ -344,7 +344,7 @@ def request(params): run_tool_result = gi.tools.run_tool( history_id = history_id, - tool_id = str(profile['tool_id']), + tool_id = str(profile['tool']), tool_inputs = tool_inputs ) diff --git a/src/blast2galaxy/api/server_info.py b/src/blast2galaxy/api/server_info.py index 1c74d1d..1a263d3 100644 --- a/src/blast2galaxy/api/server_info.py +++ b/src/blast2galaxy/api/server_info.py @@ -8,7 +8,7 @@ def get_available_tools_and_databases(server = 'default', blast_type = None): gi = config.get_galaxy_instance(server=server) blast_tool_ids = [] - blast_tools_databases = [] + #blast_tools_databases = [] blast_tools_databases_dict = {} tool_id_pattern_to_tool_type = { @@ -19,6 +19,14 @@ def get_available_tools_and_databases(server = 'default', blast_type = None): 'bg_diamond/': 'diamond' } + compatible_versions = { + 'blastn': ['2.10.1+galaxy0', '2.14.1+galaxy0', '2.14.1+galaxy1'], + 'tblastn': ['2.10.1+galaxy0', '2.14.1+galaxy0', '2.14.1+galaxy1'], + 'blastx': ['2.10.1+galaxy0', '2.14.1+galaxy0', '2.14.1+galaxy1'], + 'blastp': ['2.10.1+galaxy0', '2.14.1+galaxy0', '2.14.1+galaxy1'], + 'diamond': ['2.0.15+galaxy0'] + } + tool_name_by_tool_id = {} if blast_type: @@ -32,30 +40,34 @@ def get_available_tools_and_databases(server = 'default', blast_type = None): blast_tool_ids_to_match = tool_id_pattern_to_tool_type.keys() tools = gi.tools.get_tools() + for tool in tools: matches = [x in tool['id'] for x in blast_tool_ids_to_match] if any(matches): - blast_tool_ids.append(tool['id']) which_tool = list(compress(blast_tool_ids_to_match, matches))[0] - tool_name_by_tool_id[tool['id']] = tool_id_pattern_to_tool_type[which_tool] + tool_name = tool_id_pattern_to_tool_type[which_tool] + tool_name_by_tool_id[tool['id']] = tool_name + + if tool['version'] in compatible_versions[tool_name]: + blast_tool_ids.append(tool['id']) + + #if tool['id'] == 'ncbi_tblastn_wrapper_faba': + # print(json.dumps(tool, indent=2)) for blast_tool_id in blast_tool_ids: - blast_tool_io_details = gi.tools.show_tool(blast_tool_id, io_details=True) + blast_tool_details = gi.tools.show_tool(blast_tool_id, io_details=True) blast_tool_databases = {} - blast_tool_types = {} - for _input in blast_tool_io_details['inputs']: + #if blast_tool_id == 'ncbi_tblastn_wrapper_faba': + # print(json.dumps(blast_tool_details, indent=2)) - if _input['name'] == 'blast_type': - for _option in _input['options']: - blast_tool_types[_option[1]] = _option[0] + for _input in blast_tool_details['inputs']: # NCBI BLAST+ if _input['name'] == 'db_opts': for _case in _input['cases']: if _case['value'] == 'db': for __input in _case['inputs']: - #print(__input) if __input['name'] == 'database': for _database in __input['options']: blast_tool_databases[_database[1]] = _database[0] @@ -65,17 +77,15 @@ def get_available_tools_and_databases(server = 'default', blast_type = None): for _case in _input['cases']: if _case['value'] == 'indexed': for __input in _case['inputs']: - #print(__input) if __input['name'] == 'index': for _database in __input['options']: blast_tool_databases[_database[1]] = _database[0] - blast_tool_entry = {'blast_tool_id': blast_tool_id, 'available_databases': blast_tool_databases, 'available_blast_types': blast_tool_types} - blast_tools_databases.append(blast_tool_entry) + blast_tools_databases_dict[blast_tool_id] = { 'tool_name': tool_name_by_tool_id[blast_tool_id], - 'available_databases': blast_tool_databases.keys(), - 'available_blast_types': blast_tool_types.keys() + 'version': blast_tool_details['version'], + 'available_databases': blast_tool_databases } - return blast_tool_ids, blast_tools_databases, blast_tools_databases_dict \ No newline at end of file + return blast_tools_databases_dict \ No newline at end of file diff --git a/src/blast2galaxy/cli.py b/src/blast2galaxy/cli.py index 5d053d9..9c86ad0 100644 --- a/src/blast2galaxy/cli.py +++ b/src/blast2galaxy/cli.py @@ -2,6 +2,10 @@ from typing import Optional from typing_extensions import Annotated +from rich.console import Console +from rich.table import Table +from rich import box + from .api import blast_request as api from .api.choices import ChoicesBlastType, ChoicesTaskBlastn, ChoicesTaskTblastn, ChoicesTaskBlastp, ChoicesTaskBlastx, ChoicesOutfmt, ChoicesOutfmtDiamond, ChoicesYesNo, ChoicesStrand @@ -15,15 +19,7 @@ @click.group(name='blast2galaxy') def cli(): - """Main entrypoint.""" - - - - -#@cli.command() -#@click.option("-d", "--debug", help="Include debug output.") -#def build(debug): -# """Build production assets.""" + pass @@ -31,15 +27,14 @@ def cli(): @cli.command() def show_config(): - from rich.console import Console - from rich.table import Table - from rich import box + """ + Show information about the currently available configuration loaded from a .blast2galaxy.toml file + """ from . import config try: - config_toml_path = config.get_config_toml_path() - config = config.load_config_toml() + config, config_toml_path = config.load_config_toml() table = Table(show_lines=True, box=box.SQUARE) table.add_column('Server ID', justify='left', style='white', no_wrap=True) @@ -60,7 +55,7 @@ def show_config(): table.add_column('Tool ID', justify='left', style='white') for profile_id, profile_config in config['profiles'].items(): - table.add_row(profile_id, profile_config['server'], profile_config['tool_id']) + table.add_row(profile_id, profile_config['server'], profile_config['tool']) console = Console() console.print('\n[underline]Configured profiles:') @@ -74,71 +69,92 @@ def show_config(): -# @cli.command() -# def test_rich(): -# from rich.console import Console -# from rich.table import Table - -# table = Table() - -# table.add_column("Released", justify="right", style="cyan", no_wrap=True) -# table.add_column("Title", style="magenta") -# table.add_column("Box Office", justify="right", style="green") - -# table.add_row("Dec 20, 2019", "Star Wars: The Rise of Skywalker", "$952,110,690") -# table.add_row("May 25, 2018", "Solo: A Star Wars Story", "$393,151,347") -# table.add_row("Dec 15, 2017", "Star Wars Ep. V111: The Last Jedi", "$1,332,539,889") -# table.add_row("Dec 16, 2016", "Rogue One: A Star Wars Story", "$1,332,439,889") - -# console = Console() -# console.print(table) - - - - -# @cli.command() -# def test_config(): -# from . import config -# test = config.get_profile(profile='univec') -# print(test) - - - - - @cli.command() @click.option('--server', help='Server-ID as in your config TOML', type=str, default='default', show_default=True) -@click.option('--type', help='Type of BLAST search', type=click.Choice(ChoicesBlastType, case_sensitive=False)) +@click.option('--type', help='Type of BLAST search', type=click.Choice(ChoicesBlastType, case_sensitive=False), default=None) def list_tools( server: str = '', type: Optional[ChoicesBlastType | None] = None, + **kwargs ): - from rich.console import Console - from rich.table import Table - from rich import box + """ + list available and compatible BLAST+ and DIAMOND tools installed on a Galaxy server + """ + + #print('==============================') + #print(server) + #print(type) + #print(kwargs) + #exit() - blast_tool_ids, blast_tools_databases, blast_tools_databases_dict = server_info.get_available_tools_and_databases( + blast_tools_databases_dict = server_info.get_available_tools_and_databases( server = server, blast_type = get_value(type) ) + if 'calltype' in kwargs and kwargs['calltype'] == 'api': + return blast_tools_databases_dict + table = Table(show_lines=True, box=box.SQUARE) # MINIMAL_DOUBLE_HEAD SQUARE table.add_column('Tool', justify='left', style='white', no_wrap=True) table.add_column('Tool ID', justify='left', style='white', no_wrap=True) - table.add_column('Available databases', justify='left', style='white') + table.add_column('Tool Version', justify='left', style='white') for tool_id, tool_specs in blast_tools_databases_dict.items(): - dbs = ', '.join(list(tool_specs['available_databases'])) - table.add_row(tool_specs['tool_name'], tool_id, dbs) + table.add_row(tool_specs['tool_name'], tool_id, tool_specs['version']) console = Console() console.print('\n[underline]Available BLAST tools and corresponding databases:\n') console.print(table) + # print('+++ TEST +++') + # #global config + # print(config) + # print(config.get_conf()) + # print('///////////////') + # print(conf.config) +@cli.command() +@click.option('--server', help='Server-ID as in your config TOML', type=str, default='default', show_default=True) +@click.option('--tool', help='Tool-ID of a tool available on the Galaxy server', type=str, required=True) +def list_dbs( + server: str = '', + tool: str = '', + **kwargs + ): + """ + list available databases of a BLAST+ or DIAMOND tool installed on a Galaxy server + """ + + tool_id = tool + + blast_tools_databases_dict = server_info.get_available_tools_and_databases(server = server) + + if tool_id in blast_tools_databases_dict: + + if 'calltype' in kwargs and kwargs['calltype'] == 'api': + return blast_tools_databases_dict[tool_id]['available_databases'] + + table = Table(show_lines=True, box=box.SQUARE) # MINIMAL_DOUBLE_HEAD SQUARE + table.add_column('Database ID', justify='left', style='white', no_wrap=True) + table.add_column('Database Description', justify='left', style='white', no_wrap=True) + + for db_id, db_desc in blast_tools_databases_dict[tool_id]['available_databases'].items(): + table.add_row(db_id, db_desc) + + console = Console() + console.print(f'\n[underline]Available databases for tool with ID `{tool_id}`:\n') + console.print(table) + + else: + console = Console() + console.print(f'\n[red]ERROR: A tool with ID `{tool_id}` does not exist on the Galaxy server `{server}`.\n') + + + @cli.command() @@ -162,7 +178,7 @@ def list_tools( @click.option('--gapopen', help=HELP.gapopen, type=click.IntRange(0)) @click.option('--gapextend', help=HELP.gapextend, type=click.IntRange(0)) def blastn( - profile: str = '', + profile: Optional[str] = '', query: str = '', task: Optional[ChoicesTaskBlastn] = ChoicesTaskBlastn.megablast, db: Optional[str | None] = None, @@ -183,33 +199,32 @@ def blastn( gapextend: Optional[int | None] = None ): """ - blastn - - blastn for searching nucleotide query sequence in a nucleotides BLAST database + search nucleotide databases using a nucleotide query + """ + """ Arguments: profile: the profile from .blast2galaxy.config.toml query: file path with your query sequence task: the blastn task: megablast or something db: the BLAST database to search in - evalue: todo - out: todo - outfmt: todo - html: todo - dust: todo - strand: todo - max_hsps: todo - perc_identity: todo - word_size: todo - ungapped: todo - parse_deflines: todo - qcov_hsp_perc: todo - window_size: todo - gapopen: todo - gapextend: todo + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + html: Format output as HTML document + dust: Filter out low complexity regions (with DUST) + strand: Query strand(s) to search against database/subject + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + perc_identity: Percent identity cutoff + word_size: Word size for wordfinder algorithm + ungapped: Perform ungapped alignment only? + parse_deflines: Should the query and subject defline(s) be parsed? + qcov_hsp_perc: Minimum query coverage per hsp (percentage, 0 to 100) + window_size: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap """ - params = locals() params['tool'] = 'blastn' #print(params) @@ -280,6 +295,37 @@ def tblastn( gapextend: Optional[int] = None, comp_based_stats: Optional[str] = '2', ): + """ + search translated nucleotide databases using a protein query + """ + + """ + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + html: Format output as HTML document + seg: Filter out low complexity regions (with SEG) + db_gencode: Genetic code to use to translate database/subjects (see user manual for details) + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + num_descriptions: Number of database sequences to show one-line descriptions for. Not applicable for outfmt > 4. Default = 500 * Incompatible with: max_target_seqs + num_alignments: Number of database sequences to show alignments for. Default = 250 * Incompatible with: max_target_seqs + threshold: Minimum word score such that the word is added to the BLAST lookup table + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + word_size: Word size for wordfinder algorithm + ungapped: Perform ungapped alignment only? + parse_deflines: Should the query and subject defline(s) be parsed? + qcov_hsp_perc: Minimum query coverage per hsp (percentage, 0 to 100) + window_size: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + """ params = locals() params['tool'] = 'tblastn' @@ -344,6 +390,37 @@ def blastp( comp_based_stats: Optional[str] = '2', use_sw_tback: Optional[bool] = False ): + """ + search protein databases using a protein query + """ + + """ + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + html: Format output as HTML document + seg: Filter out low complexity regions (with SEG) + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + num_descriptions: Number of database sequences to show one-line descriptions for. Not applicable for outfmt > 4. Default = 500 * Incompatible with: max_target_seqs + num_alignments: Number of database sequences to show alignments for. Default = 250 * Incompatible with: max_target_seqs + threshold: Minimum word score such that the word is added to the BLAST lookup table + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + word_size: Word size for wordfinder algorithm + ungapped: Perform ungapped alignment only? + parse_deflines: Should the query and subject defline(s) be parsed? + qcov_hsp_perc: Minimum query coverage per hsp (percentage, 0 to 100) + window_size: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + use_sw_tback: Compute locally optimal Smith-Waterman alignments? + """ params = locals() params['tool'] = 'blastp' @@ -407,6 +484,36 @@ def blastx( gapextend: Optional[int] = None, comp_based_stats: Optional[str] = '2', ): + """ + search protein databases using a translated nucleotide query + """ + + """ + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + html: Format output as HTML document + seg: Filter out low complexity regions (with SEG) + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + num_descriptions: Number of database sequences to show one-line descriptions for. Not applicable for outfmt > 4. Default = 500 * Incompatible with: max_target_seqs + num_alignments: Number of database sequences to show alignments for. Default = 250 * Incompatible with: max_target_seqs + threshold: Minimum word score such that the word is added to the BLAST lookup table + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + word_size: Word size for wordfinder algorithm + ungapped: Perform ungapped alignment only? + parse_deflines: Should the query and subject defline(s) be parsed? + qcov_hsp_perc: Minimum query coverage per hsp (percentage, 0 to 100) + window_size: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + """ params = locals() params['tool'] = 'blastx' @@ -467,14 +574,41 @@ def diamond_blastp( strand: Optional[ChoicesStrand] = ChoicesStrand.both.value, matrix: Optional[str] = 'BLOSUM62', max_target_seqs: Optional[int] = None, - #threshold: Optional[float] = None, max_hsps: Optional[int] = None, - #ungapped: Optional[bool] = False, window: Optional[int] = None, gapopen: Optional[int] = None, gapextend: Optional[int] = None, comp_based_stats: Optional[str] = '1', ): + """ + search protein databases using a protein query with DIAMOND + """ + + """ + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + faster: faster mode + fast: fast mode + mid_sensitive: mid_sensitive mode + sensitive: sensitive mode + more_sensitive: more_sensitive mode + very_sensitive: very_sensitive mode + ultra_sensitive: ultra_sensitive mode + strand: Query strand(s) to search against database/subject + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + window: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + """ params = locals() params['tool'] = 'diamond_blastp' @@ -510,9 +644,7 @@ def diamond_blastp( @click.option('--strand', help=HELP.strand, type=click.Choice(ChoicesStrand, case_sensitive=False), default=ChoicesStrand.both.value, show_default=True) @click.option('--matrix', help = HELP.matrix, type=str, default='BLOSUM62', show_default=True) @click.option('--max-target-seqs', help = HELP.max_target_seqs, type=click.IntRange(1), default=500, show_default=True) -#@click.option('--threshold', help = HELP.threshold, type=click.FloatRange(0.0)) @click.option('--max-hsps', help=HELP.max_hsps, type=int) -#@click.option('--ungapped', help=HELP.ungapped, is_flag=True) @click.option('--window', help=HELP.window_size, type=click.IntRange(1)) @click.option('--gapopen', help=HELP.gapopen, type=click.IntRange(0)) @click.option('--gapextend', help=HELP.gapextend, type=click.IntRange(0)) @@ -535,14 +667,41 @@ def diamond_blastx( strand: Optional[ChoicesStrand] = ChoicesStrand.both.value, matrix: Optional[str] = 'BLOSUM62', max_target_seqs: Optional[int] = None, - #threshold: Optional[float] = None, max_hsps: Optional[int] = None, - #ungapped: Optional[bool] = False, window: Optional[int] = None, gapopen: Optional[int] = None, gapextend: Optional[int] = None, comp_based_stats: Optional[str] = '1', ): + """ + search protein databases using a translated nucleotide query with DIAMOND + """ + + """ + Arguments: + profile: the profile from .blast2galaxy.config.toml + query: file path with your query sequence + task: the blastn task: megablast or something + db: the BLAST database to search in + evalue: Expectation value cutoff + out: Path / filename of file to store the BLAST result + outfmt: Output format + faster: faster mode + fast: fast mode + mid_sensitive: mid_sensitive mode + sensitive: sensitive mode + more_sensitive: more_sensitive mode + very_sensitive: very_sensitive mode + ultra_sensitive: ultra_sensitive mode + strand: Query strand(s) to search against database/subject + matrix: Scoring matrix name (normally BLOSUM62) + max_target_seqs: Maximum number of aligned sequences to keep (value of 5 or more is recommended) Default = 500 + max_hsps: Maximum number of HSPs (alignments) to keep for any single query-subject pair + window: Multiple hits window size: use 0 to specify 1-hit algorithm, leave blank for default + gapopen: Cost to open a gap + gapextend: Cost to extend a gap + comp_based_stats: Use composition-based statistics: D or d: default (equivalent to 2 ); 0 or F or f: No composition-based statistics; 1: Composition-based statistics as in NAR 29:2994-3005, 2001; 2 or T or t : Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence properties; 3: Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally + """ params = locals() params['tool'] = 'diamond_blastx' diff --git a/src/blast2galaxy/config.py b/src/blast2galaxy/config.py index 17af768..bb8182a 100644 --- a/src/blast2galaxy/config.py +++ b/src/blast2galaxy/config.py @@ -10,7 +10,7 @@ class ConfigHolder: def __init__(self): - self.config = None + self.config = {} conf = ConfigHolder() @@ -24,43 +24,87 @@ def set_config(config): print('Set conf to: ', conf.config) +def add_server(server, server_url, api_key): + if 'servers' not in conf.config: + conf.config['servers'] = {} + + conf.config['servers'][server] = { + 'server_url': server_url, + 'api_key': api_key + } + +def add_profile(profile, server, tool): + if 'profiles' not in conf.config: + conf.config['profiles'] = {} + + conf.config['profiles'][profile] = { + 'server': server, + 'tool': tool + } + +def add_default_server(server_url, api_key): + add_server('default', server_url, api_key) + +def add_default_profile(server_id, tool): + add_profile('default', server_id, tool) + + def load_config_toml(): + + if conf.config: + #print('HAS runtime config!!!') + #print(conf) + #print(conf.config) + #print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^') + return conf.config, False + config_path_cwd = Path.cwd().joinpath('.blast2galaxy.toml') config_path_home_dir = Path.home().joinpath('.blast2galaxy.toml') try: with open(config_path_cwd, 'rb') as f: config = tomllib.load(f) - return config + return config, config_path_cwd except FileNotFoundError as e: try: with open(config_path_home_dir, 'rb') as f: config = tomllib.load(f) - return config + return config, config_path_home_dir except FileNotFoundError as e: err_msg = 'Could not find the config file `.blast2galaxy.toml` in the current working directory or in your home directory: ' + str(Path.home()) - raise Exception(err_msg) from e + #raise Exception(err_msg) from e + print('ERROR: ', err_msg) + exit(1) def get_profile(server='default', profile=None): - config = load_config_toml() + config, _ = load_config_toml() + #print('================================') + #print(config) + #import json #print(json.dumps(config, indent=4)) #exit() if profile: - if profile in config['profiles'].keys(): - config_profile = config['profiles'][profile] - else: # use default profile - config_profile = config['profiles']['default'] - - if config_profile['server'] in config['servers'].keys(): - config_server = config['servers'][ config_profile['server'] ] - else: - exit(f'ERROR: The server `{server}` is not defined in the config TOML!') - - config_merged = config_server | config_profile + try: + if profile in config['profiles'].keys(): + config_profile = config['profiles'][profile] + else: # use default profile + config_profile = config['profiles']['default'] + + if config_profile['server'] in config['servers'].keys(): + config_server = config['servers'][ config_profile['server'] ] + else: + exit(f'ERROR: The server `{server}` is not defined in the config TOML!') + + config_merged = config_server | config_profile + + except KeyError as e: + err_msg = f'The profile `{profile}` could not be found in the configuration.' + print('ERROR: ', err_msg) + exit(1) else: # no profile given, just use server argument of get_profile()