Skip to content

Commit cf0b312

Browse files
committed
fix tests
1 parent aa26339 commit cf0b312

4 files changed

Lines changed: 12 additions & 7 deletions

File tree

anndata/src/container/base.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,11 @@ impl<B: Backend> InnerDataFrameElem<B> {
178178
/// Set a column with a Series.
179179
//TODO: this is not efficient. We should be able to replace a column without reading the whole dataframe.
180180
pub fn set_column<C: IntoColumn>(&mut self, name: &str, new_col: C) -> Result<()> {
181+
let mut column = new_col.into_column();
182+
column.rename(name.into());
183+
181184
let mut df = self.data()?.clone();
182-
df.replace(name.into(), new_col.into_column())?;
185+
df.with_column(column)?;
183186
self.save(df)
184187
}
185188

anndata/src/data/array/dataframe.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,10 @@ impl Writable for DataFrame {
9393

9494
impl Readable for DataFrame {
9595
fn read<B: Backend>(container: &DataContainer<B>) -> Result<Self> {
96+
let shape = DataFrame::get_shape(container)?;
9697
let columns: Vec<String> = container.get_attr("column-order")?;
97-
Ok(DataFrame::new_infer_height(
98+
Ok(DataFrame::new(
99+
shape[0],
98100
columns
99101
.into_iter()
100102
.map(|name| {

pyanndata/src/anndata/memory.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ impl<'py> AnnDataOp for PyAnnData<'py> {
253253

254254
fn set_obs(&self, obs: DataFrame) -> Result<()> {
255255
let py = self.py();
256-
let is_empty = obs.height() == 0;
256+
let is_empty = obs.height() == 0 || obs.width() == 0;
257257
let index = self.getattr("obs")?.getattr("index")?;
258258
let mut df = PyDataFrame(obs).into_pyobject(py)?
259259
.call_method0("to_pandas")?;
@@ -270,7 +270,7 @@ impl<'py> AnnDataOp for PyAnnData<'py> {
270270

271271
fn set_var(&self, var: DataFrame) -> Result<()> {
272272
let py = self.py();
273-
let is_empty = var.height() == 0;
273+
let is_empty = var.height() == 0 || var.width() == 0;
274274
let index = self.getattr("var")?.getattr("index")?;
275275
let mut df = PyDataFrame(var).into_pyobject(py)?
276276
.call_method0("to_pandas")?;

python/tests/test_base.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,11 @@ def test_to_memory(tmp_path, backend):
130130
adata.obs_names = ['a', 'b']
131131
adata.var_names = ['a', 'b', 'c']
132132

133-
adata.to_memory()
133+
adata = adata.to_memory()
134134
assert adata.n_obs == 2
135135
assert adata.n_vars == 3
136-
assert adata.obs_names == ['a', 'b']
137-
assert adata.var_names == ['a', 'b', 'c']
136+
assert adata.obs_names.tolist() == ['a', 'b']
137+
assert adata.var_names.tolist() == ['a', 'b', 'c']
138138

139139
@pytest.mark.parametrize("backend", BACKENDS)
140140
def test_resize(tmp_path, backend):

0 commit comments

Comments
 (0)