TypeError: Invalid value '[70 68 64 61 55 55 54 45 45 41 38 37 35 35 25 19 19 16 10 3 3 2]' for dtype 'int32'
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/pandas/core/indexing.py:2144, in _iLocIndexer._setitem_single_column(self, loc, value, plane_indexer)
2143 try:
-> 2144 self.obj._mgr.column_setitem(
2145 loc, plane_indexer, value, inplace_only=True
2146 )
2147 except (ValueError, TypeError, LossySetitemError) as exc:
2148 # If we're setting an entire column and we can't do it inplace,
2149 # then we can use value's dtype (or inferred dtype)
2150 # instead of object
Hide Traceback
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/pandas/core/internals/managers.py:1518, in BlockManager.column_setitem(self, loc, idx, value, inplace_only)
1517 if inplace_only:
-> 1518 col_mgr.setitem_inplace(idx, value)
1519 else:
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/pandas/core/internals/managers.py:2220, in SingleBlockManager.setitem_inplace(self, indexer, value)
2217 if isinstance(arr, np.ndarray):
2218 # Note: checking for ndarray instead of np.dtype means we exclude
2219 # dt64/td64, which do their own validation.
-> 2220 value = np_can_hold_element(arr.dtype, value)
2222 if isinstance(value, np.ndarray) and value.ndim == 1 and len(value) == 1:
2223 # NumPy 1.25 deprecation: [https://github.com/numpy/numpy/pull/10615]
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/pandas/core/dtypes/cast.py:1739, in np_can_hold_element(dtype, element)
1738 if dtype.itemsize < tipo.itemsize:
-> 1739 raise LossySetitemError
1740 if not isinstance(tipo, np.dtype):
1741 # i.e. nullable IntegerDtype; we can put this into an ndarray
1742 # losslessly iff it has no NAs
LossySetitemError:
The above exception was the direct cause of the following exception:
TypeError Traceback (most recent call last)
Cell In[41], line 5
1 # ---------------------------------------------------------------------------
2 # 9. Adjusted p-values
3 # ---------------------------------------------------------------------------
4 log.info("\n--- Step 9: Adjusting p-values (FDR BH, spot axis) ---")
----> 5 st.tl.cci.adj_pvals(grid, correct_axis="spot", pval_adj_cutoff=0.05, adj_method="fdr_bh")
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/stlearn/tl/cci/analysis.py:432, in adj_pvals(adata, pval_adj_cutoff, correct_axis, adj_method)
429 lr_counts_pval = (ps < pval_adj_cutoff).sum(axis=0)
431 # Re-ranking LRs based on these counts & updating LR ordering #
--> 432 adata.uns["lr_summary"].loc[:, "n_spots_sig"] = lr_counts
433 adata.uns["lr_summary"].loc[:, "n_spots_sig_pval"] = lr_counts_pval
434 new_order = np.argsort(-adata.uns["lr_summary"].loc[:, "n_spots_sig"].values)
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/pandas/core/indexing.py:938, in _LocationIndexer.__setitem__(self, key, value)
933 self._has_valid_setitem_indexer(key)
935 iloc: _iLocIndexer = (
936 cast("_iLocIndexer", self) if self.name == "iloc" else self.obj.iloc
937 )
--> 938 iloc._setitem_with_indexer(indexer, value, self.name)
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/pandas/core/indexing.py:1953, in _iLocIndexer._setitem_with_indexer(self, indexer, value, name)
1950 # align and set the values
1951 if take_split_path:
1952 # We have to operate column-wise
-> 1953 self._setitem_with_indexer_split_path(indexer, value, name)
1954 else:
1955 self._setitem_single_block(indexer, value, name)
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/pandas/core/indexing.py:1997, in _iLocIndexer._setitem_with_indexer_split_path(self, indexer, value, name)
1993 self._setitem_with_indexer_2d_value(indexer, value)
1995 elif len(ilocs) == 1 and lplane_indexer == len(value) and not is_scalar(pi):
1996 # We are setting multiple rows in a single column.
-> 1997 self._setitem_single_column(ilocs[0], value, pi)
1999 elif len(ilocs) == 1 and 0 != lplane_indexer != len(value):
2000 # We are trying to set N values into M entries of a single
2001 # column, which is invalid for N != M
2002 # Exclude zero-len for e.g. boolean masking that is all-false
2004 if len(value) == 1 and not is_integer(info_axis):
2005 # This is a case like df.iloc[:3, [1]] = [0]
2006 # where we treat as df.iloc[:3, 1] = 0
File ~/envs/stlearn/.venv/lib/python3.13/site-packages/pandas/core/indexing.py:2163, in _iLocIndexer._setitem_single_column(self, loc, value, plane_indexer)
2151 dtype = self.obj.dtypes.iloc[loc]
2152 if dtype not in (np.void, object) and not self.obj.empty:
2153 # - Exclude np.void, as that is a special case for expansion.
2154 # We want to raise for
(...) 2161 # - Exclude empty initial object with enlargement,
2162 # as then there's nothing to be inconsistent with.
-> 2163 raise TypeError(
2164 f"Invalid value '{value}' for dtype '{dtype}'"
2165 ) from exc
2166 self.obj.isetitem(loc, value)
2167 else:
2168 # set value into the column (first attempting to operate inplace, then
2169 # falling back to casting if necessary)
Hi!
I'm trying to run this tutorial with:
stlearn==1.4.0pandas==3.0.2on a different dataset.
and I get the following error:
It seems that the problem lies in casting (
int) in a column that expectsfloat(likely because of initialization). If so, I see two possible solutions:adata.uns["lr_summary"]is created.. somewhere inst.tl.cci.run()?adata.uns["lr_summary"].loc[:, "n_spots_sig"] = lr_countsI can try preparing a PR if that helps, thx!