CytoTable 0.0.6__tar.gz → 0.0.7__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: CytoTable
3
- Version: 0.0.6
3
+ Version: 0.0.7
4
4
  Summary: Transform CellProfiler and DeepProfiler data for processing image-based profiling readouts with Pycytominer and other Cytomining tools.
5
5
  Home-page: https://github.com/cytomining/CytoTable
6
6
  License: BSD-3-Clause License
@@ -14,10 +14,14 @@ Classifier: Programming Language :: Python :: 3.9
14
14
  Classifier: Programming Language :: Python :: 3.10
15
15
  Classifier: Programming Language :: Python :: 3.11
16
16
  Classifier: Programming Language :: Python :: 3.12
17
- Requires-Dist: cloudpathlib[all] (>=0.15.0,<0.16.0)
18
- Requires-Dist: duckdb (>=0.8.0,<0.10.0)
17
+ Requires-Dist: cloudpathlib[all] (>=0.18.0,<0.19.0)
18
+ Requires-Dist: duckdb (>=0.10.1)
19
+ Requires-Dist: numpy (<=1.24.4) ; python_version < "3.12"
20
+ Requires-Dist: numpy (>=1.26.0) ; python_version >= "3.12"
19
21
  Requires-Dist: parsl (>=2023.9.25)
20
22
  Requires-Dist: pyarrow (>=13.0.0)
23
+ Requires-Dist: scipy (<1.12.0) ; python_version < "3.9"
24
+ Requires-Dist: scipy (>=1.12.0,<2.0.0) ; python_version >= "3.9"
21
25
  Project-URL: Documentation, https://cytomining.github.io/CytoTable/
22
26
  Project-URL: Repository, https://github.com/cytomining/CytoTable
23
27
  Description-Content-Type: text/markdown
@@ -3,7 +3,7 @@ __init__.py for cytotable
3
3
  """
4
4
 
5
5
  # note: version data is maintained by poetry-dynamic-versioning (do not edit)
6
- __version__ = "0.0.6"
6
+ __version__ = "0.0.7"
7
7
 
8
8
  from .convert import convert
9
9
  from .exceptions import (
@@ -348,6 +348,8 @@ def _source_chunk_to_parquet(
348
348
  table=ddb_reader.execute(
349
349
  f"""
350
350
  {base_query}
351
+ /* order by all columns for deterministic output */
352
+ ORDER BY ALL
351
353
  LIMIT {chunk_size} OFFSET {offset}
352
354
  """
353
355
  ).arrow(),
@@ -750,6 +752,7 @@ def _join_source_chunk(
750
752
  result = ddb_reader.execute(
751
753
  f"""
752
754
  {joins}
755
+ {"ORDER BY ALL" if "ORDER BY" not in joins.upper() else ""}
753
756
  LIMIT {chunk_size} OFFSET {offset}
754
757
  """
755
758
  ).arrow()
@@ -39,15 +39,15 @@ config = {
39
39
  SELECT
40
40
  *
41
41
  FROM
42
- Image_Filtered AS image
43
- LEFT JOIN read_parquet('cytoplasm.parquet') AS cytoplasm ON
44
- cytoplasm.Metadata_ImageNumber = image.Metadata_ImageNumber
42
+ read_parquet('cytoplasm.parquet') AS cytoplasm
45
43
  LEFT JOIN read_parquet('cells.parquet') AS cells ON
46
44
  cells.Metadata_ImageNumber = cytoplasm.Metadata_ImageNumber
47
45
  AND cells.Metadata_ObjectNumber = cytoplasm.Metadata_Cytoplasm_Parent_Cells
48
46
  LEFT JOIN read_parquet('nuclei.parquet') AS nuclei ON
49
47
  nuclei.Metadata_ImageNumber = cytoplasm.Metadata_ImageNumber
50
48
  AND nuclei.Metadata_ObjectNumber = cytoplasm.Metadata_Cytoplasm_Parent_Nuclei
49
+ LEFT JOIN Image_Filtered AS image ON
50
+ image.Metadata_ImageNumber = cytoplasm.Metadata_ImageNumber
51
51
  """,
52
52
  },
53
53
  "cellprofiler_sqlite": {
@@ -85,15 +85,15 @@ config = {
85
85
  SELECT
86
86
  *
87
87
  FROM
88
- Per_Image_Filtered AS per_image
89
- LEFT JOIN read_parquet('per_cytoplasm.parquet') AS per_cytoplasm ON
90
- per_cytoplasm.Metadata_ImageNumber = per_image.Metadata_ImageNumber
88
+ read_parquet('per_cytoplasm.parquet') AS per_cytoplasm
91
89
  LEFT JOIN read_parquet('per_cells.parquet') AS per_cells ON
92
90
  per_cells.Metadata_ImageNumber = per_cytoplasm.Metadata_ImageNumber
93
91
  AND per_cells.Cells_Number_Object_Number = per_cytoplasm.Cytoplasm_Parent_Cells
94
92
  LEFT JOIN read_parquet('per_nuclei.parquet') AS per_nuclei ON
95
93
  per_nuclei.Metadata_ImageNumber = per_cytoplasm.Metadata_ImageNumber
96
94
  AND per_nuclei.Nuclei_Number_Object_Number = per_cytoplasm.Cytoplasm_Parent_Nuclei
95
+ LEFT JOIN Per_Image_Filtered AS per_image ON
96
+ per_image.Metadata_ImageNumber = per_cytoplasm.Metadata_ImageNumber
97
97
  """,
98
98
  },
99
99
  "cellprofiler_sqlite_pycytominer": {
@@ -136,15 +136,15 @@ config = {
136
136
  SELECT
137
137
  *
138
138
  FROM
139
- Per_Image_Filtered AS per_image
140
- LEFT JOIN read_parquet('per_cytoplasm.parquet') AS per_cytoplasm ON
141
- per_cytoplasm.Metadata_ImageNumber = per_image.Metadata_ImageNumber
139
+ read_parquet('per_cytoplasm.parquet') AS per_cytoplasm
142
140
  LEFT JOIN read_parquet('per_cells.parquet') AS per_cells ON
143
141
  per_cells.Metadata_ImageNumber = per_cytoplasm.Metadata_ImageNumber
144
142
  AND per_cells.Metadata_Cells_Number_Object_Number = per_cytoplasm.Metadata_Cytoplasm_Parent_Cells
145
143
  LEFT JOIN read_parquet('per_nuclei.parquet') AS per_nuclei ON
146
144
  per_nuclei.Metadata_ImageNumber = per_cytoplasm.Metadata_ImageNumber
147
145
  AND per_nuclei.Metadata_Nuclei_Number_Object_Number = per_cytoplasm.Metadata_Cytoplasm_Parent_Nuclei
146
+ LEFT JOIN Per_Image_Filtered AS per_image ON
147
+ per_image.Metadata_ImageNumber = per_cytoplasm.Metadata_ImageNumber
148
148
  """,
149
149
  },
150
150
  "cell-health-cellprofiler-to-cytominer-database": {
@@ -190,10 +190,7 @@ config = {
190
190
  SELECT
191
191
  *
192
192
  FROM
193
- Image_Filtered AS image
194
- LEFT JOIN read_parquet('cytoplasm.parquet') AS cytoplasm ON
195
- cytoplasm.Metadata_TableNumber = image.Metadata_TableNumber
196
- AND cytoplasm.Metadata_ImageNumber = image.Metadata_ImageNumber
193
+ read_parquet('cytoplasm.parquet') AS cytoplasm
197
194
  LEFT JOIN read_parquet('cells.parquet') AS cells ON
198
195
  cells.Metadata_TableNumber = cytoplasm.Metadata_TableNumber
199
196
  AND cells.Metadata_ImageNumber = cytoplasm.Metadata_ImageNumber
@@ -202,6 +199,9 @@ config = {
202
199
  nuclei.Metadata_TableNumber = cytoplasm.Metadata_TableNumber
203
200
  AND nuclei.Metadata_ImageNumber = cytoplasm.Metadata_ImageNumber
204
201
  AND nuclei.Nuclei_ObjectNumber = cytoplasm.Metadata_Cytoplasm_Parent_Nuclei
202
+ LEFT JOIN Image_Filtered AS image ON
203
+ image.Metadata_TableNumber = cytoplasm.Metadata_TableNumber
204
+ AND image.Metadata_ImageNumber = cytoplasm.Metadata_ImageNumber
205
205
  """,
206
206
  },
207
207
  "in-carta": {
@@ -257,7 +257,12 @@ def _sqlite_mixed_type_query_to_parquet(
257
257
 
258
258
  # perform the select using the cases built above and using chunksize + offset
259
259
  cursor.execute(
260
- f'SELECT {", ".join(query_parts)} FROM {table_name} LIMIT {chunk_size} OFFSET {offset};'
260
+ f"""
261
+ SELECT {', '.join(query_parts)}
262
+ FROM {table_name}
263
+ ORDER BY {', '.join([col['column_name'] for col in column_info])}
264
+ LIMIT {chunk_size} OFFSET {offset};
265
+ """
261
266
  )
262
267
  # collect the results and include the column name with values
263
268
  results = [
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
  name = "CytoTable"
3
3
  # note: version data is maintained by poetry-dynamic-versioning (do not edit)
4
- version = "0.0.6"
4
+ version = "0.0.7"
5
5
  description = "Transform CellProfiler and DeepProfiler data for processing image-based profiling readouts with Pycytominer and other Cytomining tools."
6
6
  authors = ["Cytomining Community"]
7
7
  license = "BSD-3-Clause License"
@@ -25,9 +25,17 @@ build-backend = "poetry_dynamic_versioning.backend"
25
25
  [tool.poetry.dependencies]
26
26
  python = ">=3.8,<3.13"
27
27
  pyarrow = ">=13.0.0"
28
- cloudpathlib = {extras = ["all"], version = "^0.15.0"}
29
- duckdb = ">=0.8.0,<0.10.0"
28
+ cloudpathlib = {extras = ["all"], version = "^0.18.0"}
29
+ duckdb = ">=0.8.0,!=0.10.0,>=0.10.1"
30
30
  parsl = ">=2023.9.25"
31
+ numpy = [
32
+ {version = "<=1.24.4", python = "<3.12"},
33
+ {version = ">=1.26.0", python = ">=3.12"}
34
+ ]
35
+ scipy = [
36
+ {version = "<1.12.0", python = "<3.9"},
37
+ {version = "^1.12.0", python = ">=3.9"}
38
+ ]
31
39
 
32
40
  [tool.poetry.group.dev.dependencies]
33
41
  pytest = "^7.4.0"
File without changes
File without changes