viralQC 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ .venv/
2
+ .venv
3
+
4
+ # Python build outputs
5
+ dist/
6
+ build/
7
+ *.egg-info/
8
+ .DS_Store
9
+
10
+ # Snakemake and test outputs
11
+ .snakemake/
12
+ tests/
13
+ estudo_ref/
14
+ datasets/
15
+ __pycache__/
viralqc-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Instituto Todos pela Saúde (ITpS)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,4 @@
1
+ include README.md
2
+ include pyproject.toml
3
+ recursive-include viralqc/config/ *.yml
4
+ recursive-include viralqc *.py
viralqc-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,195 @@
1
+ Metadata-Version: 2.4
2
+ Name: viralQC
3
+ Version: 0.1.0
4
+ Summary: A tool and package for quality control of consensus virus genomes.
5
+ Project-URL: Homepage, https://github.com/InstitutoTodosPelaSaude/viralQC
6
+ Author-email: Filipe Zimmer Dezordi <zimmer.filipe@gmail.com>
7
+ License: MIT
8
+ License-File: LICENSE
9
+ Keywords: python,quality-control,snakemake,virus
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
16
+ Classifier: Topic :: Utilities
17
+ Requires-Python: <3.12,>=3.8
18
+ Requires-Dist: colorlog>=6.3
19
+ Requires-Dist: fastapi>=0.116
20
+ Requires-Dist: pandas>=2.2
21
+ Requires-Dist: python-multipart==0.0.20
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: typer>=0.16
24
+ Requires-Dist: uvicorn[standard]>=0.35
25
+ Provides-Extra: all
26
+ Requires-Dist: vqc[api,cli]; extra == 'all'
27
+ Provides-Extra: api
28
+ Requires-Dist: fastapi>=0.116; extra == 'api'
29
+ Requires-Dist: python-multipart==0.0.20; extra == 'api'
30
+ Requires-Dist: uvicorn[standard]>=0.35; extra == 'api'
31
+ Provides-Extra: cli
32
+ Requires-Dist: colorlog>=6.3; extra == 'cli'
33
+ Requires-Dist: typer>=0.16; extra == 'cli'
34
+ Provides-Extra: dev
35
+ Requires-Dist: black>=24.3; extra == 'dev'
36
+ Requires-Dist: pytest>=8.0; extra == 'dev'
37
+ Description-Content-Type: text/markdown
38
+
39
+ ## Install
40
+
41
+ ### From pip
42
+
43
+ First, install the dependencies:
44
+
45
+ - [Snakemake 7.32](https://snakemake.readthedocs.io/en/v7.32.0/getting_started/installation.html)
46
+ - [Ncbi-blast 2.16](https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.16.0/)
47
+ - [Nextclade 3.15](https://docs.nextstrain.org/projects/nextclade/en/3.15.3/user/nextclade-cli/installation/)
48
+ - [Seqtk 1.5](https://github.com/lh3/seqtk/releases/tag/v1.5)
49
+ - [Python < 3.12](https://www.python.org/downloads/)
50
+
51
+ or with micromamba
52
+
53
+ ```bash
54
+ micromamba install \
55
+ -c conda-forge \
56
+ -c bioconda \
57
+ "python>=3.8.0,<3.12.0" \
58
+ "snakemake-minimal>=7.32.0,<7.33.0" \
59
+ "blast>=2.16.0,<2.17.0" \
60
+ "nextclade>=3.15.0,<3.16.0" \
61
+ "seqtk>=1.5.0,<1.6.0"
62
+ ```
63
+
64
+ Then, install viralQC
65
+
66
+ ```bash
67
+ pip install viralQC
68
+ ```
69
+
70
+ ### From Source
71
+
72
+ ```bash
73
+ git clone https://github.com/InstitutoTodosPelaSaude/viralQC.git
74
+ cd viralQC
75
+ ```
76
+
77
+ #### Dependencies
78
+
79
+ ```bash
80
+ micromamba env create -f env.yml
81
+ micromamba activate viralQC
82
+ ```
83
+
84
+ #### viralQC
85
+
86
+ ```bash
87
+ pip install .
88
+ ```
89
+
90
+ ### Check installation (CLI)
91
+
92
+ ```bash
93
+ vqc --help
94
+ ```
95
+
96
+ ## Usage (CLI)
97
+
98
+ ### get-nextclade-datasets
99
+
100
+ This command configures local datasets using nextclade. It is necessary to run at least once to generate a local copy of the nextclade datasets, before running the `run-from-fasta` command
101
+
102
+ ```bash
103
+ vqc get-nextclade-datasets --cores 2
104
+ ```
105
+
106
+ A directory name can be specified, the default is `datasets`.
107
+
108
+ ```bash
109
+ vqc get-nextclade-datasets --cores 2 --datasets-dir <directory_name>
110
+ ```
111
+
112
+ ### run-from-fasta
113
+
114
+ This command runs several steps to identify viruses represented in the input FASTA file and executes Nextclade for each identified virus/dataset. There are two modes for viral identification:
115
+
116
+ - nextclade (default): Run `nextclade sort`
117
+ - blast: Run `blastn`.
118
+
119
+ #### run-from-fasta (nextclade)
120
+
121
+ ```bash
122
+ vqc run-from-fasta --sequences-fasta test_data/sequences.fasta
123
+ ```
124
+
125
+ Some parameters can be specified:
126
+
127
+ - `--output-dir` — Output directory name. **Default:** `output`
128
+ - `--datasets-dir` — Path to the local Nextclade datasets directory. **Default:** `datasets`
129
+ - `--ns-min-score` — Minimum score used by the Nextclade `sort` command. **Default:** `0.1`
130
+ - `--ns-min-hits` — Minimum number of hits for Nextclade to consider a dataset. **Default:** `10`
131
+ - `--cores` — Number of threads used in `nextclade sort` and `nextclade run`. **Default:** `1`
132
+
133
+ The output directory has the following structure:
134
+
135
+ ```
136
+ ├── <datasets> # Output from nextclade sort; sequences for each dataset split into sequences.fa files.
137
+ ├── datasets_selected.tsv # Formatted nextclade sort output showing the mapping between input sequences and local datasets.
138
+ ├── <virus/dataset>.nextclade.tsv # Nextclade run output for each identified virus, including clade assignments and QC metrics.
139
+ ├── unmapped_sequences.txt # Names of input sequences that were not mapped to any virus.
140
+ └── viruses.tsv # Nextclade sort output showing the mapping between input sequences and remote
141
+ ```
142
+
143
+ #### run-from-fasta (nextclade)
144
+
145
+ For a run-from-fasta analysis using BLAST to identify the corresponding virus, a BLAST database must first be created:
146
+
147
+ ```bash
148
+ vqc get-blast-database
149
+ ```
150
+
151
+ Some parameters can be specified:
152
+
153
+ - `--output-dir` — Path to store the BLAST database.. **Default:** `datasets`
154
+ - `--datasets-dir` — Path of local nextclade datasets. **Default:** `datasets`
155
+ - `--cores` — Number of threads used in `nextclade sort` and `nextclade run`. **Default:** `1`
156
+
157
+
158
+ Then:
159
+
160
+ ```bash
161
+ vqc run-from-fasta --sequences-fasta test_data/sequences.fasta --sort-mode blast
162
+ ```
163
+
164
+ Some parameters can be specified:
165
+
166
+ - `--output-dir` — Output directory name. **Default:** `output`
167
+ - `--datasets-dir` — Path to the local BLAST database directory. **Default:** `datasets`
168
+ - `--cores` — Number of threads used in `nextclade sort` and `nextclade run`. **Default:** `1`
169
+
170
+ The output directory has the following structure:
171
+
172
+ ```bash
173
+ ├── datasets_selected.tsv # Mapping between input sequences and local datasets.
174
+ ├── <virus/dataset>.nextclade.tsv # Nextclade run output for each identified virus, including clade assignments and QC metrics.
175
+ ├── sequences.<virus/dataset>.fasta # Input sequences split by virus/dataset.
176
+ ├── unmapped_sequences.txt # Names of input sequences that were not mapped to any virus.
177
+ └── viruses.tsv # BLAST output.
178
+ ```
179
+
180
+ ## Usage (API)
181
+
182
+ ```bash
183
+ vqc-server
184
+ ```
185
+
186
+ Go to `http://127.0.0.1:8000/docs`
187
+
188
+ ### Development
189
+
190
+ Install development dependencies and run `black` into `viralqc` directory.
191
+
192
+ ```bash
193
+ pip install -e ".[dev]"
194
+ black viralqc
195
+ ```
@@ -0,0 +1,157 @@
1
+ ## Install
2
+
3
+ ### From pip
4
+
5
+ First, install the dependencies:
6
+
7
+ - [Snakemake 7.32](https://snakemake.readthedocs.io/en/v7.32.0/getting_started/installation.html)
8
+ - [Ncbi-blast 2.16](https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.16.0/)
9
+ - [Nextclade 3.15](https://docs.nextstrain.org/projects/nextclade/en/3.15.3/user/nextclade-cli/installation/)
10
+ - [Seqtk 1.5](https://github.com/lh3/seqtk/releases/tag/v1.5)
11
+ - [Python < 3.12](https://www.python.org/downloads/)
12
+
13
+ or with micromamba
14
+
15
+ ```bash
16
+ micromamba install \
17
+ -c conda-forge \
18
+ -c bioconda \
19
+ "python>=3.8.0,<3.12.0" \
20
+ "snakemake-minimal>=7.32.0,<7.33.0" \
21
+ "blast>=2.16.0,<2.17.0" \
22
+ "nextclade>=3.15.0,<3.16.0" \
23
+ "seqtk>=1.5.0,<1.6.0"
24
+ ```
25
+
26
+ Then, install viralQC
27
+
28
+ ```bash
29
+ pip install viralQC
30
+ ```
31
+
32
+ ### From Source
33
+
34
+ ```bash
35
+ git clone https://github.com/InstitutoTodosPelaSaude/viralQC.git
36
+ cd viralQC
37
+ ```
38
+
39
+ #### Dependencies
40
+
41
+ ```bash
42
+ micromamba env create -f env.yml
43
+ micromamba activate viralQC
44
+ ```
45
+
46
+ #### viralQC
47
+
48
+ ```bash
49
+ pip install .
50
+ ```
51
+
52
+ ### Check installation (CLI)
53
+
54
+ ```bash
55
+ vqc --help
56
+ ```
57
+
58
+ ## Usage (CLI)
59
+
60
+ ### get-nextclade-datasets
61
+
62
+ This command configures local datasets using nextclade. It is necessary to run at least once to generate a local copy of the nextclade datasets, before running the `run-from-fasta` command
63
+
64
+ ```bash
65
+ vqc get-nextclade-datasets --cores 2
66
+ ```
67
+
68
+ A directory name can be specified, the default is `datasets`.
69
+
70
+ ```bash
71
+ vqc get-nextclade-datasets --cores 2 --datasets-dir <directory_name>
72
+ ```
73
+
74
+ ### run-from-fasta
75
+
76
+ This command runs several steps to identify viruses represented in the input FASTA file and executes Nextclade for each identified virus/dataset. There are two modes for viral identification:
77
+
78
+ - nextclade (default): Run `nextclade sort`
79
+ - blast: Run `blastn`.
80
+
81
+ #### run-from-fasta (nextclade)
82
+
83
+ ```bash
84
+ vqc run-from-fasta --sequences-fasta test_data/sequences.fasta
85
+ ```
86
+
87
+ Some parameters can be specified:
88
+
89
+ - `--output-dir` — Output directory name. **Default:** `output`
90
+ - `--datasets-dir` — Path to the local Nextclade datasets directory. **Default:** `datasets`
91
+ - `--ns-min-score` — Minimum score used by the Nextclade `sort` command. **Default:** `0.1`
92
+ - `--ns-min-hits` — Minimum number of hits for Nextclade to consider a dataset. **Default:** `10`
93
+ - `--cores` — Number of threads used in `nextclade sort` and `nextclade run`. **Default:** `1`
94
+
95
+ The output directory has the following structure:
96
+
97
+ ```
98
+ ├── <datasets> # Output from nextclade sort; sequences for each dataset split into sequences.fa files.
99
+ ├── datasets_selected.tsv # Formatted nextclade sort output showing the mapping between input sequences and local datasets.
100
+ ├── <virus/dataset>.nextclade.tsv # Nextclade run output for each identified virus, including clade assignments and QC metrics.
101
+ ├── unmapped_sequences.txt # Names of input sequences that were not mapped to any virus.
102
+ └── viruses.tsv # Nextclade sort output showing the mapping between input sequences and remote
103
+ ```
104
+
105
+ #### run-from-fasta (nextclade)
106
+
107
+ For a run-from-fasta analysis using BLAST to identify the corresponding virus, a BLAST database must first be created:
108
+
109
+ ```bash
110
+ vqc get-blast-database
111
+ ```
112
+
113
+ Some parameters can be specified:
114
+
115
+ - `--output-dir` — Path to store the BLAST database.. **Default:** `datasets`
116
+ - `--datasets-dir` — Path of local nextclade datasets. **Default:** `datasets`
117
+ - `--cores` — Number of threads used in `nextclade sort` and `nextclade run`. **Default:** `1`
118
+
119
+
120
+ Then:
121
+
122
+ ```bash
123
+ vqc run-from-fasta --sequences-fasta test_data/sequences.fasta --sort-mode blast
124
+ ```
125
+
126
+ Some parameters can be specified:
127
+
128
+ - `--output-dir` — Output directory name. **Default:** `output`
129
+ - `--datasets-dir` — Path to the local BLAST database directory. **Default:** `datasets`
130
+ - `--cores` — Number of threads used in `nextclade sort` and `nextclade run`. **Default:** `1`
131
+
132
+ The output directory has the following structure:
133
+
134
+ ```bash
135
+ ├── datasets_selected.tsv # Mapping between input sequences and local datasets.
136
+ ├── <virus/dataset>.nextclade.tsv # Nextclade run output for each identified virus, including clade assignments and QC metrics.
137
+ ├── sequences.<virus/dataset>.fasta # Input sequences split by virus/dataset.
138
+ ├── unmapped_sequences.txt # Names of input sequences that were not mapped to any virus.
139
+ └── viruses.tsv # BLAST output.
140
+ ```
141
+
142
+ ## Usage (API)
143
+
144
+ ```bash
145
+ vqc-server
146
+ ```
147
+
148
+ Go to `http://127.0.0.1:8000/docs`
149
+
150
+ ### Development
151
+
152
+ Install development dependencies and run `black` into `viralqc` directory.
153
+
154
+ ```bash
155
+ pip install -e ".[dev]"
156
+ black viralqc
157
+ ```
viralqc-0.1.0/env.yml ADDED
@@ -0,0 +1,13 @@
1
+ name: viralQC
2
+
3
+ channels:
4
+ - bioconda
5
+ - conda-forge
6
+ - defaults
7
+
8
+ dependencies:
9
+ - snakemake-minimal>=7.32.0,<7.33.0
10
+ - blast>=2.16.0,<2.17.0
11
+ - nextclade>=3.15.0,<3.16.0
12
+ - python>=3.8.0,<3.12.0
13
+ - seqtk>=1.5.0,<1.6.0
@@ -0,0 +1,62 @@
1
+ [project]
2
+ name = "viralQC"
3
+ version = "0.1.0"
4
+ description = "A tool and package for quality control of consensus virus genomes."
5
+ authors = [
6
+ { name = "Filipe Zimmer Dezordi", email = "zimmer.filipe@gmail.com" }
7
+ ]
8
+ readme = "README.md"
9
+ requires-python = ">=3.8,<3.12"
10
+ license = { text = "MIT" }
11
+ dependencies = [
12
+ "typer>=0.16",
13
+ "fastapi>=0.116",
14
+ "uvicorn[standard]>=0.35",
15
+ "colorlog>=6.3",
16
+ "pyyaml>=6.0",
17
+ "pandas>=2.2",
18
+ "python-multipart==0.0.20"
19
+ ]
20
+
21
+ keywords = ["virus", "quality-control", "python", "snakemake"]
22
+ classifiers = [
23
+ "Programming Language :: Python :: 3",
24
+ "License :: OSI Approved :: MIT License",
25
+ "Operating System :: OS Independent",
26
+ "Intended Audience :: Science/Research",
27
+ "Topic :: Software Development :: Libraries :: Python Modules",
28
+ "Topic :: Utilities",
29
+ "Development Status :: 3 - Alpha"
30
+ ]
31
+
32
+ [project.optional-dependencies]
33
+ cli = [
34
+ "typer>=0.16",
35
+ "colorlog>=6.3"
36
+ ]
37
+ api = [
38
+ "fastapi>=0.116",
39
+ "uvicorn[standard]>=0.35",
40
+ "python-multipart==0.0.20"
41
+ ]
42
+ all = [
43
+ "vqc[cli,api]"
44
+ ]
45
+ dev = [
46
+ "black>=24.3",
47
+ "pytest>=8.0",
48
+ ]
49
+
50
+ [project.scripts]
51
+ vqc = "viralqc.cli:app"
52
+ vqc-server = "viralqc.api:start"
53
+
54
+ [build-system]
55
+ requires = ["hatchling"]
56
+ build-backend = "hatchling.build"
57
+
58
+ [tool.setuptools.package-data]
59
+ viralqc = ["config/nextclade_datasets.yml"]
60
+
61
+ [project.urls]
62
+ Homepage = "https://github.com/InstitutoTodosPelaSaude/viralQC"