Skip to content

Commit

Permalink
Added retry for NFS based errors
Browse files Browse the repository at this point in the history
  • Loading branch information
benjamin-james committed Jan 29, 2024
1 parent bc2e817 commit b00d41a
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions benj/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,23 @@ def pg(adata, color_map="Reds"):
return lambda x, **kwargs: sc.pl.umap(adata, color=x, color_map=color_map, save="_%s.png" % x, **kwargs)


def read_elems(path: str, elems: Union[str, List[str]]) -> Union[Dict[str, any], any]:
def read_elems(path: str, elems: Union[str, List[str]], retry:int=2) -> Union[Dict[str, any], any]:
import h5py
import anndata.experimental
with h5py.File(path, "r") as F:
if isinstance(elems, str):
return anndata.experimental.read_elem(F[elems])
else:
return {elem: anndata.experimental.read_elem(F[elem]) for elem in elems}
if retry < 0:
return {}
try:
with h5py.File(path, "r") as F:
if isinstance(elems, str):
return anndata.experimental.read_elem(F[elems])
else:
return {elem: anndata.experimental.read_elem(F[elem]) for elem in elems}
except KeyError:
import time
print("Key error for %s, sleeping 5 seconds and retrying..." % path)
time.sleep(5)
### NFS error
return read_elems(path=path, elems=elems, retry=retry-1)

def filter_LSI(adata, qc_cols, cor_cutoff:float=0.8, sw=None):
import numpy as np
Expand Down

0 comments on commit b00d41a

Please sign in to comment.