Skip to content

Commit 6800120

Browse files
Merge pull request #5 from LinearParadox/dev
bump version, add function to write metadata for debugging and to ful…
2 parents 712ebe4 + 27cd2f5 commit 6800120

File tree

4 files changed

+31
-5
lines changed

4 files changed

+31
-5
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "loupepy"
3-
version = "0.1.0"
3+
version = "1.1"
44
authors = [
55
{ name="Alexei Martsinkovskiy", email="[email protected]" },
66
]

src/loupepy/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
__version__ = "1.1"
12
from .setup import setup as setup
23
from .setup import eula as eula
34
from .setup import eula_reset as eula_reset

src/loupepy/convert.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22
from os import PathLike
33

44
from anndata import AnnData # type: ignore
5+
from anndata import __version__ as ad_version
56
import pandas as pd
67
from scipy.sparse import csc_matrix
78
import h5py # type: ignore
89
from typing import List
910
import logging
1011
from numpy import ndarray
12+
import platform
1113
from .utils import _validate_anndata, _get_loupe_path, get_obs, get_obsm, get_count_matrix
14+
from . import __version__
15+
1216

1317

1418
def _create_string_dataset(obj: h5py.Group, key: str, strings: List[str]|pd.Series|str|pd.Index) -> None:
@@ -34,6 +38,26 @@ def _create_string_dataset(obj: h5py.Group, key: str, strings: List[str]|pd.Seri
3438
else:
3539
obj.create_dataset(name=key, data=strings, dtype=dtype)
3640

41+
def _write_metadata(f: h5py.File) -> None:
42+
'''
43+
Writes the metadata to the h5 file
44+
'''
45+
metadata=f.create_group('metadata')
46+
meta = {}
47+
h5_version = h5py.h5.HDF5_VERSION_COMPILED_AGAINST
48+
h5_version = f"{h5_version[0]}.{h5_version[1]}.{h5_version[2]}"
49+
meta["tool"] = "LoupePy"
50+
meta["tool_version"] = __version__
51+
meta["os"] = platform.system()
52+
meta["platform"] = platform.platform()
53+
meta["language"] = f"Python -- {platform.python_version()}"
54+
meta["h5py_version"] = h5py.__version__
55+
meta["anndata_version"] = ad_version
56+
meta["hdf5_version"] = h5_version
57+
for k,v in meta.items():
58+
v = str(v)
59+
_create_string_dataset(metadata, k, v)
60+
3761
def _write_matrix(f: h5py.File, matrix: csc_matrix,
3862
features: pd.Series|pd.Index, barcodes: pd.Index|pd.Series,
3963
feature_ids: list[str]|pd.Series|None = None) -> None:
@@ -202,6 +226,7 @@ def _write_hdf5(mat: csc_matrix,
202226
projections = f.create_group('projections')
203227
for n in obsm.keys():
204228
_write_projection(projections, obsm[n], n)
229+
_write_metadata(f)
205230
f.close()
206231
except ValueError:
207232
logging.error("Something went wrong while writing the h5 file. Please check the input data.")

tests/test_convert.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import pytest
2-
import h5py
2+
import h5py # type: ignore
33
import os
44
import numpy as np
55
import pandas as pd
6-
import scanpy as sc
6+
import scanpy as sc # type: ignore
77
from scipy.sparse import diags
88
from scipy.sparse import csc_matrix
9-
from loupepy.convert import create_loupe_from_anndata, create_loupe
10-
from loupepy.utils import get_obs, get_obsm, get_count_matrix
9+
from loupepy.convert import create_loupe_from_anndata, create_loupe # type: ignore
10+
from loupepy.utils import get_obs, get_obsm, get_count_matrix # type: ignore
1111

1212
def reverse_engineer_counts(adata, n_counts_column="n_counts"):
1313
n_counts = adata.obs[n_counts_column].values

0 commit comments

Comments
 (0)