cool-seq-tool 0.12.1__tar.gz → 0.13.1__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.
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.github/workflows/checks.yaml +20 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.pre-commit-config.yaml +5 -3
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/PKG-INFO +6 -5
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/make.bat +34 -34
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/pyproject.toml +32 -7
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/mappers/__init__.py +1 -1
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/mappers/exon_genomic_coords.py +2 -5
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/resources/status.py +9 -11
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/sources/uta_database.py +11 -11
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool.egg-info/PKG-INFO +6 -5
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool.egg-info/requires.txt +3 -3
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/mappers/test_alignment.py +7 -7
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/mappers/test_exon_genomic_coords.py +13 -13
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/mappers/test_mane_transcript.py +12 -12
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/sources/test_uta_database.py +17 -17
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.coveragerc +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.github/ISSUE_TEMPLATE/feature-request.yaml +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.github/workflows/pr-priority-label.yaml +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.github/workflows/release.yml +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.github/workflows/stale.yaml +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.gitignore +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/.readthedocs.yaml +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/CITATION.cff +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/LICENSE +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/README.md +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/Makefile +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/_static/img/biomart.png +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/_templates/module_summary.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/changelog.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/conf.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/contributing.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/index.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/install.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/license.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/reference/index.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/transcript_selection.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/docs/source/usage.rst +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/setup.cfg +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/__init__.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/app.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/handlers/__init__.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/handlers/seqrepo_access.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/mappers/alignment.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/mappers/liftover.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/mappers/mane_transcript.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/resources/__init__.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/resources/data_files.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/resources/transcript_mapping.tsv +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/schemas.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/sources/__init__.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/sources/mane_transcript_mappings.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/sources/transcript_mappings.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/utils.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool.egg-info/SOURCES.txt +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool.egg-info/dependency_links.txt +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool.egg-info/top_level.txt +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/conftest.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/handlers/test_seqrepo_access.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/mappers/test_liftover.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/sources/test_mane_transcript_mappings.py +0 -0
- {cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/test_utils.py +0 -0
@@ -56,3 +56,23 @@ jobs:
|
|
56
56
|
- name: Attempt docs build
|
57
57
|
working-directory: ./docs
|
58
58
|
run: make html
|
59
|
+
|
60
|
+
precommit_hooks:
|
61
|
+
runs-on: ubuntu-latest
|
62
|
+
strategy:
|
63
|
+
matrix:
|
64
|
+
cmd:
|
65
|
+
- "end-of-file-fixer"
|
66
|
+
- "trailing-whitespace"
|
67
|
+
- "mixed-line-ending"
|
68
|
+
steps:
|
69
|
+
- uses: actions/checkout@v4
|
70
|
+
|
71
|
+
- name: Set up Python 3.12
|
72
|
+
uses: actions/setup-python@v5
|
73
|
+
with:
|
74
|
+
python-version: 3.12
|
75
|
+
|
76
|
+
- uses: pre-commit/action@v3.0.1
|
77
|
+
with:
|
78
|
+
extra_args: ${{ matrix.cmd }} --all-files
|
@@ -1,6 +1,6 @@
|
|
1
1
|
repos:
|
2
2
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
3
|
-
rev:
|
3
|
+
rev: v5.0.0 # pre-commit-hooks version
|
4
4
|
hooks:
|
5
5
|
- id: check-added-large-files
|
6
6
|
- id: detect-private-key
|
@@ -9,10 +9,12 @@ repos:
|
|
9
9
|
- id: check-merge-conflict
|
10
10
|
- id: detect-aws-credentials
|
11
11
|
args: [ --allow-missing-credentials ]
|
12
|
+
- id: mixed-line-ending
|
13
|
+
args: [ --fix=lf ]
|
12
14
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
13
|
-
rev: v0.
|
15
|
+
rev: v0.8.6
|
14
16
|
hooks:
|
15
17
|
- id: ruff-format
|
16
18
|
- id: ruff
|
17
19
|
args: [ --fix, --exit-non-zero-on-fix ]
|
18
|
-
minimum_pre_commit_version:
|
20
|
+
minimum_pre_commit_version: 4.0.1
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: cool_seq_tool
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.13.1
|
4
4
|
Summary: Common Operation on Lots of Sequences Tool
|
5
5
|
Author: Kori Kuzma, James Stevenson, Katie Stahl, Alex Wagner
|
6
6
|
License: MIT License
|
@@ -53,14 +53,14 @@ Requires-Dist: hgvs
|
|
53
53
|
Requires-Dist: biocommons.seqrepo
|
54
54
|
Requires-Dist: pydantic==2.*
|
55
55
|
Requires-Dist: ga4gh.vrs~=2.0.0a10
|
56
|
-
Requires-Dist: wags-tails~=0.
|
56
|
+
Requires-Dist: wags-tails~=0.3.2
|
57
57
|
Requires-Dist: bioutils
|
58
58
|
Provides-Extra: dev
|
59
|
-
Requires-Dist: pre-commit>=
|
59
|
+
Requires-Dist: pre-commit>=4.0.1; extra == "dev"
|
60
60
|
Requires-Dist: ipython; extra == "dev"
|
61
61
|
Requires-Dist: ipykernel; extra == "dev"
|
62
62
|
Requires-Dist: psycopg2-binary; extra == "dev"
|
63
|
-
Requires-Dist: ruff==0.
|
63
|
+
Requires-Dist: ruff==0.8.6; extra == "dev"
|
64
64
|
Provides-Extra: tests
|
65
65
|
Requires-Dist: pytest; extra == "tests"
|
66
66
|
Requires-Dist: pytest-cov; extra == "tests"
|
@@ -74,6 +74,7 @@ Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
|
|
74
74
|
Requires-Dist: sphinxext-opengraph==0.8.2; extra == "docs"
|
75
75
|
Requires-Dist: furo==2023.3.27; extra == "docs"
|
76
76
|
Requires-Dist: sphinx-github-changelog==1.2.1; extra == "docs"
|
77
|
+
Dynamic: license-file
|
77
78
|
|
78
79
|
<h1 align="center">
|
79
80
|
Cool-Seq-Tool
|
@@ -1,35 +1,35 @@
|
|
1
|
-
@ECHO OFF
|
2
|
-
|
3
|
-
pushd %~dp0
|
4
|
-
|
5
|
-
REM Command file for Sphinx documentation
|
6
|
-
|
7
|
-
if "%SPHINXBUILD%" == "" (
|
8
|
-
set SPHINXBUILD=sphinx-build
|
9
|
-
)
|
10
|
-
set SOURCEDIR=source
|
11
|
-
set BUILDDIR=build
|
12
|
-
|
13
|
-
%SPHINXBUILD% >NUL 2>NUL
|
14
|
-
if errorlevel 9009 (
|
15
|
-
echo.
|
16
|
-
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
17
|
-
echo.installed, then set the SPHINXBUILD environment variable to point
|
18
|
-
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
19
|
-
echo.may add the Sphinx directory to PATH.
|
20
|
-
echo.
|
21
|
-
echo.If you don't have Sphinx installed, grab it from
|
22
|
-
echo.https://www.sphinx-doc.org/
|
23
|
-
exit /b 1
|
24
|
-
)
|
25
|
-
|
26
|
-
if "%1" == "" goto help
|
27
|
-
|
28
|
-
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
29
|
-
goto end
|
30
|
-
|
31
|
-
:help
|
32
|
-
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
33
|
-
|
34
|
-
:end
|
1
|
+
@ECHO OFF
|
2
|
+
|
3
|
+
pushd %~dp0
|
4
|
+
|
5
|
+
REM Command file for Sphinx documentation
|
6
|
+
|
7
|
+
if "%SPHINXBUILD%" == "" (
|
8
|
+
set SPHINXBUILD=sphinx-build
|
9
|
+
)
|
10
|
+
set SOURCEDIR=source
|
11
|
+
set BUILDDIR=build
|
12
|
+
|
13
|
+
%SPHINXBUILD% >NUL 2>NUL
|
14
|
+
if errorlevel 9009 (
|
15
|
+
echo.
|
16
|
+
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
17
|
+
echo.installed, then set the SPHINXBUILD environment variable to point
|
18
|
+
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
19
|
+
echo.may add the Sphinx directory to PATH.
|
20
|
+
echo.
|
21
|
+
echo.If you don't have Sphinx installed, grab it from
|
22
|
+
echo.https://www.sphinx-doc.org/
|
23
|
+
exit /b 1
|
24
|
+
)
|
25
|
+
|
26
|
+
if "%1" == "" goto help
|
27
|
+
|
28
|
+
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
29
|
+
goto end
|
30
|
+
|
31
|
+
:help
|
32
|
+
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
33
|
+
|
34
|
+
:end
|
35
35
|
popd
|
@@ -33,13 +33,19 @@ dependencies = [
|
|
33
33
|
"biocommons.seqrepo",
|
34
34
|
"pydantic == 2.*",
|
35
35
|
"ga4gh.vrs ~= 2.0.0a10",
|
36
|
-
"wags-tails ~= 0.
|
36
|
+
"wags-tails ~= 0.3.2",
|
37
37
|
"bioutils",
|
38
38
|
]
|
39
39
|
dynamic = ["version"]
|
40
40
|
|
41
41
|
[project.optional-dependencies]
|
42
|
-
dev = [
|
42
|
+
dev = [
|
43
|
+
"pre-commit>=4.0.1",
|
44
|
+
"ipython",
|
45
|
+
"ipykernel",
|
46
|
+
"psycopg2-binary",
|
47
|
+
"ruff==0.8.6"
|
48
|
+
]
|
43
49
|
tests = ["pytest", "pytest-cov", "pytest-asyncio==0.18.3", "mock"]
|
44
50
|
docs = [
|
45
51
|
"sphinx==6.1.3",
|
@@ -110,10 +116,14 @@ lint.select = [
|
|
110
116
|
"RSE", # https://docs.astral.sh/ruff/rules/#flake8-raise-rse
|
111
117
|
"RET", # https://docs.astral.sh/ruff/rules/#flake8-return-ret
|
112
118
|
"SLF", # https://docs.astral.sh/ruff/rules/#flake8-self-slf
|
119
|
+
"SLOT", # https://docs.astral.sh/ruff/rules/#flake8-slots-slot
|
113
120
|
"SIM", # https://docs.astral.sh/ruff/rules/#flake8-simplify-sim
|
114
121
|
"ARG", # https://docs.astral.sh/ruff/rules/#flake8-unused-arguments-arg
|
115
122
|
"PTH", # https://docs.astral.sh/ruff/rules/#flake8-use-pathlib-pth
|
116
123
|
"PGH", # https://docs.astral.sh/ruff/rules/#pygrep-hooks-pgh
|
124
|
+
"PLC", # https://docs.astral.sh/ruff/rules/#convention-c
|
125
|
+
"PLE", # https://docs.astral.sh/ruff/rules/#error-e_1
|
126
|
+
"TRY", # https://docs.astral.sh/ruff/rules/#tryceratops-try
|
117
127
|
"PERF", # https://docs.astral.sh/ruff/rules/#perflint-perf
|
118
128
|
"FURB", # https://docs.astral.sh/ruff/rules/#refurb-furb
|
119
129
|
"RUF", # https://docs.astral.sh/ruff/rules/#ruff-specific-rules-ruf
|
@@ -132,14 +142,15 @@ lint.fixable = [
|
|
132
142
|
"PT",
|
133
143
|
"RSE",
|
134
144
|
"SIM",
|
145
|
+
"PLC",
|
146
|
+
"PLE",
|
147
|
+
"TRY",
|
135
148
|
"PERF",
|
136
149
|
"FURB",
|
137
150
|
"RUF"
|
138
151
|
]
|
139
152
|
|
140
153
|
# ANN003 - missing-type-kwargs
|
141
|
-
# ANN101 - missing-type-self
|
142
|
-
# ANN102 - missing-type-cls
|
143
154
|
# D203 - one-blank-line-before-class
|
144
155
|
# D205 - blank-line-after-summary
|
145
156
|
# D206 - indent-with-spaces*
|
@@ -153,26 +164,40 @@ lint.fixable = [
|
|
153
164
|
# E501 - line-too-long*
|
154
165
|
# W191 - tab-indentation*
|
155
166
|
# S321 - suspicious-ftp-lib-usage
|
167
|
+
# PLC0206 - dict-index-missing-items
|
156
168
|
# *ignored for compatibility with formatter
|
157
169
|
lint.ignore = [
|
158
|
-
"ANN003",
|
170
|
+
"ANN003",
|
159
171
|
"D203", "D205", "D206", "D213", "D300", "D400", "D415",
|
160
172
|
"E111", "E114", "E117", "E501",
|
161
173
|
"W191",
|
162
174
|
"S321",
|
175
|
+
"PLC0206",
|
163
176
|
]
|
164
177
|
|
165
178
|
[tool.ruff.lint.per-file-ignores]
|
166
179
|
# ANN001 - missing-type-function-argument
|
167
180
|
# ANN2 - missing-return-type
|
168
|
-
#
|
181
|
+
# D100 - undocumented-public-module
|
182
|
+
# D102 - undocumented-public-class
|
183
|
+
# D103 - undocumented-public-function
|
169
184
|
# N805 - invalid-first-argument-name-for-method
|
170
185
|
# F821 - undefined-name
|
171
186
|
# F401 - unused-import
|
172
187
|
# INP001 - implicit-namespace-package
|
173
188
|
# SLF001 - private-member-access
|
174
189
|
# ARG001 - unused-function-argument
|
175
|
-
"tests/*" = [
|
190
|
+
"tests/*" = [
|
191
|
+
"ANN001",
|
192
|
+
"ANN2",
|
193
|
+
"D100",
|
194
|
+
"D102",
|
195
|
+
"D103",
|
196
|
+
"S101",
|
197
|
+
"INP001",
|
198
|
+
"SLF001",
|
199
|
+
"ARG001"
|
200
|
+
]
|
176
201
|
"*__init__.py" = ["F401"]
|
177
202
|
"src/cool_seq_tool/schemas.py" = ["ANN201", "N805", "ANN001"]
|
178
203
|
|
@@ -6,4 +6,4 @@ from .mane_transcript import ManeTranscript
|
|
6
6
|
from .exon_genomic_coords import ExonGenomicCoordsMapper
|
7
7
|
|
8
8
|
|
9
|
-
__all__ = ["AlignmentMapper", "
|
9
|
+
__all__ = ["AlignmentMapper", "ExonGenomicCoordsMapper", "LiftOver", "ManeTranscript"]
|
{cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/mappers/exon_genomic_coords.py
RENAMED
@@ -1022,11 +1022,8 @@ class ExonGenomicCoordsMapper:
|
|
1022
1022
|
:return ``True`` if alt_start_i should be used, ``False`` if alt_end_i should
|
1023
1023
|
be used
|
1024
1024
|
"""
|
1025
|
-
return (
|
1026
|
-
is_seg_start
|
1027
|
-
and strand == Strand.POSITIVE
|
1028
|
-
or not is_seg_start
|
1029
|
-
and strand == Strand.NEGATIVE
|
1025
|
+
return (is_seg_start and strand == Strand.POSITIVE) or (
|
1026
|
+
not is_seg_start and strand == Strand.NEGATIVE
|
1030
1027
|
)
|
1031
1028
|
|
1032
1029
|
@staticmethod
|
@@ -88,11 +88,11 @@ async def check_status(
|
|
88
88
|
try:
|
89
89
|
get_data_file(r)
|
90
90
|
except FileNotFoundError:
|
91
|
-
_logger.
|
91
|
+
_logger.exception(
|
92
92
|
"%s does not exist at configured location %s", name_lower, declared_path
|
93
93
|
)
|
94
94
|
except ValueError:
|
95
|
-
_logger.
|
95
|
+
_logger.exception(
|
96
96
|
"%s configured at %s is not a valid file.", name_lower, declared_path
|
97
97
|
)
|
98
98
|
except Exception as e:
|
@@ -107,8 +107,8 @@ async def check_status(
|
|
107
107
|
chain_file_37_to_38=chain_file_37_to_38,
|
108
108
|
chain_file_38_to_37=chain_file_38_to_37,
|
109
109
|
)
|
110
|
-
except (FileNotFoundError, ChainfileError)
|
111
|
-
_logger.
|
110
|
+
except (FileNotFoundError, ChainfileError):
|
111
|
+
_logger.exception("agct converter setup failed")
|
112
112
|
except Exception as e:
|
113
113
|
_logger.critical("Encountered unexpected error setting up agct: %s", e)
|
114
114
|
else:
|
@@ -116,10 +116,8 @@ async def check_status(
|
|
116
116
|
|
117
117
|
try:
|
118
118
|
await UtaDatabase.create(db_url)
|
119
|
-
except (OSError, InvalidCatalogNameError, UndefinedTableError)
|
120
|
-
_logger.error
|
121
|
-
"Encountered error instantiating UTA at URI %s: %s", UTA_DB_URL, e
|
122
|
-
)
|
119
|
+
except (OSError, InvalidCatalogNameError, UndefinedTableError):
|
120
|
+
_logger.exception("Encountered error instantiating UTA at URI %s", UTA_DB_URL)
|
123
121
|
except Exception as e:
|
124
122
|
_logger.critical(
|
125
123
|
"Encountered unexpected error instantiating UTA from URI %s: %s",
|
@@ -134,10 +132,10 @@ async def check_status(
|
|
134
132
|
sr = SeqRepo(root_dir=SEQREPO_ROOT_DIR)
|
135
133
|
sra = SeqRepoAccess(sr)
|
136
134
|
sra.sr["NC_000001.11"][1000:1001]
|
137
|
-
except OSError
|
138
|
-
_logger.
|
135
|
+
except OSError:
|
136
|
+
_logger.exception("Encountered error while instantiating SeqRepo")
|
139
137
|
except KeyError:
|
140
|
-
_logger.
|
138
|
+
_logger.exception("SeqRepo data fetch test failed -- is it populated?")
|
141
139
|
except Exception as e:
|
142
140
|
_logger.critical("Encountered unexpected error setting up SeqRepo: %s", e)
|
143
141
|
else:
|
@@ -162,11 +162,11 @@ class UtaDatabase:
|
|
162
162
|
database=self.args.database,
|
163
163
|
)
|
164
164
|
except InterfaceError as e:
|
165
|
-
_logger.
|
166
|
-
"While creating connection pool, encountered exception
|
165
|
+
_logger.exception(
|
166
|
+
"While creating connection pool, encountered exception"
|
167
167
|
)
|
168
168
|
msg = "Could not create connection pool"
|
169
|
-
raise Exception(msg) from e
|
169
|
+
raise Exception(msg) from e # noqa: TRY002
|
170
170
|
|
171
171
|
@classmethod
|
172
172
|
async def create(
|
@@ -221,7 +221,7 @@ class UtaDatabase:
|
|
221
221
|
WHERE table_schema = '{self.schema}'
|
222
222
|
AND table_name = 'genomic'
|
223
223
|
);
|
224
|
-
"""
|
224
|
+
"""
|
225
225
|
genomic_table_exists = await self.execute_query(check_table_exists)
|
226
226
|
genomic_table_exists = genomic_table_exists[0].get("exists")
|
227
227
|
if genomic_table_exists is None:
|
@@ -250,7 +250,7 @@ class UtaDatabase:
|
|
250
250
|
LEFT JOIN {self.schema}.exon_aln ea ON
|
251
251
|
(((te.exon_id = ea.tx_exon_id) AND
|
252
252
|
(ae.exon_id = ea.alt_exon_id))));
|
253
|
-
"""
|
253
|
+
"""
|
254
254
|
await self.execute_query(create_genomic_table)
|
255
255
|
|
256
256
|
indexes = [
|
@@ -499,7 +499,7 @@ class UtaDatabase:
|
|
499
499
|
AND {start_pos} BETWEEN {pos_q}
|
500
500
|
AND {end_pos} BETWEEN {pos_q}
|
501
501
|
{order_by_cond}
|
502
|
-
"""
|
502
|
+
"""
|
503
503
|
result = await self.execute_query(query)
|
504
504
|
if not result:
|
505
505
|
_logger.warning("Unable to find transcript alignment for query: %s", query)
|
@@ -852,8 +852,8 @@ class UtaDatabase:
|
|
852
852
|
|
853
853
|
try:
|
854
854
|
assembly = Assembly(assembly)
|
855
|
-
except ValueError
|
856
|
-
_logger.
|
855
|
+
except ValueError:
|
856
|
+
_logger.exception("Unable to parse %s as an Assembly", assembly)
|
857
857
|
return None
|
858
858
|
|
859
859
|
return chromosome, assembly
|
@@ -924,11 +924,11 @@ class UtaDatabase:
|
|
924
924
|
|
925
925
|
try:
|
926
926
|
get_secret_value_response = client.get_secret_value(SecretId=secret_name)
|
927
|
-
except ClientError
|
927
|
+
except ClientError:
|
928
928
|
# For a list of exceptions thrown, see
|
929
929
|
# https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
|
930
|
-
_logger.error
|
931
|
-
raise
|
930
|
+
_logger.exception("Encountered AWS client error fetching UTA DB secret")
|
931
|
+
raise
|
932
932
|
else:
|
933
933
|
return get_secret_value_response["SecretString"]
|
934
934
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: cool_seq_tool
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.13.1
|
4
4
|
Summary: Common Operation on Lots of Sequences Tool
|
5
5
|
Author: Kori Kuzma, James Stevenson, Katie Stahl, Alex Wagner
|
6
6
|
License: MIT License
|
@@ -53,14 +53,14 @@ Requires-Dist: hgvs
|
|
53
53
|
Requires-Dist: biocommons.seqrepo
|
54
54
|
Requires-Dist: pydantic==2.*
|
55
55
|
Requires-Dist: ga4gh.vrs~=2.0.0a10
|
56
|
-
Requires-Dist: wags-tails~=0.
|
56
|
+
Requires-Dist: wags-tails~=0.3.2
|
57
57
|
Requires-Dist: bioutils
|
58
58
|
Provides-Extra: dev
|
59
|
-
Requires-Dist: pre-commit>=
|
59
|
+
Requires-Dist: pre-commit>=4.0.1; extra == "dev"
|
60
60
|
Requires-Dist: ipython; extra == "dev"
|
61
61
|
Requires-Dist: ipykernel; extra == "dev"
|
62
62
|
Requires-Dist: psycopg2-binary; extra == "dev"
|
63
|
-
Requires-Dist: ruff==0.
|
63
|
+
Requires-Dist: ruff==0.8.6; extra == "dev"
|
64
64
|
Provides-Extra: tests
|
65
65
|
Requires-Dist: pytest; extra == "tests"
|
66
66
|
Requires-Dist: pytest-cov; extra == "tests"
|
@@ -74,6 +74,7 @@ Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
|
|
74
74
|
Requires-Dist: sphinxext-opengraph==0.8.2; extra == "docs"
|
75
75
|
Requires-Dist: furo==2023.3.27; extra == "docs"
|
76
76
|
Requires-Dist: sphinx-github-changelog==1.2.1; extra == "docs"
|
77
|
+
Dynamic: license-file
|
77
78
|
|
78
79
|
<h1 align="center">
|
79
80
|
Cool-Seq-Tool
|
@@ -7,15 +7,15 @@ hgvs
|
|
7
7
|
biocommons.seqrepo
|
8
8
|
pydantic==2.*
|
9
9
|
ga4gh.vrs~=2.0.0a10
|
10
|
-
wags-tails~=0.
|
10
|
+
wags-tails~=0.3.2
|
11
11
|
bioutils
|
12
12
|
|
13
13
|
[dev]
|
14
|
-
pre-commit>=
|
14
|
+
pre-commit>=4.0.1
|
15
15
|
ipython
|
16
16
|
ipykernel
|
17
17
|
psycopg2-binary
|
18
|
-
ruff==0.
|
18
|
+
ruff==0.8.6
|
19
19
|
|
20
20
|
[docs]
|
21
21
|
sphinx==6.1.3
|
@@ -111,7 +111,7 @@ def hras_t2a():
|
|
111
111
|
return _expected
|
112
112
|
|
113
113
|
|
114
|
-
@pytest.mark.asyncio
|
114
|
+
@pytest.mark.asyncio
|
115
115
|
async def test_get_cds_start(test_alignment_mapper):
|
116
116
|
"""Test that _get_cds_start method works correctly"""
|
117
117
|
# Valid
|
@@ -125,7 +125,7 @@ async def test_get_cds_start(test_alignment_mapper):
|
|
125
125
|
assert w == "Accession NM_004333.6293702 not found in UTA db"
|
126
126
|
|
127
127
|
|
128
|
-
@pytest.mark.asyncio
|
128
|
+
@pytest.mark.asyncio
|
129
129
|
async def test_p_to_c(test_alignment_mapper, braf_v600e_c, egfr_l858r_c):
|
130
130
|
"""Test that p_to_c works as expected"""
|
131
131
|
# BRAF V600E
|
@@ -164,7 +164,7 @@ async def test_p_to_c(test_alignment_mapper, braf_v600e_c, egfr_l858r_c):
|
|
164
164
|
}
|
165
165
|
|
166
166
|
|
167
|
-
@pytest.mark.asyncio
|
167
|
+
@pytest.mark.asyncio
|
168
168
|
async def test_p_to_c_invalid(test_alignment_mapper):
|
169
169
|
"""Test invalid queries for p_to_c method"""
|
170
170
|
# Invalid protein accession
|
@@ -175,7 +175,7 @@ async def test_p_to_c_invalid(test_alignment_mapper):
|
|
175
175
|
assert resp is None
|
176
176
|
|
177
177
|
|
178
|
-
@pytest.mark.asyncio
|
178
|
+
@pytest.mark.asyncio
|
179
179
|
async def test_c_to_g(
|
180
180
|
test_alignment_mapper,
|
181
181
|
braf_v600e_grch37,
|
@@ -227,7 +227,7 @@ async def test_c_to_g(
|
|
227
227
|
assert resp == expected, params
|
228
228
|
|
229
229
|
|
230
|
-
@pytest.mark.asyncio
|
230
|
+
@pytest.mark.asyncio
|
231
231
|
async def test_c_to_g_invalid(test_alignment_mapper):
|
232
232
|
"""Test invalid queries for c_to_g method"""
|
233
233
|
# Should not expect to find anything given these two positions
|
@@ -262,7 +262,7 @@ async def test_c_to_g_invalid(test_alignment_mapper):
|
|
262
262
|
assert w == "c_start_pos and c_end_pos are not a valid range for the codon(s)"
|
263
263
|
|
264
264
|
|
265
|
-
@pytest.mark.asyncio
|
265
|
+
@pytest.mark.asyncio
|
266
266
|
async def test_p_to_g(
|
267
267
|
test_alignment_mapper,
|
268
268
|
braf_v600e_grch37,
|
@@ -350,7 +350,7 @@ async def test_p_to_g(
|
|
350
350
|
assert resp == hras_t2a(assembly), params
|
351
351
|
|
352
352
|
|
353
|
-
@pytest.mark.asyncio
|
353
|
+
@pytest.mark.asyncio
|
354
354
|
async def test_p_to_g_invalid(test_alignment_mapper):
|
355
355
|
"""Test invalid queries for p_to_g method"""
|
356
356
|
# Invalid protein accession
|
@@ -704,7 +704,7 @@ def genomic_tx_seg_checks(actual, expected=None, is_valid=True):
|
|
704
704
|
assert len(actual.errors) > 0
|
705
705
|
|
706
706
|
|
707
|
-
@pytest.mark.asyncio
|
707
|
+
@pytest.mark.asyncio
|
708
708
|
async def test_get_all_exon_coords(
|
709
709
|
test_egc_mapper, nm_152263_exons, nm_152263_exons_genomic_coords
|
710
710
|
):
|
@@ -724,7 +724,7 @@ async def test_get_all_exon_coords(
|
|
724
724
|
assert resp == []
|
725
725
|
|
726
726
|
|
727
|
-
@pytest.mark.asyncio
|
727
|
+
@pytest.mark.asyncio
|
728
728
|
async def test_get_start_end_exon_coords(test_egc_mapper):
|
729
729
|
"""Test that _get_start_end_exon_coords works correctly."""
|
730
730
|
resp = await test_egc_mapper._get_start_end_exon_coords(
|
@@ -761,7 +761,7 @@ async def test_get_start_end_exon_coords(test_egc_mapper):
|
|
761
761
|
assert resp == (None, None, ["Transcript does not exist in UTA: NM_1234.5"])
|
762
762
|
|
763
763
|
|
764
|
-
@pytest.mark.asyncio
|
764
|
+
@pytest.mark.asyncio
|
765
765
|
async def test_get_adjacent_exon(
|
766
766
|
test_egc_mapper,
|
767
767
|
nm_152263_exons_genomic_coords,
|
@@ -864,7 +864,7 @@ def test_use_alt_start_i(test_egc_mapper):
|
|
864
864
|
assert not resp
|
865
865
|
|
866
866
|
|
867
|
-
@pytest.mark.asyncio
|
867
|
+
@pytest.mark.asyncio
|
868
868
|
async def test_genomic_to_transcript_fusion_context(
|
869
869
|
test_egc_mapper,
|
870
870
|
zbtb10_exon3_end,
|
@@ -1003,7 +1003,7 @@ async def test_genomic_to_transcript_fusion_context(
|
|
1003
1003
|
genomic_tx_seg_service_checks(resp, gusbp3_exon5_start)
|
1004
1004
|
|
1005
1005
|
|
1006
|
-
@pytest.mark.asyncio
|
1006
|
+
@pytest.mark.asyncio
|
1007
1007
|
async def test_get_alt_ac_start_and_end(
|
1008
1008
|
test_egc_mapper, tpm3_1_8_start_genomic, tpm3_1_8_end_genomic
|
1009
1009
|
):
|
@@ -1038,7 +1038,7 @@ async def test_get_alt_ac_start_and_end(
|
|
1038
1038
|
)
|
1039
1039
|
|
1040
1040
|
|
1041
|
-
@pytest.mark.asyncio
|
1041
|
+
@pytest.mark.asyncio
|
1042
1042
|
async def test_get_get_exons_coords(test_egc_mapper, nm_152263_exons_genomic_coords):
|
1043
1043
|
"""Test that _get_all_exon_coords works correctly."""
|
1044
1044
|
resp = await test_egc_mapper._get_all_exon_coords("NM_152263.4", "NC_000001.11")
|
@@ -1049,7 +1049,7 @@ async def test_get_get_exons_coords(test_egc_mapper, nm_152263_exons_genomic_coo
|
|
1049
1049
|
assert resp == []
|
1050
1050
|
|
1051
1051
|
|
1052
|
-
@pytest.mark.asyncio
|
1052
|
+
@pytest.mark.asyncio
|
1053
1053
|
async def test_genomic_to_transcript(test_egc_mapper, tpm3_exon1, tpm3_exon8):
|
1054
1054
|
"""Test that _genomic_to_tx_segment method works correctly."""
|
1055
1055
|
resp = await test_egc_mapper._genomic_to_tx_segment(
|
@@ -1145,7 +1145,7 @@ async def test_genomic_to_transcript(test_egc_mapper, tpm3_exon1, tpm3_exon8):
|
|
1145
1145
|
genomic_tx_seg_checks(resp, tpm3_exon8)
|
1146
1146
|
|
1147
1147
|
|
1148
|
-
@pytest.mark.asyncio
|
1148
|
+
@pytest.mark.asyncio
|
1149
1149
|
async def test_tpm3(
|
1150
1150
|
test_egc_mapper,
|
1151
1151
|
tpm3_exon1_exon8,
|
@@ -1214,7 +1214,7 @@ async def test_tpm3(
|
|
1214
1214
|
genomic_tx_seg_service_checks(t_to_g_resp, tpm3_exon8_g)
|
1215
1215
|
|
1216
1216
|
|
1217
|
-
@pytest.mark.asyncio
|
1217
|
+
@pytest.mark.asyncio
|
1218
1218
|
async def test_braf(test_egc_mapper, mane_braf):
|
1219
1219
|
"""Test BRAF genomic_to_tx_segment and
|
1220
1220
|
tx_segment_to_genomic.
|
@@ -1248,7 +1248,7 @@ async def test_braf(test_egc_mapper, mane_braf):
|
|
1248
1248
|
genomic_tx_seg_service_checks(t_to_g_resp, expected)
|
1249
1249
|
|
1250
1250
|
|
1251
|
-
@pytest.mark.asyncio
|
1251
|
+
@pytest.mark.asyncio
|
1252
1252
|
async def test_wee1(test_egc_mapper, wee1_exon2_exon11, mane_wee1_exon2_exon11):
|
1253
1253
|
"""Test WEE1 genomic_to_tx_segment and
|
1254
1254
|
tx_segment_to_genomic.
|
@@ -1312,7 +1312,7 @@ async def test_wee1(test_egc_mapper, wee1_exon2_exon11, mane_wee1_exon2_exon11):
|
|
1312
1312
|
genomic_tx_seg_service_checks(t_to_g_resp, mane_wee1_exon2_exon11)
|
1313
1313
|
|
1314
1314
|
|
1315
|
-
@pytest.mark.asyncio
|
1315
|
+
@pytest.mark.asyncio
|
1316
1316
|
async def test_transcript_to_genomic(
|
1317
1317
|
test_egc_mapper,
|
1318
1318
|
tpm3_exon1_g,
|
@@ -1398,7 +1398,7 @@ async def test_transcript_to_genomic(
|
|
1398
1398
|
genomic_tx_seg_service_checks(resp, expected)
|
1399
1399
|
|
1400
1400
|
|
1401
|
-
@pytest.mark.asyncio
|
1401
|
+
@pytest.mark.asyncio
|
1402
1402
|
async def test_valid_inputs(test_egc_mapper, eln_grch38_intronic):
|
1403
1403
|
"""Test that valid inputs don"t return any errors"""
|
1404
1404
|
inputs = {
|
@@ -1462,7 +1462,7 @@ async def test_valid_inputs(test_egc_mapper, eln_grch38_intronic):
|
|
1462
1462
|
genomic_tx_seg_service_checks(resp, eln_grch38_intronic)
|
1463
1463
|
|
1464
1464
|
|
1465
|
-
@pytest.mark.asyncio
|
1465
|
+
@pytest.mark.asyncio
|
1466
1466
|
async def test_invalid(test_egc_mapper):
|
1467
1467
|
"""Test that invalid queries return `None`."""
|
1468
1468
|
resp = await test_egc_mapper.genomic_to_tx_segment(
|
@@ -232,7 +232,7 @@ def test_p_to_c_pos(test_mane_transcript):
|
|
232
232
|
assert c_pos == (2241, 2252)
|
233
233
|
|
234
234
|
|
235
|
-
@pytest.mark.asyncio
|
235
|
+
@pytest.mark.asyncio
|
236
236
|
async def test_p_to_c(test_mane_transcript):
|
237
237
|
"""Test that _p_to_c method works correctly."""
|
238
238
|
# Amino Acid Substitution
|
@@ -271,7 +271,7 @@ async def test_p_to_c(test_mane_transcript):
|
|
271
271
|
assert pos == expected_pos
|
272
272
|
|
273
273
|
|
274
|
-
@pytest.mark.asyncio
|
274
|
+
@pytest.mark.asyncio
|
275
275
|
async def test_c_to_g(test_mane_transcript, nm_004333v6_g):
|
276
276
|
"""Test that _c_to_g method works correctly."""
|
277
277
|
tx_ac = "NM_004333.6"
|
@@ -279,7 +279,7 @@ async def test_c_to_g(test_mane_transcript, nm_004333v6_g):
|
|
279
279
|
assert g == nm_004333v6_g
|
280
280
|
|
281
281
|
|
282
|
-
@pytest.mark.asyncio
|
282
|
+
@pytest.mark.asyncio
|
283
283
|
async def test_g_to_c(
|
284
284
|
test_mane_transcript, braf_mane_data, nm_004333v6_g, braf_v600e_mane_c
|
285
285
|
):
|
@@ -308,7 +308,7 @@ def test_set_liftover(test_mane_transcript, genomic_tx_data):
|
|
308
308
|
assert cpy == expected
|
309
309
|
|
310
310
|
|
311
|
-
@pytest.mark.asyncio
|
311
|
+
@pytest.mark.asyncio
|
312
312
|
async def test_liftover_to_38(test_mane_transcript, genomic_tx_data):
|
313
313
|
"""Test that liftover_to_38 works correctly."""
|
314
314
|
cpy = genomic_tx_data.copy(deep=True)
|
@@ -326,7 +326,7 @@ def test_get_mane_p(test_mane_transcript, braf_mane_data, braf_v600e_mane_p):
|
|
326
326
|
assert mane_p == braf_v600e_mane_p
|
327
327
|
|
328
328
|
|
329
|
-
@pytest.mark.asyncio
|
329
|
+
@pytest.mark.asyncio
|
330
330
|
async def test_p_to_mane_p(test_mane_transcript, braf_v600e_mane_p, egfr_l858r_mane_p):
|
331
331
|
"""Test that p_to_mane_p method works correctly."""
|
332
332
|
# BRAF V600E RefSeq Accessions
|
@@ -404,7 +404,7 @@ async def test_p_to_mane_p(test_mane_transcript, braf_v600e_mane_p, egfr_l858r_m
|
|
404
404
|
)
|
405
405
|
|
406
406
|
|
407
|
-
@pytest.mark.asyncio
|
407
|
+
@pytest.mark.asyncio
|
408
408
|
async def test_c_to_mane_c(test_mane_transcript, braf_v600e_mane_c, egfr_l858r_mane_c):
|
409
409
|
"""Test that c_to_mane_p method works correctly."""
|
410
410
|
# BRAF V600E RefSeq Accessions
|
@@ -503,7 +503,7 @@ def test_get_prioritized_transcripts_from_gene(
|
|
503
503
|
assert resp == ["NM_004333.6", "NM_001374258.2", "NM_001378472.1"]
|
504
504
|
|
505
505
|
|
506
|
-
@pytest.mark.asyncio
|
506
|
+
@pytest.mark.asyncio
|
507
507
|
async def test_get_longest_compatible_transcript(test_mane_transcript):
|
508
508
|
"""Test that get_longest_compatible_transcript method works as expected"""
|
509
509
|
mane_transcripts = {
|
@@ -669,7 +669,7 @@ async def test_get_longest_compatible_transcript(test_mane_transcript):
|
|
669
669
|
)
|
670
670
|
|
671
671
|
|
672
|
-
@pytest.mark.asyncio
|
672
|
+
@pytest.mark.asyncio
|
673
673
|
async def test_g_to_grch38(test_mane_transcript, grch38_egfr, grch38_braf):
|
674
674
|
"""Test that g_to_grch38 method works correctly."""
|
675
675
|
resp = await test_mane_transcript.g_to_grch38(
|
@@ -705,7 +705,7 @@ async def test_g_to_grch38(test_mane_transcript, grch38_egfr, grch38_braf):
|
|
705
705
|
assert resp == grch38_braf
|
706
706
|
|
707
707
|
|
708
|
-
@pytest.mark.asyncio
|
708
|
+
@pytest.mark.asyncio
|
709
709
|
async def test_g_to_mane_c(test_mane_transcript, egfr_l858r_mane_c, braf_v600e_mane_c):
|
710
710
|
"""Test that g_to_mane_c method works correctly."""
|
711
711
|
mane_c = await test_mane_transcript.g_to_mane_c(
|
@@ -789,7 +789,7 @@ async def test_g_to_mane_c(test_mane_transcript, egfr_l858r_mane_c, braf_v600e_m
|
|
789
789
|
)
|
790
790
|
|
791
791
|
|
792
|
-
@pytest.mark.asyncio
|
792
|
+
@pytest.mark.asyncio
|
793
793
|
async def test_grch38_to_mane_c_p(
|
794
794
|
test_mane_transcript,
|
795
795
|
braf_v600e_mane_p,
|
@@ -913,7 +913,7 @@ async def test_grch38_to_mane_c_p(
|
|
913
913
|
assert resp is None
|
914
914
|
|
915
915
|
|
916
|
-
@pytest.mark.asyncio
|
916
|
+
@pytest.mark.asyncio
|
917
917
|
async def test_valid(test_mane_transcript):
|
918
918
|
"""Test that valid queries do not raise any exceptions"""
|
919
919
|
resp = await test_mane_transcript.get_mane_transcript(
|
@@ -937,7 +937,7 @@ async def test_valid(test_mane_transcript):
|
|
937
937
|
assert resp
|
938
938
|
|
939
939
|
|
940
|
-
@pytest.mark.asyncio
|
940
|
+
@pytest.mark.asyncio
|
941
941
|
async def test_no_matches(test_mane_transcript):
|
942
942
|
"""Test that invalid queries return None."""
|
943
943
|
# Invalid ENST version
|
@@ -44,7 +44,7 @@ def data_from_result():
|
|
44
44
|
return GenomicTxData(**params)
|
45
45
|
|
46
46
|
|
47
|
-
@pytest.mark.asyncio
|
47
|
+
@pytest.mark.asyncio
|
48
48
|
async def test_get_cds_start_end(test_db):
|
49
49
|
"""Test that get_cds_start_end works correctly."""
|
50
50
|
expected = (61, 2362)
|
@@ -58,7 +58,7 @@ async def test_get_cds_start_end(test_db):
|
|
58
58
|
assert resp is None
|
59
59
|
|
60
60
|
|
61
|
-
@pytest.mark.asyncio
|
61
|
+
@pytest.mark.asyncio
|
62
62
|
async def test_get_newest_assembly_ac(test_db):
|
63
63
|
"""Test that get_newest_assembly_ac works correctly."""
|
64
64
|
resp = await test_db.get_newest_assembly_ac("NC_000007.13")
|
@@ -77,7 +77,7 @@ async def test_get_newest_assembly_ac(test_db):
|
|
77
77
|
assert resp == []
|
78
78
|
|
79
79
|
|
80
|
-
@pytest.mark.asyncio
|
80
|
+
@pytest.mark.asyncio
|
81
81
|
async def test_validate_genomic_ac(test_db):
|
82
82
|
"""Test that validate_genomic_ac"""
|
83
83
|
resp = await test_db.validate_genomic_ac("NC_000007.13")
|
@@ -87,7 +87,7 @@ async def test_validate_genomic_ac(test_db):
|
|
87
87
|
assert resp is False
|
88
88
|
|
89
89
|
|
90
|
-
@pytest.mark.asyncio
|
90
|
+
@pytest.mark.asyncio
|
91
91
|
async def test_validate_gene_exists(test_db):
|
92
92
|
"""Test validate_gene_symbol"""
|
93
93
|
resp = await test_db.gene_exists("TPM3")
|
@@ -97,7 +97,7 @@ async def test_validate_gene_exists(test_db):
|
|
97
97
|
assert resp is False
|
98
98
|
|
99
99
|
|
100
|
-
@pytest.mark.asyncio
|
100
|
+
@pytest.mark.asyncio
|
101
101
|
async def test_validate_transcript_exists(test_db):
|
102
102
|
"""Tests validate_transcript"""
|
103
103
|
resp = await test_db.transcript_exists("NM_152263.3")
|
@@ -107,7 +107,7 @@ async def test_validate_transcript_exists(test_db):
|
|
107
107
|
assert resp is False
|
108
108
|
|
109
109
|
|
110
|
-
@pytest.mark.asyncio
|
110
|
+
@pytest.mark.asyncio
|
111
111
|
async def test_get_ac_descr(test_db):
|
112
112
|
"""Test that get_ac_descr works correctly."""
|
113
113
|
resp = await test_db.get_ac_descr("NC_000007.13")
|
@@ -117,7 +117,7 @@ async def test_get_ac_descr(test_db):
|
|
117
117
|
assert resp is None
|
118
118
|
|
119
119
|
|
120
|
-
@pytest.mark.asyncio
|
120
|
+
@pytest.mark.asyncio
|
121
121
|
async def test_get_tx_exon_aln_v_data(test_db, tx_exon_aln_v_data):
|
122
122
|
"""Test that get_tx_exon_aln_v_data"""
|
123
123
|
resp = await test_db.get_tx_exon_aln_v_data(
|
@@ -165,14 +165,14 @@ async def test_get_tx_exon_aln_v_data(test_db, tx_exon_aln_v_data):
|
|
165
165
|
]
|
166
166
|
|
167
167
|
|
168
|
-
@pytest.mark.asyncio
|
168
|
+
@pytest.mark.asyncio
|
169
169
|
async def test_data_from_result(test_db, tx_exon_aln_v_data, data_from_result):
|
170
170
|
"""Test that data_from_result works correctly."""
|
171
171
|
resp = test_db.data_from_result(tx_exon_aln_v_data)
|
172
172
|
assert resp == data_from_result
|
173
173
|
|
174
174
|
|
175
|
-
@pytest.mark.asyncio
|
175
|
+
@pytest.mark.asyncio
|
176
176
|
async def test_mane_c_genomic_data(test_db):
|
177
177
|
"""Test that get_mane_c_genomic_data works correctly."""
|
178
178
|
resp = await test_db.get_mane_c_genomic_data(
|
@@ -196,7 +196,7 @@ async def test_mane_c_genomic_data(test_db):
|
|
196
196
|
assert resp == GenomicTxMetadata(**expected_params)
|
197
197
|
|
198
198
|
|
199
|
-
@pytest.mark.asyncio
|
199
|
+
@pytest.mark.asyncio
|
200
200
|
async def test_get_genomic_tx_data(test_db, genomic_tx_data):
|
201
201
|
"""Test that get_genomic_tx_data works correctly."""
|
202
202
|
resp = await test_db.get_genomic_tx_data("NM_004333.4", (2145, 2145))
|
@@ -216,7 +216,7 @@ async def test_get_genomic_tx_data(test_db, genomic_tx_data):
|
|
216
216
|
assert resp == GenomicTxMetadata(**expected_params)
|
217
217
|
|
218
218
|
|
219
|
-
@pytest.mark.asyncio
|
219
|
+
@pytest.mark.asyncio
|
220
220
|
async def test_get_ac_from_gene(test_db):
|
221
221
|
"""Test that get_ac_from_gene works correctly."""
|
222
222
|
resp = await test_db.get_ac_from_gene("BRAF")
|
@@ -229,7 +229,7 @@ async def test_get_ac_from_gene(test_db):
|
|
229
229
|
assert resp == []
|
230
230
|
|
231
231
|
|
232
|
-
@pytest.mark.asyncio
|
232
|
+
@pytest.mark.asyncio
|
233
233
|
async def test_get_gene_from_ac(test_db):
|
234
234
|
"""Tet that get_gene_from_ac works correctly."""
|
235
235
|
resp = await test_db.get_gene_from_ac("NC_000007.13", 140453136, None)
|
@@ -245,7 +245,7 @@ async def test_get_gene_from_ac(test_db):
|
|
245
245
|
assert resp is None
|
246
246
|
|
247
247
|
|
248
|
-
@pytest.mark.asyncio
|
248
|
+
@pytest.mark.asyncio
|
249
249
|
async def test_get_transcripts_from_gene(test_db):
|
250
250
|
"""Test that get_transcripts works correctly."""
|
251
251
|
resp = await test_db.get_transcripts(start_pos=2145, end_pos=2145, gene="BRAF")
|
@@ -281,7 +281,7 @@ async def test_get_transcripts_from_gene(test_db):
|
|
281
281
|
assert len(resp) == 0
|
282
282
|
|
283
283
|
|
284
|
-
@pytest.mark.asyncio
|
284
|
+
@pytest.mark.asyncio
|
285
285
|
async def test_get_chr_assembly(test_db):
|
286
286
|
"""Test that get_chr_assembly works correctly."""
|
287
287
|
resp = await test_db.get_chr_assembly("NC_000007.13")
|
@@ -295,7 +295,7 @@ async def test_get_chr_assembly(test_db):
|
|
295
295
|
assert resp is None
|
296
296
|
|
297
297
|
|
298
|
-
@pytest.mark.asyncio
|
298
|
+
@pytest.mark.asyncio
|
299
299
|
async def test_p_to_c_ac(test_db):
|
300
300
|
"""Test that p_to_c_ac works correctly."""
|
301
301
|
resp = await test_db.p_to_c_ac("NP_004324.2")
|
@@ -308,7 +308,7 @@ async def test_p_to_c_ac(test_db):
|
|
308
308
|
assert resp == []
|
309
309
|
|
310
310
|
|
311
|
-
@pytest.mark.asyncio
|
311
|
+
@pytest.mark.asyncio
|
312
312
|
async def test_get_alt_ac_start_or_end(
|
313
313
|
test_db, tpm3_1_8_start_genomic, tpm3_1_8_end_genomic
|
314
314
|
):
|
@@ -330,7 +330,7 @@ async def test_get_alt_ac_start_or_end(
|
|
330
330
|
)
|
331
331
|
|
332
332
|
|
333
|
-
@pytest.mark.asyncio
|
333
|
+
@pytest.mark.asyncio
|
334
334
|
async def test_get_mane_transcripts_from_genomic_pos(test_db):
|
335
335
|
"""Test that get_mane_transcripts_from_genomic_pos works correctly"""
|
336
336
|
resp = await test_db.get_transcripts_from_genomic_pos("NC_000007.14", 140753336)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/resources/transcript_mapping.tsv
RENAMED
File without changes
|
File without changes
|
File without changes
|
{cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/sources/mane_transcript_mappings.py
RENAMED
File without changes
|
{cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool/sources/transcript_mappings.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/src/cool_seq_tool.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cool_seq_tool-0.12.1 → cool_seq_tool-0.13.1}/tests/sources/test_mane_transcript_mappings.py
RENAMED
File without changes
|
File without changes
|