From cd3c8f306401e069b5e70b384fef79408610ee13 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Sun, 26 Jun 2022 14:25:52 -0400 Subject: [PATCH 1/2] disallow duplicates --- apis/python/src/tiledbsc/annotation_matrix.py | 2 +- apis/python/src/tiledbsc/assay_matrix.py | 2 +- apis/python/src/tiledbsc/uns_array.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apis/python/src/tiledbsc/annotation_matrix.py b/apis/python/src/tiledbsc/annotation_matrix.py index fdee87d33f..6f8b5bcb89 100644 --- a/apis/python/src/tiledbsc/annotation_matrix.py +++ b/apis/python/src/tiledbsc/annotation_matrix.py @@ -174,7 +174,7 @@ def _create_empty_array(self, matrix_dtypes, attr_names) -> None: domain=dom, attrs=attrs, sparse=True, - allows_duplicates=True, + allows_duplicates=False, offsets_filters=[ tiledb.DoubleDeltaFilter(), tiledb.BitWidthReductionFilter(), diff --git a/apis/python/src/tiledbsc/assay_matrix.py b/apis/python/src/tiledbsc/assay_matrix.py index eccdacefeb..260f6ea1a0 100644 --- a/apis/python/src/tiledbsc/assay_matrix.py +++ b/apis/python/src/tiledbsc/assay_matrix.py @@ -212,7 +212,7 @@ def _create_empty_array(self, matrix_dtype: np.dtype) -> None: domain=dom, attrs=(att,), sparse=True, - allows_duplicates=True, + allows_duplicates=False, offsets_filters=[ tiledb.DoubleDeltaFilter(), tiledb.BitWidthReductionFilter(), diff --git a/apis/python/src/tiledbsc/uns_array.py b/apis/python/src/tiledbsc/uns_array.py index 838f07176a..961d5014a8 100644 --- a/apis/python/src/tiledbsc/uns_array.py +++ b/apis/python/src/tiledbsc/uns_array.py @@ -169,7 +169,7 @@ def create_empty_array_for_csr( domain=dom, attrs=(att,), sparse=True, - allows_duplicates=True, + allows_duplicates=False, offsets_filters=[ tiledb.DoubleDeltaFilter(), tiledb.BitWidthReductionFilter(), From c49fcaf62955b2900e35f6f7553768d8dcaf3df4 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Mon, 27 Jun 2022 20:32:47 -0400 Subject: [PATCH 2/2] parameterize allows_duplicates within soma_options --- apis/python/src/tiledbsc/annotation_dataframe.py | 2 +- apis/python/src/tiledbsc/annotation_matrix.py | 2 +- apis/python/src/tiledbsc/assay_matrix.py | 2 +- apis/python/src/tiledbsc/soma_options.py | 3 +++ apis/python/src/tiledbsc/uns_array.py | 4 ++-- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/apis/python/src/tiledbsc/annotation_dataframe.py b/apis/python/src/tiledbsc/annotation_dataframe.py index 5f8ff302f4..5ce2cc8f5d 100644 --- a/apis/python/src/tiledbsc/annotation_dataframe.py +++ b/apis/python/src/tiledbsc/annotation_dataframe.py @@ -273,7 +273,7 @@ def from_dataframe(self, dataframe: pd.DataFrame, extent: int = 2048) -> None: dataframe=dataframe, name=self.name, sparse=True, - allows_duplicates=False, + allows_duplicates=self._soma_options.allows_duplicates, offsets_filters=offsets_filters, attr_filters=attr_filters, dim_filters=dim_filters, diff --git a/apis/python/src/tiledbsc/annotation_matrix.py b/apis/python/src/tiledbsc/annotation_matrix.py index 6f8b5bcb89..e1b3667485 100644 --- a/apis/python/src/tiledbsc/annotation_matrix.py +++ b/apis/python/src/tiledbsc/annotation_matrix.py @@ -174,7 +174,7 @@ def _create_empty_array(self, matrix_dtypes, attr_names) -> None: domain=dom, attrs=attrs, sparse=True, - allows_duplicates=False, + allows_duplicates=self._soma_options.allows_duplicates, offsets_filters=[ tiledb.DoubleDeltaFilter(), tiledb.BitWidthReductionFilter(), diff --git a/apis/python/src/tiledbsc/assay_matrix.py b/apis/python/src/tiledbsc/assay_matrix.py index 260f6ea1a0..5756cc7fff 100644 --- a/apis/python/src/tiledbsc/assay_matrix.py +++ b/apis/python/src/tiledbsc/assay_matrix.py @@ -212,7 +212,7 @@ def _create_empty_array(self, matrix_dtype: np.dtype) -> None: domain=dom, attrs=(att,), sparse=True, - allows_duplicates=False, + allows_duplicates=self._soma_options.allows_duplicates, offsets_filters=[ tiledb.DoubleDeltaFilter(), tiledb.BitWidthReductionFilter(), diff --git a/apis/python/src/tiledbsc/soma_options.py b/apis/python/src/tiledbsc/soma_options.py index 6649fbbd26..8362fd57bf 100644 --- a/apis/python/src/tiledbsc/soma_options.py +++ b/apis/python/src/tiledbsc/soma_options.py @@ -15,6 +15,7 @@ class SOMAOptions: write_X_chunked: bool goal_chunk_nnz: int member_uris_are_relative: bool + allows_duplicates: bool def __init__( self, @@ -27,6 +28,7 @@ def __init__( write_X_chunked=True, goal_chunk_nnz=20_000_000, member_uris_are_relative=None, # Allows relocatability for local disk / S3, and correct behavior for TileDB Cloud + allows_duplicates=False, ): self.obs_extent = obs_extent self.var_extent = var_extent @@ -37,3 +39,4 @@ def __init__( self.write_X_chunked = write_X_chunked self.goal_chunk_nnz = goal_chunk_nnz self.member_uris_are_relative = member_uris_are_relative + self.allows_duplicates = allows_duplicates diff --git a/apis/python/src/tiledbsc/uns_array.py b/apis/python/src/tiledbsc/uns_array.py index 961d5014a8..909cae765f 100644 --- a/apis/python/src/tiledbsc/uns_array.py +++ b/apis/python/src/tiledbsc/uns_array.py @@ -42,7 +42,7 @@ def from_pandas_dataframe(self, df: pd.DataFrame) -> None: uri=self.uri, dataframe=df, sparse=True, - allows_duplicates=False, + allows_duplicates=self._soma_options.allows_duplicates, ctx=self._ctx, ) @@ -169,7 +169,7 @@ def create_empty_array_for_csr( domain=dom, attrs=(att,), sparse=True, - allows_duplicates=False, + allows_duplicates=self._soma_options.allows_duplicates, offsets_filters=[ tiledb.DoubleDeltaFilter(), tiledb.BitWidthReductionFilter(),