iskakov 0.2.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.
iskakov-0.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Damir Iskakov
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.
iskakov-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.4
2
+ Name: iskakov
3
+ Version: 0.2.0
4
+ Summary: Alias for own-baseline: does a single-cell potency score add anything beyond its own low-order primitive?
5
+ Author: Damir Iskakov
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Damir Iskakov
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://iskakov.dev/ownbaseline
29
+ Project-URL: Repository, https://github.com/IskakovDamir/ownbaseline
30
+ Project-URL: Issues, https://github.com/IskakovDamir/ownbaseline/issues
31
+ Keywords: single-cell,scRNA-seq,potency,stemness,benchmarking,incremental-validity,null-calibration,CytoTRACE,SCENT
32
+ Classifier: Development Status :: 4 - Beta
33
+ Classifier: Environment :: Console
34
+ Classifier: Intended Audience :: Science/Research
35
+ Classifier: License :: OSI Approved :: MIT License
36
+ Classifier: Operating System :: OS Independent
37
+ Classifier: Programming Language :: Python :: 3
38
+ Classifier: Programming Language :: Python :: 3.10
39
+ Classifier: Programming Language :: Python :: 3.11
40
+ Classifier: Programming Language :: Python :: 3.12
41
+ Classifier: Programming Language :: Python :: 3.13
42
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
43
+ Requires-Python: >=3.10
44
+ Description-Content-Type: text/markdown
45
+ License-File: LICENSE
46
+ Requires-Dist: own-baseline>=0.2.0
47
+ Dynamic: license-file
48
+
49
+ # iskakov
50
+
51
+ `pip install iskakov` installs [`own-baseline`](https://pypi.org/project/own-baseline/)
52
+ and gives you its command line under a second name. The two names run the same
53
+ program:
54
+
55
+ ```bash
56
+ pip install iskakov
57
+
58
+ iskakov check cells.h5ad --score obs:ccat --ordinal obs:stage \
59
+ --primitive degree-corr --ordinal-source experimental
60
+ ownbaseline check ... # identical
61
+ ```
62
+
63
+ Import the real package in scripts:
64
+
65
+ ```python
66
+ from own_baseline import conditional_skill_report
67
+ ```
68
+
69
+ ## What the tool does
70
+
71
+ A potency score is supposed to order single cells by developmental potential.
72
+ Most published scores are built on a low-order primitive of the same expression
73
+ matrix: the number of genes detected, the correlation of a cell's profile with
74
+ network node degree, the Shannon entropy of the profile, the library size.
75
+ `own-baseline` asks whether the score orders a held-out ordinal any better than
76
+ that primitive does on its own. It rank-residualizes the score on its
77
+ author-declared primitive, takes Kendall's tau_b against the ordinal, and
78
+ compares the result against a measured floor from a 200-seed null grid indexed
79
+ by sample size, rank correlation, kernel and covariate count. The floor table
80
+ ships inside the wheel, so the answer does not depend on a network call.
81
+
82
+ Four verbs: `check`, `floors`, `primitives`, `verify`.
83
+
84
+ ## Where the code lives
85
+
86
+ Source, tests, the null grid and the documentation are in the `own-baseline`
87
+ repository. This distribution is 60 lines of forwarding.
88
+
89
+ MIT licensed.
@@ -0,0 +1,41 @@
1
+ # iskakov
2
+
3
+ `pip install iskakov` installs [`own-baseline`](https://pypi.org/project/own-baseline/)
4
+ and gives you its command line under a second name. The two names run the same
5
+ program:
6
+
7
+ ```bash
8
+ pip install iskakov
9
+
10
+ iskakov check cells.h5ad --score obs:ccat --ordinal obs:stage \
11
+ --primitive degree-corr --ordinal-source experimental
12
+ ownbaseline check ... # identical
13
+ ```
14
+
15
+ Import the real package in scripts:
16
+
17
+ ```python
18
+ from own_baseline import conditional_skill_report
19
+ ```
20
+
21
+ ## What the tool does
22
+
23
+ A potency score is supposed to order single cells by developmental potential.
24
+ Most published scores are built on a low-order primitive of the same expression
25
+ matrix: the number of genes detected, the correlation of a cell's profile with
26
+ network node degree, the Shannon entropy of the profile, the library size.
27
+ `own-baseline` asks whether the score orders a held-out ordinal any better than
28
+ that primitive does on its own. It rank-residualizes the score on its
29
+ author-declared primitive, takes Kendall's tau_b against the ordinal, and
30
+ compares the result against a measured floor from a 200-seed null grid indexed
31
+ by sample size, rank correlation, kernel and covariate count. The floor table
32
+ ships inside the wheel, so the answer does not depend on a network call.
33
+
34
+ Four verbs: `check`, `floors`, `primitives`, `verify`.
35
+
36
+ ## Where the code lives
37
+
38
+ Source, tests, the null grid and the documentation are in the `own-baseline`
39
+ repository. This distribution is 60 lines of forwarding.
40
+
41
+ MIT licensed.
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.4
2
+ Name: iskakov
3
+ Version: 0.2.0
4
+ Summary: Alias for own-baseline: does a single-cell potency score add anything beyond its own low-order primitive?
5
+ Author: Damir Iskakov
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Damir Iskakov
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://iskakov.dev/ownbaseline
29
+ Project-URL: Repository, https://github.com/IskakovDamir/ownbaseline
30
+ Project-URL: Issues, https://github.com/IskakovDamir/ownbaseline/issues
31
+ Keywords: single-cell,scRNA-seq,potency,stemness,benchmarking,incremental-validity,null-calibration,CytoTRACE,SCENT
32
+ Classifier: Development Status :: 4 - Beta
33
+ Classifier: Environment :: Console
34
+ Classifier: Intended Audience :: Science/Research
35
+ Classifier: License :: OSI Approved :: MIT License
36
+ Classifier: Operating System :: OS Independent
37
+ Classifier: Programming Language :: Python :: 3
38
+ Classifier: Programming Language :: Python :: 3.10
39
+ Classifier: Programming Language :: Python :: 3.11
40
+ Classifier: Programming Language :: Python :: 3.12
41
+ Classifier: Programming Language :: Python :: 3.13
42
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
43
+ Requires-Python: >=3.10
44
+ Description-Content-Type: text/markdown
45
+ License-File: LICENSE
46
+ Requires-Dist: own-baseline>=0.2.0
47
+ Dynamic: license-file
48
+
49
+ # iskakov
50
+
51
+ `pip install iskakov` installs [`own-baseline`](https://pypi.org/project/own-baseline/)
52
+ and gives you its command line under a second name. The two names run the same
53
+ program:
54
+
55
+ ```bash
56
+ pip install iskakov
57
+
58
+ iskakov check cells.h5ad --score obs:ccat --ordinal obs:stage \
59
+ --primitive degree-corr --ordinal-source experimental
60
+ ownbaseline check ... # identical
61
+ ```
62
+
63
+ Import the real package in scripts:
64
+
65
+ ```python
66
+ from own_baseline import conditional_skill_report
67
+ ```
68
+
69
+ ## What the tool does
70
+
71
+ A potency score is supposed to order single cells by developmental potential.
72
+ Most published scores are built on a low-order primitive of the same expression
73
+ matrix: the number of genes detected, the correlation of a cell's profile with
74
+ network node degree, the Shannon entropy of the profile, the library size.
75
+ `own-baseline` asks whether the score orders a held-out ordinal any better than
76
+ that primitive does on its own. It rank-residualizes the score on its
77
+ author-declared primitive, takes Kendall's tau_b against the ordinal, and
78
+ compares the result against a measured floor from a 200-seed null grid indexed
79
+ by sample size, rank correlation, kernel and covariate count. The floor table
80
+ ships inside the wheel, so the answer does not depend on a network call.
81
+
82
+ Four verbs: `check`, `floors`, `primitives`, `verify`.
83
+
84
+ ## Where the code lives
85
+
86
+ Source, tests, the null grid and the documentation are in the `own-baseline`
87
+ repository. This distribution is 60 lines of forwarding.
88
+
89
+ MIT licensed.
@@ -0,0 +1,11 @@
1
+ LICENSE
2
+ README.md
3
+ iskakov.py
4
+ pyproject.toml
5
+ iskakov.egg-info/PKG-INFO
6
+ iskakov.egg-info/SOURCES.txt
7
+ iskakov.egg-info/dependency_links.txt
8
+ iskakov.egg-info/entry_points.txt
9
+ iskakov.egg-info/requires.txt
10
+ iskakov.egg-info/top_level.txt
11
+ tests/test_alias.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ iskakov = iskakov:main
@@ -0,0 +1 @@
1
+ own-baseline>=0.2.0
@@ -0,0 +1 @@
1
+ iskakov
@@ -0,0 +1,32 @@
1
+ """``pip install iskakov`` installs the own-baseline diagnostic.
2
+
3
+ This distribution carries no analysis code. It depends on ``own-baseline`` and
4
+ re-exports that package's command line under a second name, so ``iskakov`` and
5
+ ``ownbaseline`` are the same program. In scripts, import the real package:
6
+
7
+ from own_baseline import conditional_skill_report
8
+
9
+ This module exists for the console entry point.
10
+ """
11
+ from __future__ import annotations
12
+
13
+ __version__ = "0.2.0"
14
+
15
+ _MISSING = (
16
+ "iskakov is an alias for own-baseline, and own-baseline is not installed "
17
+ "in this environment.\n"
18
+ " pip install own-baseline"
19
+ )
20
+
21
+
22
+ def main() -> int:
23
+ """Run the own-baseline command line."""
24
+ try:
25
+ from own_baseline.cli import main as _main
26
+ except ImportError:
27
+ raise SystemExit(_MISSING)
28
+ return _main()
29
+
30
+
31
+ if __name__ == "__main__":
32
+ raise SystemExit(main())
@@ -0,0 +1,39 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "iskakov"
7
+ version = "0.2.0"
8
+ description = "Alias for own-baseline: does a single-cell potency score add anything beyond its own low-order primitive?"
9
+ readme = "README.md"
10
+ license = { file = "LICENSE" }
11
+ requires-python = ">=3.10"
12
+ authors = [{ name = "Damir Iskakov" }]
13
+ keywords = ["single-cell", "scRNA-seq", "potency", "stemness", "benchmarking",
14
+ "incremental-validity", "null-calibration", "CytoTRACE", "SCENT"]
15
+ classifiers = [
16
+ "Development Status :: 4 - Beta",
17
+ "Environment :: Console",
18
+ "Intended Audience :: Science/Research",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Operating System :: OS Independent",
21
+ "Programming Language :: Python :: 3",
22
+ "Programming Language :: Python :: 3.10",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Topic :: Scientific/Engineering :: Bio-Informatics",
27
+ ]
28
+ dependencies = ["own-baseline>=0.2.0"]
29
+
30
+ [project.scripts]
31
+ iskakov = "iskakov:main"
32
+
33
+ [project.urls]
34
+ Homepage = "https://iskakov.dev/ownbaseline"
35
+ Repository = "https://github.com/IskakovDamir/ownbaseline"
36
+ Issues = "https://github.com/IskakovDamir/ownbaseline/issues"
37
+
38
+ [tool.setuptools]
39
+ py-modules = ["iskakov"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,51 @@
1
+ """The alias has one job: hand the own-baseline command line a second name.
2
+
3
+ Two things can break it. The dependency can go missing, in which case the user
4
+ should see one sentence and not a traceback. And the forwarded entry point can
5
+ drift from what own-baseline actually exposes, which is what happens when the
6
+ real package renames its main.
7
+ """
8
+ import subprocess
9
+ import sys
10
+ from importlib.metadata import entry_points
11
+
12
+ import iskakov
13
+
14
+
15
+ def test_module_is_not_a_package():
16
+ """A module-level __getattr__ that forwards to own_baseline answers __path__
17
+ as well, and Python then treats this module as a package rooted in someone
18
+ else's directory. It cost a broken console script once; keep it flat."""
19
+ assert not hasattr(iskakov, "__path__")
20
+
21
+
22
+ def test_console_script_is_declared():
23
+ scripts = {e.name: e.value for e in entry_points(group="console_scripts")}
24
+ assert scripts.get("iskakov") == "iskakov:main"
25
+
26
+
27
+ def test_forwards_to_own_baseline():
28
+ from own_baseline.cli import main as real
29
+ assert iskakov.main.__module__ == "iskakov"
30
+ r = subprocess.run([sys.executable, "-c",
31
+ "import iskakov, sys; sys.argv=['iskakov','floors',"
32
+ "'--n','39505','--rho','0.4844','--no-color']; "
33
+ "raise SystemExit(iskakov.main())"],
34
+ capture_output=True, text=True)
35
+ assert r.returncode == 0, r.stderr
36
+ assert "+0.0247" in r.stdout, r.stdout
37
+ assert callable(real)
38
+
39
+
40
+ def test_missing_dependency_gives_a_sentence(tmp_path):
41
+ """Blocking own_baseline should produce the install line, not a traceback."""
42
+ blocker = tmp_path / "own_baseline.py"
43
+ blocker.write_text("raise ImportError('blocked for the test')\n")
44
+ r = subprocess.run([sys.executable, "-c",
45
+ "import iskakov; raise SystemExit(iskakov.main())"],
46
+ capture_output=True, text=True,
47
+ env={**dict(__import__("os").environ),
48
+ "PYTHONPATH": str(tmp_path)})
49
+ assert r.returncode == 1
50
+ assert "pip install own-baseline" in r.stderr
51
+ assert "Traceback" not in r.stderr