bonesistools 1.2.5__tar.gz → 1.2.6__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.
- {bonesistools-1.2.5 → bonesistools-1.2.6}/.gitignore +1 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/PKG-INFO +2 -1
- {bonesistools-1.2.5 → bonesistools-1.2.6}/pyproject.toml +2 -1
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/__init__.py +3 -0
- bonesistools-1.2.6/src/bonesistools/_metadata.py +70 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/_orthologs.py +116 -9
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/ncbi/_genesyn.py +7 -3
- bonesistools-1.2.6/src/bonesistools/sctools/_stats.py +90 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/datasets/__init__.py +8 -8
- bonesistools-1.2.6/src/bonesistools/sctools/datasets/_geo.py +475 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_graph.py +62 -4
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_scatterplot.py +6 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/preprocessing/__init__.py +12 -2
- bonesistools-1.2.5/src/bonesistools/sctools/preprocessing/_simple.py → bonesistools-1.2.6/src/bonesistools/sctools/preprocessing/_filter.py +1 -55
- bonesistools-1.2.6/src/bonesistools/sctools/preprocessing/_simple.py +63 -0
- bonesistools-1.2.6/src/bonesistools/sctools/preprocessing/_transform.py +491 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/__init__.py +11 -5
- bonesistools-1.2.6/src/bonesistools/sctools/tools/_binarize.py +246 -0
- bonesistools-1.2.6/src/bonesistools/sctools/tools/_clustering.py +649 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_embedding.py +18 -1
- bonesistools-1.2.6/src/bonesistools/sctools/tools/_graph.py +286 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_markers.py +262 -3
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_neighbors.py +27 -12
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_regress.py +19 -34
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_stats.py +359 -23
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_utils.py +42 -23
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_influence_graph_distances.py +2 -1
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/dbs/test_ncbi.py +4 -4
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/reproducibility/test_reproducibility_stats.py +2 -3
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/reproducibility/test_reproducibility_workflow.py +9 -5
- bonesistools-1.2.6/tests/sct/datasets/test_geo.py +293 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/plotting/test_graph.py +53 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/preprocessing/test_duplicates.py +19 -9
- bonesistools-1.2.6/tests/sct/preprocessing/test_transform.py +851 -0
- bonesistools-1.2.6/tests/sct/tools/test_binarize.py +89 -0
- bonesistools-1.2.6/tests/sct/tools/test_classification.py +62 -0
- bonesistools-1.2.6/tests/sct/tools/test_clustering.py +337 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/tools/test_embedding.py +47 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/tools/test_knnsc.py +79 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/tools/test_markers.py +281 -1
- bonesistools-1.2.5/tests/sct/tools/test_graph_neighbors_classification.py → bonesistools-1.2.6/tests/sct/tools/test_neighbors.py +91 -95
- bonesistools-1.2.6/tests/sct/tools/test_paga.py +140 -0
- bonesistools-1.2.6/tests/sct/tools/test_regress.py +219 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/tools/test_stats.py +430 -34
- bonesistools-1.2.6/tests/sct/tools/test_utils.py +391 -0
- bonesistools-1.2.6/tests/test_import.py +24 -0
- bonesistools-1.2.5/src/bonesistools/sctools/tools/_clustering.py +0 -264
- bonesistools-1.2.5/src/bonesistools/sctools/tools/_graph.py +0 -105
- bonesistools-1.2.5/tests/sct/tools/test_clustering.py +0 -101
- bonesistools-1.2.5/tests/sct/tools/test_utils.py +0 -207
- {bonesistools-1.2.5 → bonesistools-1.2.6}/LICENSE +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/README.md +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/_compat.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/_typing.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/_validation.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/_warnings.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_algebra/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_algebra/_algebra.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_algebra/_boolean.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_algebra/_hypercube.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_algebra/_parser.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_algebra/_representation.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_algebra/_structure.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_algebra/_typing.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_network/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_network/_network.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_network/_parser.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/boolean_network/_typing.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/influence_graph/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/influence_graph/_algorithms.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/influence_graph/_distances.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/influence_graph/_influence_graph.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/influence_graph/_parser.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/influence_graph/_scoring.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/influence_graph/_typing.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/plotting/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/plotting/_graphviz.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/plotting/_styles.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/boolpy/plotting/_svg.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_anole_lizard_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_c.elegans_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_cat_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_cattle_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_chicken_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_chimpanzee_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_dog_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_fruitfly_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_horse_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_macaque_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_mouse_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_opossum_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_pig_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_platypus_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_rat_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_s.cerevisiae_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_s.pombe_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_xenopus_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/hcop/data/human_zebrafish_hcop.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/ncbi/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/ncbi/_typing.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/ncbi/data/gi/escherichia_coli_gene_info.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/ncbi/data/gi/homo_sapiens_gene_info.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/ncbi/data/gi/mus_musculus_gene_info.tsv.gz +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/omnipath/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/omnipath/_archive.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/omnipath/_collectri.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/databases/omnipath/_dorothea.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/grntools/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/py.typed +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/_dependencies.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/_metadata.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/_typing.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/_validation.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/datasets/nestorowa_hvg.h5ad +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/__init__.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_barplot.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_colors.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_density.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_distribution.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_figure.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_typing.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/plotting/_utils.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/preprocessing/_duplicates.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/preprocessing/_genename.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/preprocessing/_transfer.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_classification.py +4 -4
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_conversion.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_maths.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/src/bonesistools/sctools/tools/_write.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/conftest.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_aggregated_influence_graph.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_boolean_algebra.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_boolean_network.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_boolean_network_ensemble.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_hypercube.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_hypercube_collection.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_influence_graph.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_influence_graph_parser.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_influence_graph_scoring.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_partial_boolean.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/bpy/test_plotting_styles.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/dbs/test_hcop.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/dbs/test_hcop_orthologs.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/dbs/test_omnipath.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/reproducibility/test_reproducibility_omnipath.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/conftest.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/plotting/test_barplot.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/plotting/test_colors.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/plotting/test_density.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/plotting/test_distribution.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/plotting/test_figure.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/plotting/test_scatterplot.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/preprocessing/test_genename.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/preprocessing/test_simple.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/preprocessing/test_transfer_obs.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/test_typing.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/tools/test_conversion.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/tools/test_maths.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/sct/tools/test_write.py +0 -0
- {bonesistools-1.2.5 → bonesistools-1.2.6}/tests/test_validation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bonesistools
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.6
|
|
4
4
|
Summary: Bioinformatics toolkit for upstream and downstream analyses around the BoNesis framework
|
|
5
5
|
Project-URL: Repository, https://github.com/bnediction/bonesistools
|
|
6
6
|
Author: Théo Roncalli
|
|
@@ -551,6 +551,7 @@ Requires-Python: >=3.7
|
|
|
551
551
|
Requires-Dist: anndata>=0.8
|
|
552
552
|
Requires-Dist: boolean-py>=4.0
|
|
553
553
|
Requires-Dist: h5py>=3.7
|
|
554
|
+
Requires-Dist: importlib-metadata; python_version < '3.8'
|
|
554
555
|
Requires-Dist: importlib-resources; python_version < '3.9'
|
|
555
556
|
Requires-Dist: matplotlib>=3.5
|
|
556
557
|
Requires-Dist: networkx>=2.1
|
|
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "bonesistools"
|
|
7
7
|
description = "Bioinformatics toolkit for upstream and downstream analyses around the BoNesis framework"
|
|
8
|
-
version = "1.2.
|
|
8
|
+
version = "1.2.6"
|
|
9
9
|
license = {file = "LICENSE"}
|
|
10
10
|
credits = ["BNeDiction", "PEPR Santé Numérique 2030"]
|
|
11
11
|
authors = [
|
|
@@ -41,6 +41,7 @@ classifiers = [
|
|
|
41
41
|
]
|
|
42
42
|
requires-python = ">=3.7"
|
|
43
43
|
dependencies = [
|
|
44
|
+
"importlib-metadata; python_version < '3.8'",
|
|
44
45
|
"importlib_resources; python_version < '3.9'",
|
|
45
46
|
"typing-extensions>=4.0",
|
|
46
47
|
"numpy>=1.21",
|
|
@@ -29,6 +29,7 @@ from typing import List as _List
|
|
|
29
29
|
from . import boolpy as bpy
|
|
30
30
|
from . import databases as dbs
|
|
31
31
|
from . import sctools as sct
|
|
32
|
+
from ._metadata import package_version as _package_version
|
|
32
33
|
from ._warnings import _warn_deprecated
|
|
33
34
|
|
|
34
35
|
if _TYPE_CHECKING:
|
|
@@ -37,8 +38,10 @@ if _TYPE_CHECKING:
|
|
|
37
38
|
del annotations
|
|
38
39
|
|
|
39
40
|
__credits__ = "BNeDiction; PEPR Santé Numérique 2030"
|
|
41
|
+
__version__ = _package_version()
|
|
40
42
|
|
|
41
43
|
__all__ = [
|
|
44
|
+
"__version__",
|
|
42
45
|
"sct",
|
|
43
46
|
"bpy",
|
|
44
47
|
"dbs",
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import importlib
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import Any, Optional, cast
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def package_version(distribution: str = "bonesistools") -> str:
|
|
11
|
+
"""
|
|
12
|
+
Return the installed package version.
|
|
13
|
+
|
|
14
|
+
When the package is imported directly from a source checkout, distribution
|
|
15
|
+
metadata can be unavailable. In that case, read the version from
|
|
16
|
+
`pyproject.toml`.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
source_version = _pyproject_version()
|
|
20
|
+
if source_version is not None:
|
|
21
|
+
return source_version
|
|
22
|
+
|
|
23
|
+
installed_version = _installed_version(distribution)
|
|
24
|
+
return installed_version if installed_version is not None else "0+unknown"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _installed_version(distribution: str) -> Optional[str]:
|
|
28
|
+
|
|
29
|
+
try:
|
|
30
|
+
metadata = importlib.import_module("importlib.metadata")
|
|
31
|
+
except ImportError: # pragma: no cover - Python 3.7 compatibility
|
|
32
|
+
metadata = importlib.import_module("importlib_metadata")
|
|
33
|
+
|
|
34
|
+
try:
|
|
35
|
+
return cast(str, cast(Any, metadata).version(distribution))
|
|
36
|
+
except Exception as error:
|
|
37
|
+
if error.__class__.__name__ == "PackageNotFoundError":
|
|
38
|
+
return None
|
|
39
|
+
raise
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _pyproject_version() -> Optional[str]:
|
|
43
|
+
|
|
44
|
+
pyproject = _find_pyproject()
|
|
45
|
+
if pyproject is None:
|
|
46
|
+
return None
|
|
47
|
+
|
|
48
|
+
in_project = False
|
|
49
|
+
for line in pyproject.read_text(encoding="utf-8").splitlines():
|
|
50
|
+
stripped = line.strip()
|
|
51
|
+
if stripped == "[project]":
|
|
52
|
+
in_project = True
|
|
53
|
+
continue
|
|
54
|
+
if in_project and stripped.startswith("["):
|
|
55
|
+
return None
|
|
56
|
+
if in_project and stripped.startswith("version"):
|
|
57
|
+
_, value = stripped.split("=", 1)
|
|
58
|
+
return value.strip().strip("\"'")
|
|
59
|
+
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _find_pyproject() -> Optional[Path]:
|
|
64
|
+
|
|
65
|
+
for parent in Path(__file__).resolve().parents:
|
|
66
|
+
pyproject = parent / "pyproject.toml"
|
|
67
|
+
if pyproject.exists():
|
|
68
|
+
return pyproject
|
|
69
|
+
|
|
70
|
+
return None
|
|
@@ -14,6 +14,7 @@ from typing import (
|
|
|
14
14
|
List,
|
|
15
15
|
Optional,
|
|
16
16
|
Sequence,
|
|
17
|
+
Set,
|
|
17
18
|
Tuple,
|
|
18
19
|
Union,
|
|
19
20
|
cast,
|
|
@@ -131,11 +132,84 @@ class Orthologs:
|
|
|
131
132
|
table=table,
|
|
132
133
|
)
|
|
133
134
|
|
|
135
|
+
@overload
|
|
136
|
+
def __call__(
|
|
137
|
+
self,
|
|
138
|
+
data: str,
|
|
139
|
+
*args: Any,
|
|
140
|
+
**kwargs: Any,
|
|
141
|
+
) -> List[str]: ...
|
|
142
|
+
|
|
143
|
+
@overload
|
|
144
|
+
def __call__(
|
|
145
|
+
self,
|
|
146
|
+
data: List[str],
|
|
147
|
+
*args: Any,
|
|
148
|
+
**kwargs: Any,
|
|
149
|
+
) -> List[str]: ...
|
|
150
|
+
|
|
151
|
+
@overload
|
|
152
|
+
def __call__(
|
|
153
|
+
self,
|
|
154
|
+
data: Tuple[str, ...],
|
|
155
|
+
*args: Any,
|
|
156
|
+
**kwargs: Any,
|
|
157
|
+
) -> Tuple[str, ...]: ...
|
|
158
|
+
|
|
159
|
+
@overload
|
|
160
|
+
def __call__(
|
|
161
|
+
self,
|
|
162
|
+
data: Set[str],
|
|
163
|
+
*args: Any,
|
|
164
|
+
**kwargs: Any,
|
|
165
|
+
) -> Set[str]: ...
|
|
166
|
+
|
|
167
|
+
@overload
|
|
168
|
+
def __call__(
|
|
169
|
+
self,
|
|
170
|
+
data: Sequence[str],
|
|
171
|
+
*args: Any,
|
|
172
|
+
**kwargs: Any,
|
|
173
|
+
) -> Sequence[str]: ...
|
|
174
|
+
|
|
175
|
+
@overload
|
|
176
|
+
def __call__(
|
|
177
|
+
self,
|
|
178
|
+
data: InteractionList,
|
|
179
|
+
*args: Any,
|
|
180
|
+
**kwargs: Any,
|
|
181
|
+
) -> InteractionList: ...
|
|
182
|
+
|
|
183
|
+
@overload
|
|
184
|
+
def __call__(
|
|
185
|
+
self,
|
|
186
|
+
data: pd.DataFrame,
|
|
187
|
+
*args: Any,
|
|
188
|
+
**kwargs: Any,
|
|
189
|
+
) -> pd.DataFrame: ...
|
|
190
|
+
|
|
191
|
+
@overload
|
|
192
|
+
def __call__(
|
|
193
|
+
self,
|
|
194
|
+
data: Graph[Any],
|
|
195
|
+
*args: Any,
|
|
196
|
+
**kwargs: Any,
|
|
197
|
+
) -> Graph[Any]: ...
|
|
198
|
+
|
|
199
|
+
@overload
|
|
200
|
+
def __call__(
|
|
201
|
+
self,
|
|
202
|
+
data: "BooleanNetworkLike",
|
|
203
|
+
*args: Any,
|
|
204
|
+
**kwargs: Any,
|
|
205
|
+
) -> "BooleanNetworkLike": ...
|
|
206
|
+
|
|
134
207
|
def __call__(
|
|
135
208
|
self,
|
|
136
209
|
data: Union[
|
|
137
210
|
str,
|
|
138
211
|
Sequence[str],
|
|
212
|
+
Set[str],
|
|
139
213
|
InteractionList,
|
|
140
214
|
pd.DataFrame,
|
|
141
215
|
Graph[Any],
|
|
@@ -143,7 +217,7 @@ class Orthologs:
|
|
|
143
217
|
],
|
|
144
218
|
*args: Any,
|
|
145
219
|
**kwargs: Any,
|
|
146
|
-
):
|
|
220
|
+
) -> Any:
|
|
147
221
|
"""
|
|
148
222
|
Translate genes in a supported object.
|
|
149
223
|
|
|
@@ -153,7 +227,8 @@ class Orthologs:
|
|
|
153
227
|
|
|
154
228
|
Parameters
|
|
155
229
|
----------
|
|
156
|
-
data: str, sequence, InteractionList, DataFrame, Graph or
|
|
230
|
+
data: str, sequence, set, InteractionList, DataFrame, Graph or
|
|
231
|
+
BooleanNetworkLike
|
|
157
232
|
Object containing human gene symbols to translate.
|
|
158
233
|
*args: Any
|
|
159
234
|
Positional arguments forwarded to the selected translation method.
|
|
@@ -181,7 +256,11 @@ class Orthologs:
|
|
|
181
256
|
if (
|
|
182
257
|
isinstance(data, SequenceInstance) and not isinstance(data, str)
|
|
183
258
|
) or isinstance(data, set):
|
|
184
|
-
return self.translate_sequence(
|
|
259
|
+
return self.translate_sequence(
|
|
260
|
+
cast(Union[Sequence[str], Set[str]], data),
|
|
261
|
+
*args,
|
|
262
|
+
**kwargs,
|
|
263
|
+
)
|
|
185
264
|
if isinstance(data, pd.DataFrame):
|
|
186
265
|
return self.translate_df(data, *args, **kwargs)
|
|
187
266
|
if isinstance(data, Graph):
|
|
@@ -190,7 +269,7 @@ class Orthologs:
|
|
|
190
269
|
return self.translate_bn(data, *args, **kwargs)
|
|
191
270
|
raise TypeError(
|
|
192
271
|
f"unsupported argument type for 'data': "
|
|
193
|
-
f"expected str, sequence, interaction list, {pd.DataFrame}, {Graph} "
|
|
272
|
+
f"expected str, sequence, set, interaction list, {pd.DataFrame}, {Graph} "
|
|
194
273
|
f"or Boolean network-like object but received {type(data)}"
|
|
195
274
|
)
|
|
196
275
|
|
|
@@ -257,13 +336,41 @@ class Orthologs:
|
|
|
257
336
|
return list(self._mapping[gene])
|
|
258
337
|
return [gene] if keep_if_missing else []
|
|
259
338
|
|
|
339
|
+
@overload
|
|
340
|
+
def translate_sequence(
|
|
341
|
+
self,
|
|
342
|
+
genes: List[str],
|
|
343
|
+
keep_if_missing: bool = True,
|
|
344
|
+
) -> List[str]: ...
|
|
345
|
+
|
|
346
|
+
@overload
|
|
347
|
+
def translate_sequence(
|
|
348
|
+
self,
|
|
349
|
+
genes: Tuple[str, ...],
|
|
350
|
+
keep_if_missing: bool = True,
|
|
351
|
+
) -> Tuple[str, ...]: ...
|
|
352
|
+
|
|
353
|
+
@overload
|
|
354
|
+
def translate_sequence(
|
|
355
|
+
self,
|
|
356
|
+
genes: Set[str],
|
|
357
|
+
keep_if_missing: bool = True,
|
|
358
|
+
) -> Set[str]: ...
|
|
359
|
+
|
|
360
|
+
@overload
|
|
260
361
|
def translate_sequence(
|
|
261
362
|
self,
|
|
262
363
|
genes: Sequence[str],
|
|
263
364
|
keep_if_missing: bool = True,
|
|
264
|
-
) -> Sequence[str]:
|
|
365
|
+
) -> Sequence[str]: ...
|
|
366
|
+
|
|
367
|
+
def translate_sequence(
|
|
368
|
+
self,
|
|
369
|
+
genes: Union[Sequence[str], Set[str]],
|
|
370
|
+
keep_if_missing: bool = True,
|
|
371
|
+
) -> Union[Sequence[str], Set[str]]:
|
|
265
372
|
"""
|
|
266
|
-
Translate a sequence of human gene symbols.
|
|
373
|
+
Translate a sequence or set of human gene symbols.
|
|
267
374
|
|
|
268
375
|
Each gene is translated to one target symbol using the deterministic
|
|
269
376
|
HCOP ranking. Missing genes are either kept or removed depending on
|
|
@@ -271,15 +378,15 @@ class Orthologs:
|
|
|
271
378
|
|
|
272
379
|
Parameters
|
|
273
380
|
----------
|
|
274
|
-
genes: sequence of str
|
|
381
|
+
genes: sequence or set of str
|
|
275
382
|
Human gene symbols to translate.
|
|
276
383
|
keep_if_missing: bool (default: True)
|
|
277
384
|
If True, keep original gene symbols with no ortholog.
|
|
278
385
|
|
|
279
386
|
Returns
|
|
280
387
|
-------
|
|
281
|
-
sequence of str
|
|
282
|
-
Translated
|
|
388
|
+
sequence or set of str
|
|
389
|
+
Translated values, preserving the input collection type when
|
|
283
390
|
possible.
|
|
284
391
|
"""
|
|
285
392
|
|
|
@@ -386,7 +386,7 @@ class GeneSynonyms:
|
|
|
386
386
|
self.ncbi_file = self.__resolve_gene_info_file(self.version)
|
|
387
387
|
|
|
388
388
|
self.__download_gene_info()
|
|
389
|
-
self.
|
|
389
|
+
self._initialize_mappings(show_warnings=show_warnings)
|
|
390
390
|
|
|
391
391
|
def __call__(
|
|
392
392
|
self,
|
|
@@ -1038,7 +1038,7 @@ class GeneSynonyms:
|
|
|
1038
1038
|
self.ncbi_file = self.__resolve_gene_info_file(self.version)
|
|
1039
1039
|
|
|
1040
1040
|
self.__download_gene_info()
|
|
1041
|
-
self.
|
|
1041
|
+
self._initialize_mappings(show_warnings=show_warnings)
|
|
1042
1042
|
|
|
1043
1043
|
def get_mapping(self):
|
|
1044
1044
|
"""
|
|
@@ -1693,7 +1693,7 @@ class GeneSynonyms:
|
|
|
1693
1693
|
|
|
1694
1694
|
return gene_aliases_mapping
|
|
1695
1695
|
|
|
1696
|
-
def
|
|
1696
|
+
def _initialize_mappings(self, show_warnings: bool) -> None:
|
|
1697
1697
|
|
|
1698
1698
|
self.show_warnings = show_warnings
|
|
1699
1699
|
try:
|
|
@@ -1724,6 +1724,10 @@ class GeneSynonyms:
|
|
|
1724
1724
|
*self.databases,
|
|
1725
1725
|
)
|
|
1726
1726
|
|
|
1727
|
+
def __initialize_mappings(self, show_warnings: bool) -> None:
|
|
1728
|
+
|
|
1729
|
+
self._initialize_mappings(show_warnings=show_warnings)
|
|
1730
|
+
|
|
1727
1731
|
@support_legacy_gene_synonyms_args
|
|
1728
1732
|
def __conversion_function(
|
|
1729
1733
|
self,
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import warnings
|
|
6
|
+
from typing import Any, Optional, Tuple, cast
|
|
7
|
+
|
|
8
|
+
import numpy as np
|
|
9
|
+
from scipy import sparse
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _column_mean_variance(
|
|
13
|
+
matrix: Any,
|
|
14
|
+
max_memory: Optional[int] = None,
|
|
15
|
+
) -> Tuple[np.ndarray, np.ndarray]:
|
|
16
|
+
|
|
17
|
+
n_obs = int(matrix.shape[0])
|
|
18
|
+
n_vars = int(matrix.shape[1])
|
|
19
|
+
if sparse.issparse(matrix):
|
|
20
|
+
sparse_format = getattr(matrix, "format", None)
|
|
21
|
+
if sparse_format == "csr":
|
|
22
|
+
sums = np.bincount(
|
|
23
|
+
matrix.indices,
|
|
24
|
+
weights=matrix.data,
|
|
25
|
+
minlength=n_vars,
|
|
26
|
+
)
|
|
27
|
+
squared_sums = np.bincount(
|
|
28
|
+
matrix.indices,
|
|
29
|
+
weights=matrix.data * matrix.data,
|
|
30
|
+
minlength=n_vars,
|
|
31
|
+
)
|
|
32
|
+
elif sparse_format == "csc":
|
|
33
|
+
sums = np.zeros(n_vars, dtype=np.float64)
|
|
34
|
+
squared_sums = np.zeros(n_vars, dtype=np.float64)
|
|
35
|
+
nonempty_columns = np.diff(matrix.indptr) > 0
|
|
36
|
+
if np.any(nonempty_columns):
|
|
37
|
+
starts = matrix.indptr[:-1][nonempty_columns]
|
|
38
|
+
data = np.asarray(matrix.data, dtype=np.float64)
|
|
39
|
+
sums[nonempty_columns] = np.add.reduceat(data, starts)
|
|
40
|
+
squared_sums[nonempty_columns] = np.add.reduceat(data * data, starts)
|
|
41
|
+
else:
|
|
42
|
+
return _column_mean_variance(
|
|
43
|
+
matrix.tocsr(),
|
|
44
|
+
max_memory=max_memory,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
means = sums / n_obs
|
|
48
|
+
mean_squares = squared_sums / n_obs
|
|
49
|
+
else:
|
|
50
|
+
dense_matrix = cast(np.ndarray, matrix)
|
|
51
|
+
means = np.empty(n_vars, dtype=np.float64)
|
|
52
|
+
mean_squares = np.empty(n_vars, dtype=np.float64)
|
|
53
|
+
chunk_size = _dense_column_chunk_size(dense_matrix, max_memory)
|
|
54
|
+
for start in range(0, n_vars, chunk_size):
|
|
55
|
+
end = min(start + chunk_size, n_vars)
|
|
56
|
+
dense_chunk = dense_matrix[:, start:end]
|
|
57
|
+
means[start:end] = np.asarray(
|
|
58
|
+
dense_chunk.mean(axis=0, dtype=np.float64)
|
|
59
|
+
).ravel()
|
|
60
|
+
squared_chunk = np.multiply(dense_chunk, dense_chunk)
|
|
61
|
+
mean_squares[start:end] = np.asarray(
|
|
62
|
+
squared_chunk.mean(axis=0, dtype=np.float64)
|
|
63
|
+
).ravel()
|
|
64
|
+
|
|
65
|
+
variances = np.maximum(mean_squares - means**2, 0)
|
|
66
|
+
if n_obs > 1:
|
|
67
|
+
variances *= n_obs / (n_obs - 1)
|
|
68
|
+
return means, variances
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _dense_column_chunk_size(
|
|
72
|
+
matrix: np.ndarray,
|
|
73
|
+
max_memory: Optional[int],
|
|
74
|
+
) -> int:
|
|
75
|
+
|
|
76
|
+
n_obs = int(matrix.shape[0])
|
|
77
|
+
n_vars = int(matrix.shape[1])
|
|
78
|
+
if max_memory is None:
|
|
79
|
+
return max(1, n_vars)
|
|
80
|
+
|
|
81
|
+
bytes_per_value = np.dtype(matrix.dtype).itemsize
|
|
82
|
+
bytes_per_column = n_obs * bytes_per_value
|
|
83
|
+
if max_memory < bytes_per_column:
|
|
84
|
+
warnings.warn(
|
|
85
|
+
"Requested memory budget is smaller than the memory required for a "
|
|
86
|
+
"single variable. Computation will proceed with chunk_size=1.",
|
|
87
|
+
RuntimeWarning,
|
|
88
|
+
stacklevel=2,
|
|
89
|
+
)
|
|
90
|
+
return max(1, int(max_memory // bytes_per_column))
|
|
@@ -20,9 +20,12 @@ else:
|
|
|
20
20
|
import anndata as _ad
|
|
21
21
|
from anndata import AnnData as _AnnData
|
|
22
22
|
|
|
23
|
+
from ._geo import from_geo
|
|
24
|
+
|
|
23
25
|
del annotations
|
|
24
26
|
|
|
25
27
|
__all__ = [
|
|
28
|
+
"from_geo",
|
|
26
29
|
"nestorowa",
|
|
27
30
|
]
|
|
28
31
|
|
|
@@ -37,14 +40,11 @@ def nestorowa() -> _AnnData:
|
|
|
37
40
|
AnnData
|
|
38
41
|
Preprocessed AnnData object containing highly variable genes.
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"A single-cell resolution map of mouse hematopoietic stem and "
|
|
46
|
-
"progenitor cell differentiation"
|
|
47
|
-
Blood 128(8): e20-e31
|
|
43
|
+
References
|
|
44
|
+
----------
|
|
45
|
+
Nestorowa et al. (2016). A single-cell resolution map of mouse
|
|
46
|
+
hematopoietic stem and progenitor cell differentiation. Blood, 128(8),
|
|
47
|
+
e20-e31.
|
|
48
48
|
"""
|
|
49
49
|
|
|
50
50
|
path = _files(__package__) / "nestorowa_hvg.h5ad"
|