ln-ttest 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.
- ln_ttest-0.1.0/LICENSE +29 -0
- ln_ttest-0.1.0/PKG-INFO +85 -0
- ln_ttest-0.1.0/README.md +27 -0
- ln_ttest-0.1.0/pyproject.toml +63 -0
- ln_ttest-0.1.0/setup.cfg +4 -0
- ln_ttest-0.1.0/src/ln_ttest.egg-info/PKG-INFO +85 -0
- ln_ttest-0.1.0/src/ln_ttest.egg-info/SOURCES.txt +14 -0
- ln_ttest-0.1.0/src/ln_ttest.egg-info/dependency_links.txt +1 -0
- ln_ttest-0.1.0/src/ln_ttest.egg-info/requires.txt +11 -0
- ln_ttest-0.1.0/src/ln_ttest.egg-info/top_level.txt +1 -0
- ln_ttest-0.1.0/src/lntest/__init__.py +60 -0
- ln_ttest-0.1.0/src/lntest/_ln_test.py +541 -0
- ln_ttest-0.1.0/src/lntest/_rank_genes_groups.py +233 -0
- ln_ttest-0.1.0/tests/test_corr_method.py +117 -0
- ln_ttest-0.1.0/tests/test_lntest.py +229 -0
- ln_ttest-0.1.0/tests/test_scanpy_wrapper.py +341 -0
ln_ttest-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Oskar Kviman and Pedro F. Ferreira
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
ln_ttest-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ln-ttest
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: LN's t-test: differential expression testing on an asymptotically unbiased log-fold-change estimator
|
|
5
|
+
Author: Oskar Kviman, Pedro F. Ferreira
|
|
6
|
+
Maintainer-email: "Pedro F. Ferreira" <pedro.miguel.ferreira.pf@gmail.com>
|
|
7
|
+
License: BSD 3-Clause License
|
|
8
|
+
|
|
9
|
+
Copyright (c) 2026, Oskar Kviman and Pedro F. Ferreira
|
|
10
|
+
All rights reserved.
|
|
11
|
+
|
|
12
|
+
Redistribution and use in source and binary forms, with or without
|
|
13
|
+
modification, are permitted provided that the following conditions are met:
|
|
14
|
+
|
|
15
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
16
|
+
list of conditions and the following disclaimer.
|
|
17
|
+
|
|
18
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
19
|
+
this list of conditions and the following disclaimer in the documentation
|
|
20
|
+
and/or other materials provided with the distribution.
|
|
21
|
+
|
|
22
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
23
|
+
contributors may be used to endorse or promote products derived from
|
|
24
|
+
this software without specific prior written permission.
|
|
25
|
+
|
|
26
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
27
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
28
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
29
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
30
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
31
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
32
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
33
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
34
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
35
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
36
|
+
|
|
37
|
+
Project-URL: Homepage, https://github.com/okviman/lntest
|
|
38
|
+
Project-URL: Source, https://github.com/okviman/lntest
|
|
39
|
+
Keywords: single-cell,differential-expression,transcriptomics,scanpy
|
|
40
|
+
Classifier: Development Status :: 4 - Beta
|
|
41
|
+
Classifier: Intended Audience :: Science/Research
|
|
42
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
43
|
+
Classifier: Programming Language :: Python :: 3
|
|
44
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
45
|
+
Requires-Python: >=3.10
|
|
46
|
+
Description-Content-Type: text/markdown
|
|
47
|
+
License-File: LICENSE
|
|
48
|
+
Requires-Dist: numpy>=1.23
|
|
49
|
+
Requires-Dist: scipy>=1.9
|
|
50
|
+
Requires-Dist: statsmodels>=0.13
|
|
51
|
+
Provides-Extra: test
|
|
52
|
+
Requires-Dist: anndata>=0.9; extra == "test"
|
|
53
|
+
Requires-Dist: pandas>=1.5; extra == "test"
|
|
54
|
+
Requires-Dist: scanpy>=1.10; extra == "test"
|
|
55
|
+
Requires-Dist: pytest>=7; extra == "test"
|
|
56
|
+
Provides-Extra: anndata
|
|
57
|
+
Dynamic: license-file
|
|
58
|
+
|
|
59
|
+
# LN's $t$-test
|
|
60
|
+
|
|
61
|
+
Differential expression testing on an asymptotically unbiased log-fold-change estimator.
|
|
62
|
+
|
|
63
|
+
## Installation
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install ln-ttest
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
From a checkout:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pip install -e .
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Usage
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
from lntest import rank_genes_groups_ln
|
|
79
|
+
|
|
80
|
+
rank_genes_groups_ln(adata, groupby="leiden", layer="norm_counts")
|
|
81
|
+
adata.uns["rank_genes_groups"]["logfoldchanges"]
|
|
82
|
+
adata.uns["rank_genes_groups"]["lfc_se"] # SE of the LFC; lfc ± 1.96·se is the interval
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Takes **normalised, not log-transformed** counts.
|
ln_ttest-0.1.0/README.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# LN's $t$-test
|
|
2
|
+
|
|
3
|
+
Differential expression testing on an asymptotically unbiased log-fold-change estimator.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install ln-ttest
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
From a checkout:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install -e .
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from lntest import rank_genes_groups_ln
|
|
21
|
+
|
|
22
|
+
rank_genes_groups_ln(adata, groupby="leiden", layer="norm_counts")
|
|
23
|
+
adata.uns["rank_genes_groups"]["logfoldchanges"]
|
|
24
|
+
adata.uns["rank_genes_groups"]["lfc_se"] # SE of the LFC; lfc ± 1.96·se is the interval
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Takes **normalised, not log-transformed** counts.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=64", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
# The PyPI distribution name. It is NOT the import name, which stays `lntest`
|
|
7
|
+
# (see [tool.setuptools] below). PyPI rejected `lntest` as "too similar to an
|
|
8
|
+
# existing project" -- `intest` exists, and PyPI treats l/i/1 as confusable to
|
|
9
|
+
# block typosquatting. So: pip install ln-ttest, then `from lntest import ...`,
|
|
10
|
+
# the way scikit-learn installs and imports as sklearn.
|
|
11
|
+
name = "ln-ttest"
|
|
12
|
+
version = "0.1.0"
|
|
13
|
+
description = "LN's t-test: differential expression testing on an asymptotically unbiased log-fold-change estimator"
|
|
14
|
+
readme = "README.md"
|
|
15
|
+
requires-python = ">=3.10"
|
|
16
|
+
authors = [
|
|
17
|
+
{ name = "Oskar Kviman" },
|
|
18
|
+
{ name = "Pedro F. Ferreira" },
|
|
19
|
+
]
|
|
20
|
+
maintainers = [
|
|
21
|
+
{ name = "Pedro F. Ferreira", email = "pedro.miguel.ferreira.pf@gmail.com" },
|
|
22
|
+
]
|
|
23
|
+
license = { file = "LICENSE" }
|
|
24
|
+
keywords = ["single-cell", "differential-expression", "transcriptomics", "scanpy"]
|
|
25
|
+
classifiers = [
|
|
26
|
+
"Development Status :: 4 - Beta",
|
|
27
|
+
"Intended Audience :: Science/Research",
|
|
28
|
+
"License :: OSI Approved :: BSD License",
|
|
29
|
+
"Programming Language :: Python :: 3",
|
|
30
|
+
"Topic :: Scientific/Engineering :: Bio-Informatics",
|
|
31
|
+
]
|
|
32
|
+
dependencies = [
|
|
33
|
+
"numpy>=1.23",
|
|
34
|
+
"scipy>=1.9",
|
|
35
|
+
# For Benjamini-Hochberg, imported lazily inside the branch that uses it --
|
|
36
|
+
# the same arrangement scanpy has, which declares statsmodels>=0.14.5 and
|
|
37
|
+
# imports multipletests inside `_rank_genes_groups.py`. Correcting the same
|
|
38
|
+
# way scanpy does is worth more than shedding the dependency, and every
|
|
39
|
+
# scanpy user already has it.
|
|
40
|
+
"statsmodels>=0.13",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
[project.urls]
|
|
44
|
+
# The shared repository, not the fork this happens to be developed on.
|
|
45
|
+
# Renamed from DE-ZILN to lntest on 2026-09-11; the old URL still redirects, but
|
|
46
|
+
# a package's metadata should name the repository as it is.
|
|
47
|
+
Homepage = "https://github.com/okviman/lntest"
|
|
48
|
+
Source = "https://github.com/okviman/lntest"
|
|
49
|
+
|
|
50
|
+
[project.optional-dependencies]
|
|
51
|
+
# anndata and pandas are needed only to *build* the objects the wrapper is
|
|
52
|
+
# called with. The wrapper is duck-typed and never imports either, so they are
|
|
53
|
+
# test dependencies rather than runtime ones. scanpy is here so the corr_method
|
|
54
|
+
# tests can check we stay interchangeable with scanpy's own correction.
|
|
55
|
+
test = ["anndata>=0.9", "pandas>=1.5", "scanpy>=1.10", "pytest>=7"]
|
|
56
|
+
anndata = [] # kept as an accepted-but-empty alias; the extra is no longer needed
|
|
57
|
+
|
|
58
|
+
[tool.setuptools]
|
|
59
|
+
packages = ["lntest"]
|
|
60
|
+
package-dir = { "" = "src" }
|
|
61
|
+
|
|
62
|
+
[tool.pytest.ini_options]
|
|
63
|
+
testpaths = ["tests"]
|
ln_ttest-0.1.0/setup.cfg
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ln-ttest
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: LN's t-test: differential expression testing on an asymptotically unbiased log-fold-change estimator
|
|
5
|
+
Author: Oskar Kviman, Pedro F. Ferreira
|
|
6
|
+
Maintainer-email: "Pedro F. Ferreira" <pedro.miguel.ferreira.pf@gmail.com>
|
|
7
|
+
License: BSD 3-Clause License
|
|
8
|
+
|
|
9
|
+
Copyright (c) 2026, Oskar Kviman and Pedro F. Ferreira
|
|
10
|
+
All rights reserved.
|
|
11
|
+
|
|
12
|
+
Redistribution and use in source and binary forms, with or without
|
|
13
|
+
modification, are permitted provided that the following conditions are met:
|
|
14
|
+
|
|
15
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
16
|
+
list of conditions and the following disclaimer.
|
|
17
|
+
|
|
18
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
19
|
+
this list of conditions and the following disclaimer in the documentation
|
|
20
|
+
and/or other materials provided with the distribution.
|
|
21
|
+
|
|
22
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
23
|
+
contributors may be used to endorse or promote products derived from
|
|
24
|
+
this software without specific prior written permission.
|
|
25
|
+
|
|
26
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
27
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
28
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
29
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
30
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
31
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
32
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
33
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
34
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
35
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
36
|
+
|
|
37
|
+
Project-URL: Homepage, https://github.com/okviman/lntest
|
|
38
|
+
Project-URL: Source, https://github.com/okviman/lntest
|
|
39
|
+
Keywords: single-cell,differential-expression,transcriptomics,scanpy
|
|
40
|
+
Classifier: Development Status :: 4 - Beta
|
|
41
|
+
Classifier: Intended Audience :: Science/Research
|
|
42
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
43
|
+
Classifier: Programming Language :: Python :: 3
|
|
44
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
45
|
+
Requires-Python: >=3.10
|
|
46
|
+
Description-Content-Type: text/markdown
|
|
47
|
+
License-File: LICENSE
|
|
48
|
+
Requires-Dist: numpy>=1.23
|
|
49
|
+
Requires-Dist: scipy>=1.9
|
|
50
|
+
Requires-Dist: statsmodels>=0.13
|
|
51
|
+
Provides-Extra: test
|
|
52
|
+
Requires-Dist: anndata>=0.9; extra == "test"
|
|
53
|
+
Requires-Dist: pandas>=1.5; extra == "test"
|
|
54
|
+
Requires-Dist: scanpy>=1.10; extra == "test"
|
|
55
|
+
Requires-Dist: pytest>=7; extra == "test"
|
|
56
|
+
Provides-Extra: anndata
|
|
57
|
+
Dynamic: license-file
|
|
58
|
+
|
|
59
|
+
# LN's $t$-test
|
|
60
|
+
|
|
61
|
+
Differential expression testing on an asymptotically unbiased log-fold-change estimator.
|
|
62
|
+
|
|
63
|
+
## Installation
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install ln-ttest
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
From a checkout:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pip install -e .
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Usage
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
from lntest import rank_genes_groups_ln
|
|
79
|
+
|
|
80
|
+
rank_genes_groups_ln(adata, groupby="leiden", layer="norm_counts")
|
|
81
|
+
adata.uns["rank_genes_groups"]["logfoldchanges"]
|
|
82
|
+
adata.uns["rank_genes_groups"]["lfc_se"] # SE of the LFC; lfc ± 1.96·se is the interval
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Takes **normalised, not log-transformed** counts.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
src/ln_ttest.egg-info/PKG-INFO
|
|
5
|
+
src/ln_ttest.egg-info/SOURCES.txt
|
|
6
|
+
src/ln_ttest.egg-info/dependency_links.txt
|
|
7
|
+
src/ln_ttest.egg-info/requires.txt
|
|
8
|
+
src/ln_ttest.egg-info/top_level.txt
|
|
9
|
+
src/lntest/__init__.py
|
|
10
|
+
src/lntest/_ln_test.py
|
|
11
|
+
src/lntest/_rank_genes_groups.py
|
|
12
|
+
tests/test_corr_method.py
|
|
13
|
+
tests/test_lntest.py
|
|
14
|
+
tests/test_scanpy_wrapper.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
lntest
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""LN's t-test: differential expression on an asymptotically unbiased log-fold-change estimator.
|
|
2
|
+
|
|
3
|
+
from lntest import get_LN_lfcs, rank_genes_groups_ln
|
|
4
|
+
|
|
5
|
+
This module is the whole public surface. The two implementation modules are
|
|
6
|
+
private, following scanpy, which keeps ``rank_genes_groups`` in
|
|
7
|
+
``scanpy/tools/_rank_genes_groups.py`` and exposes only the name.
|
|
8
|
+
|
|
9
|
+
``_rank_genes_groups`` was called ``scanpy_wrapper`` until 2026-09-10. The name
|
|
10
|
+
was wrong in both directions: the module never imports scanpy, so it wraps
|
|
11
|
+
nothing, and if scanpy ever dispatches to this package then scanpy is the
|
|
12
|
+
wrapper, not us. It is scanpy-*shaped*, which is what its new name says.
|
|
13
|
+
|
|
14
|
+
Everything here imports eagerly, and can, because the package depends on numpy,
|
|
15
|
+
scipy and statsmodels alone -- and statsmodels only inside the Benjamini-Hochberg
|
|
16
|
+
branch that needs it, which is again what scanpy does.
|
|
17
|
+
"""
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
from ._ln_test import (
|
|
21
|
+
TRIGAMMA_EXACT,
|
|
22
|
+
TRIGAMMA_RECOMB25,
|
|
23
|
+
get_LN_lfcs,
|
|
24
|
+
get_LN_lfcs_sparse,
|
|
25
|
+
trigamma_diff_int,
|
|
26
|
+
trigamma_diff_recomb25,
|
|
27
|
+
)
|
|
28
|
+
from ._rank_genes_groups import CORR_METHODS, rank_genes_groups_ln
|
|
29
|
+
|
|
30
|
+
def _detect_version() -> str:
|
|
31
|
+
# Scoped in a function so importlib.metadata's names do not land in the
|
|
32
|
+
# package namespace; `dir(lntest)` should show the API and nothing else.
|
|
33
|
+
try: # pragma: no cover - fails only for a tree with no installed metadata
|
|
34
|
+
from importlib.metadata import version
|
|
35
|
+
|
|
36
|
+
# The distribution name, not this module's name. They differ: PyPI
|
|
37
|
+
# rejected "lntest" as too close to the existing "intest".
|
|
38
|
+
return version("ln-ttest")
|
|
39
|
+
except Exception:
|
|
40
|
+
return "0.0.0.dev0"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
__version__ = _detect_version()
|
|
44
|
+
del _detect_version
|
|
45
|
+
|
|
46
|
+
__all__ = [
|
|
47
|
+
"CORR_METHODS",
|
|
48
|
+
"TRIGAMMA_EXACT",
|
|
49
|
+
"TRIGAMMA_RECOMB25",
|
|
50
|
+
"get_LN_lfcs",
|
|
51
|
+
"get_LN_lfcs_sparse",
|
|
52
|
+
"rank_genes_groups_ln",
|
|
53
|
+
"trigamma_diff_int",
|
|
54
|
+
"trigamma_diff_recomb25",
|
|
55
|
+
"__version__",
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def __dir__():
|
|
60
|
+
return sorted(__all__)
|