Skip to content

Commit

Permalink
fixed loom import export
Browse files Browse the repository at this point in the history
  • Loading branch information
falexwolf committed Feb 9, 2018
1 parent ff4b043 commit b346090
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 22 deletions.
2 changes: 1 addition & 1 deletion anndata/readwrite/read.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from pathlib import Path
from typing import Union, Optional, Iterable, Generator, Iterator

from scipy.sparse import issparse
import numpy as np

from ..base import AnnData
Expand Down
19 changes: 9 additions & 10 deletions anndata/readwrite/write.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
from collections import Mapping
from pathlib import Path
from typing import Union

import pandas as pd
import numpy as np
from scipy import sparse
from scipy.sparse import issparse
import logging as logg

from ..base import AnnData
from .. import h5py
Expand Down Expand Up @@ -58,18 +57,18 @@ def write_csvs(dirname, adata, skip_data=True, sep=','):


def write_loom(filename: Union[Path, str], adata: AnnData):
from loompy import create
filename = str(filename) # allow passing Path object
row_attrs = adata.var.to_dict('list')
row_attrs['var_names'] = adata.var_names.values
col_attrs = adata.obs.to_dict('list')
col_attrs['obs_names'] = adata.obs_names.values
with create(
str(filename), # allow passing Path objects
adata.X.T,
row_attrs=row_attrs,
col_attrs=col_attrs
) as ds:
pass
X = adata.X.T
if issparse(X):
logg.info(
'... writing to \'.loom\' file densifies sparse matrix')
X = X.toarray()
from loompy import create
create(filename, X, row_attrs=row_attrs, col_attrs=col_attrs)


def _write_h5ad(filename: Union[Path, str], adata: AnnData, **kwargs):
Expand Down
22 changes: 11 additions & 11 deletions anndata/tests/readwrite.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,17 @@ def test_readwrite_h5ad():
assert adata.obs['oanno1'].cat.categories.tolist() == ['cat1', 'cat2']


# def test_readwrite_loom():
# for typ in [np.array, csr_matrix]:
# X = typ(X_list)
# adata = ad.AnnData(X, obs=obs_dict, var=var_dict, uns=uns_dict)
# adata.write_loom('./test.loom')
# adata = ad.read_loom('./test.loom')
# if isinstance(X, np.ndarray):
# assert np.allclose(adata.X, X)
# else:
# # TODO: this should not be necessary
# assert np.allclose(adata.X, X.toarray())
def test_readwrite_loom():
for typ in [np.array, csr_matrix]:
X = typ(X_list)
adata = ad.AnnData(X, obs=obs_dict, var=var_dict, uns=uns_dict)
adata.write_loom('./test.loom')
adata = ad.read_loom('./test.loom')
if isinstance(X, np.ndarray):
assert np.allclose(adata.X, X)
else:
# TODO: this should not be necessary
assert np.allclose(adata.X, X.toarray())


def test_read_csv():
Expand Down

0 comments on commit b346090

Please sign in to comment.