ScreenPro2 0.5.0__tar.gz → 0.6.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.
Files changed (25) hide show
  1. {screenpro2-0.5.0 → screenpro2-0.6.1}/LICENSE +1 -1
  2. {screenpro2-0.5.0 → screenpro2-0.6.1}/PKG-INFO +8 -5
  3. {screenpro2-0.5.0 → screenpro2-0.6.1}/README.md +2 -1
  4. {screenpro2-0.5.0 → screenpro2-0.6.1}/pyproject.toml +8 -3
  5. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/__init__.py +18 -0
  6. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/assays/__init__.py +2 -2
  7. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/ngs/cas9.py +9 -10
  8. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/__main__.py +0 -0
  9. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/dashboard/__init__.py +0 -0
  10. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/load.py +0 -0
  11. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/main.py +0 -0
  12. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/ngs/__init__.py +0 -0
  13. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/ngs/cas12.py +0 -0
  14. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/phenoscore/__init__.py +0 -0
  15. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/phenoscore/_annotate.py +0 -0
  16. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/phenoscore/delta.py +0 -0
  17. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/phenoscore/deseq.py +0 -0
  18. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/phenoscore/evaluate.py +0 -0
  19. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/phenoscore/phenostat.py +0 -0
  20. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/plotting/__init__.py +0 -0
  21. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/plotting/_rank.py +0 -0
  22. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/plotting/_utils.py +0 -0
  23. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/plotting/pheno_plots.py +0 -0
  24. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/plotting/qc_plots.py +0 -0
  25. {screenpro2-0.5.0 → screenpro2-0.6.1}/screenpro/preprocessing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022-2024 ScreenPro2 Development Team.
3
+ Copyright (c) 2022-2026 ScreenPro2 Development Team.
4
4
  All rights reserved.
5
5
  Gilbart Lab, UCSF / Arc Institute.
6
6
  Multi-Omics Tech Center, Arc Insititue.
@@ -1,11 +1,12 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: ScreenPro2
3
- Version: 0.5.0
3
+ Version: 0.6.1
4
4
  Summary: Flexible analysis of high-content CRISPR screening
5
5
  License: MIT
6
+ License-File: LICENSE
6
7
  Keywords: CRISPR,screening,bioinformatics
7
- Author: Abe Arab
8
- Author-email: abea@arcinstitute.org
8
+ Author: Abolfazl Arab
9
+ Author-email: abolfazl.arab@ucsf.edu
9
10
  Requires-Python: >=3.9
10
11
  Classifier: License :: OSI Approved :: MIT License
11
12
  Classifier: Programming Language :: Python :: 3
@@ -14,16 +15,18 @@ Classifier: Programming Language :: Python :: 3.10
14
15
  Classifier: Programming Language :: Python :: 3.11
15
16
  Classifier: Programming Language :: Python :: 3.12
16
17
  Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Programming Language :: Python :: 3.14
17
19
  Project-URL: Homepage, https://github.com/ArcInstitute/ScreenPro2
18
20
  Project-URL: Repository, https://github.com/ArcInstitute/ScreenPro2
19
21
  Description-Content-Type: text/markdown
20
22
 
21
23
  [![website](https://img.shields.io/badge/website-live-brightgreen)](https://arcinstitute.org/tools/screenpro2)
24
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18807934.svg)](https://doi.org/10.5281/zenodo.18807934)
22
25
  [![PyPI version](https://badge.fury.io/py/ScreenPro2.svg)](https://badge.fury.io/py/ScreenPro2)
23
26
  [![Documentation Status](https://readthedocs.org/projects/screenpro2/badge/?version=latest)](https://screenpro2.readthedocs.io/en/latest/?version=latest)
24
27
  [![Downloads](https://static.pepy.tech/badge/screenpro2)](https://pepy.tech/project/screenpro2)
25
28
  [![Downloads](https://static.pepy.tech/badge/screenpro2/month)](https://pepy.tech/project/screenpro2)
26
- [![CodeQL](https://github.com/ArcInstitute/ScreenPro2/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/ArcInstitute/ScreenPro2/actions/workflows/github-code-scanning/codeql)
29
+
27
30
  # ScreenPro2
28
31
 
29
32
  ## Introduction
@@ -1,9 +1,10 @@
1
1
  [![website](https://img.shields.io/badge/website-live-brightgreen)](https://arcinstitute.org/tools/screenpro2)
2
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18807934.svg)](https://doi.org/10.5281/zenodo.18807934)
2
3
  [![PyPI version](https://badge.fury.io/py/ScreenPro2.svg)](https://badge.fury.io/py/ScreenPro2)
3
4
  [![Documentation Status](https://readthedocs.org/projects/screenpro2/badge/?version=latest)](https://screenpro2.readthedocs.io/en/latest/?version=latest)
4
5
  [![Downloads](https://static.pepy.tech/badge/screenpro2)](https://pepy.tech/project/screenpro2)
5
6
  [![Downloads](https://static.pepy.tech/badge/screenpro2/month)](https://pepy.tech/project/screenpro2)
6
- [![CodeQL](https://github.com/ArcInstitute/ScreenPro2/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/ArcInstitute/ScreenPro2/actions/workflows/github-code-scanning/codeql)
7
+
7
8
  # ScreenPro2
8
9
 
9
10
  ## Introduction
@@ -1,9 +1,10 @@
1
1
  [tool.poetry]
2
2
  name = "ScreenPro2"
3
- version = "0.5.0"
4
3
  description = "Flexible analysis of high-content CRISPR screening"
4
+ version = "0.6.1"
5
5
  authors = [
6
- "Abe Arab <abea@arcinstitute.org>"
6
+ "Abolfazl Arab <abolfazl.arab@ucsf.edu>",
7
+ "Nick Youngblut <nick.youngblut@arcinstitute.org>",
7
8
  ]
8
9
  license = "MIT"
9
10
  readme = "README.md"
@@ -14,6 +15,7 @@ packages = [
14
15
  { include = "screenpro" },
15
16
  { include = "pyproject.toml" },
16
17
  ]
18
+ dynamic = ["version"]
17
19
 
18
20
  [tool.poetry.dependencies]
19
21
  python = ">=3.9"
@@ -25,6 +27,9 @@ screenpro = "screenpro.main:main"
25
27
  pytest = "*"
26
28
  tomli = "*"
27
29
 
30
+ [tool.poetry-dynamic-versioning]
31
+ enable = true
32
+
28
33
  [build-system]
29
34
  requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"]
30
- build-backend = "poetry_dynamic_versioning.backend"
35
+ build-backend = "poetry.core.masonry.api"
@@ -29,3 +29,21 @@ from . import dashboard
29
29
  from .ngs import GuideCounter
30
30
  from .assays import PooledScreens, GImaps
31
31
  from .dashboard import DrugScreenDashboard
32
+
33
+
34
+ def _get_version():
35
+
36
+ import os
37
+
38
+ pyproject_path = os.path.join(os.path.dirname(__file__), "..", "pyproject.toml")
39
+
40
+ with open(pyproject_path, "r") as pyproject_file:
41
+ for line in pyproject_file.readlines():
42
+ if "version" in line:
43
+ return line.split("=")[1].strip().strip('"')
44
+
45
+
46
+ try:
47
+ __version__ = _get_version()
48
+ except Exception:
49
+ __version__ = "Unknown"
@@ -71,8 +71,8 @@ class PooledScreens(object):
71
71
  growth_factors = []
72
72
  # calculate growth factor for gamma, tau, or rho score per replicates
73
73
  for replicate in adat.obs.replicate.unique():
74
- db_untreated = adat.obs.query(f'condition == "{untreated}" & replicate == {str(replicate)}')[db_rate_col][0]
75
- db_treated = adat.obs.query(f'condition == "{treated}" & replicate == {str(replicate)}')[db_rate_col][0]
74
+ db_untreated = adat.obs.query(f'condition == "{untreated}" & replicate == {str(replicate)}')[db_rate_col].iloc[0]
75
+ db_treated = adat.obs.query(f'condition == "{treated}" & replicate == {str(replicate)}')[db_rate_col].iloc[0]
76
76
 
77
77
  growth_factors.append(('gamma', db_untreated, replicate, f'gamma_replicate_{replicate}'))
78
78
  growth_factors.append(('tau', db_treated, replicate, f'tau_replicate_{replicate}'))
@@ -154,10 +154,9 @@ def map_to_library_single_guide(df_count, library, return_type='all', verbose=Fa
154
154
  )
155
155
 
156
156
  if verbose:
157
- print("% mapped reads",
158
- 100 * \
159
- res_map.to_pandas()['count'].fillna(0).sum() / \
160
- int(res.select(pl.sum("count")).to_pandas()['count'])
157
+ print(
158
+ "% mapped reads",
159
+ 100 * res_map['count'].sum() / res["count"].sum()
161
160
  )
162
161
 
163
162
  if return_type == 'unmapped':
@@ -221,8 +220,8 @@ def map_to_library_dual_guide(df_count, library, get_recombinant=False, return_t
221
220
  if verbose:
222
221
  print("% mapped reads",
223
222
  100 * \
224
- res_map.to_pandas()['count'].fillna(0).sum() / \
225
- int(res.select(pl.sum("count")).to_pandas()['count'])
223
+ res_map['count'].sum() / \
224
+ res["count"].sum()
226
225
  )
227
226
 
228
227
  if get_recombinant:
@@ -230,8 +229,8 @@ def map_to_library_dual_guide(df_count, library, get_recombinant=False, return_t
230
229
  if verbose:
231
230
  print("% unmapped reads",
232
231
  100 * \
233
- res_unmap.to_pandas()['count'].fillna(0).sum() / \
234
- int(res.select(pl.sum("count")).to_pandas()['count'])
232
+ res_unmap['count'].sum() / \
233
+ res["count"].sum()
235
234
  )
236
235
 
237
236
  sgRNA_table = pd.concat([
@@ -253,8 +252,8 @@ def map_to_library_dual_guide(df_count, library, get_recombinant=False, return_t
253
252
  if verbose:
254
253
  print("% fully remapped recombination events",
255
254
  100 * \
256
- res_recomb_events.drop_nulls().to_pandas()['count'].fillna(0).sum() / \
257
- int(res.select(pl.sum("count")).to_pandas()['count'])
255
+ res_recomb_events.drop_nulls()['count'].sum() / \
256
+ res['count'].sum()
258
257
  )
259
258
 
260
259
  if return_type == 'unmapped':
File without changes
File without changes