Skip to content

Commit 8051bd4

Browse files
committed
Deploy for release 0.10.1 from 3d2a0f2
1 parent 88ab331 commit 8051bd4

File tree

549 files changed

+6384
-2987
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

549 files changed

+6384
-2987
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
# openpipelines 0.10.1
2+
3+
## MINOR CHANGES
4+
5+
* `integration/scvi_leiden`: Expose hvg selection argument `--var_input` (#543, PR #547).
6+
7+
## BUG FIXES
8+
9+
* `integration/bbknn_leiden`: Set leiden clustering parameter to multiple (#542, PR #545).
10+
11+
* `integration/scvi_leiden`: Fix component name in Viash config (PR #547).
12+
13+
* `integration/harmony_leiden`: Pass `--uns_neighbors` argument `umap` (PR #548).
14+
15+
* Add workaround for bug where resources aren't available when using Nextflow fusion by including `setup_logger`, `subset_vars` and `compress_h5mu` in the script itself (PR #549).
16+
117
# openpipelines 0.10.0
218

319
## BREAKING CHANGES

src/annotate/popv/script.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,22 @@ def mps_is_available():
5252
## VIASH END
5353

5454
sys.path.append(meta["resources_dir"])
55-
from setup_logger import setup_logger
55+
# START TEMPORARY WORKAROUND setup_logger
56+
# reason: resources aren't available when using Nextflow fusion
57+
# from setup_logger import setup_logger
58+
def setup_logger():
59+
import logging
60+
from sys import stdout
61+
62+
logger = logging.getLogger()
63+
logger.setLevel(logging.INFO)
64+
console_handler = logging.StreamHandler(stdout)
65+
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
66+
console_handler.setFormatter(logFormatter)
67+
logger.addHandler(console_handler)
68+
69+
return logger
70+
# END TEMPORARY WORKAROUND setup_logger
5671
logger = setup_logger()
5772

5873
use_gpu = cuda_is_available() or mps_is_available()

src/cluster/leiden/script.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,22 @@
1818
## VIASH END
1919

2020
sys.path.append(meta["resources_dir"])
21-
from setup_logger import setup_logger
21+
# START TEMPORARY WORKAROUND setup_logger
22+
# reason: resources aren't available when using Nextflow fusion
23+
# from setup_logger import setup_logger
24+
def setup_logger():
25+
import logging
26+
from sys import stdout
27+
28+
logger = logging.getLogger()
29+
logger.setLevel(logging.INFO)
30+
console_handler = logging.StreamHandler(stdout)
31+
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
32+
console_handler.setFormatter(logFormatter)
33+
logger.addHandler(console_handler)
34+
35+
return logger
36+
# END TEMPORARY WORKAROUND setup_logger
2237
logger = setup_logger()
2338

2439
logger.info("Reading %s.", par["input"])

src/compression/compress_h5mu/script.py

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,59 @@
99
### VIASH END
1010

1111
sys.path.append(meta["resources_dir"])
12-
from compress_h5mu import compress_h5mu
12+
# START TEMPORARY WORKAROUND compress_h5mu
13+
# reason: resources aren't available when using Nextflow fusion
14+
# from compress_h5mu import compress_h5mu
15+
from h5py import File as H5File
16+
from h5py import Group, Dataset
17+
from pathlib import Path
18+
from typing import Union, Literal
19+
from functools import partial
20+
21+
22+
def compress_h5mu(input_path: Union[str, Path],
23+
output_path: Union[str, Path],
24+
compression: Union[Literal['gzip'], Literal['lzf']]):
25+
input_path, output_path = str(input_path), str(output_path)
26+
27+
def copy_attributes(in_object, out_object):
28+
for key, value in in_object.attrs.items():
29+
out_object.attrs[key] = value
30+
31+
def visit_path(output_h5: H5File,
32+
compression: Union[Literal['gzip'], Literal['lzf']],
33+
name: str, object: Union[Group, Dataset]):
34+
if isinstance(object, Group):
35+
new_group = output_h5.create_group(name)
36+
copy_attributes(object, new_group)
37+
elif isinstance(object, Dataset):
38+
# Compression only works for non-scalar Dataset objects
39+
# Scalar objects dont have a shape defined
40+
if not object.compression and object.shape not in [None, ()]:
41+
new_dataset = output_h5.create_dataset(name, data=object, compression=compression)
42+
copy_attributes(object, new_dataset)
43+
else:
44+
output_h5.copy(object, name)
45+
else:
46+
raise NotImplementedError(f"Could not copy element {name}, "
47+
f"type has not been implemented yet: {type(object)}")
48+
49+
with H5File(input_path, 'r') as input_h5, H5File(output_path, 'w', userblock_size=512) as output_h5:
50+
copy_attributes(input_h5, output_h5)
51+
input_h5.visititems(partial(visit_path, output_h5, compression))
52+
53+
with open(input_path, "rb") as input_bytes:
54+
# Mudata puts metadata like this in the first 512 bytes:
55+
# MuData (format-version=0.1.0;creator=muon;creator-version=0.2.0)
56+
# See mudata/_core/io.py, read_h5mu() function
57+
starting_metadata = input_bytes.read(100)
58+
# The metadata is padded with extra null bytes up until 512 bytes
59+
truncate_location = starting_metadata.find(b"\x00")
60+
starting_metadata = starting_metadata[:truncate_location]
61+
with open(output_path, "br+") as f:
62+
nbytes = f.write(starting_metadata)
63+
f.write(b"\0" * (512 - nbytes))
64+
# END TEMPORARY WORKAROUND compress_h5mu
1365

1466
if __name__ == "__main__":
1567
compress_h5mu(par["input"], par["output"], compression=par["compression"])

src/convert/from_10xh5_to_h5mu/script.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,22 @@
1616
## VIASH END
1717

1818
sys.path.append(meta["resources_dir"])
19-
from setup_logger import setup_logger
19+
# START TEMPORARY WORKAROUND setup_logger
20+
# reason: resources aren't available when using Nextflow fusion
21+
# from setup_logger import setup_logger
22+
def setup_logger():
23+
import logging
24+
from sys import stdout
25+
26+
logger = logging.getLogger()
27+
logger.setLevel(logging.INFO)
28+
console_handler = logging.StreamHandler(stdout)
29+
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
30+
console_handler.setFormatter(logFormatter)
31+
logger.addHandler(console_handler)
32+
33+
return logger
34+
# END TEMPORARY WORKAROUND setup_logger
2035
logger = setup_logger()
2136

2237
logger.info("Reading %s.", par["input"])

src/convert/from_10xmtx_to_h5mu/script.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,22 @@
1010
## VIASH END
1111

1212
sys.path.append(meta["resources_dir"])
13-
from setup_logger import setup_logger
13+
# START TEMPORARY WORKAROUND setup_logger
14+
# reason: resources aren't available when using Nextflow fusion
15+
# from setup_logger import setup_logger
16+
def setup_logger():
17+
import logging
18+
from sys import stdout
19+
20+
logger = logging.getLogger()
21+
logger.setLevel(logging.INFO)
22+
console_handler = logging.StreamHandler(stdout)
23+
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
24+
console_handler.setFormatter(logFormatter)
25+
logger.addHandler(console_handler)
26+
27+
return logger
28+
# END TEMPORARY WORKAROUND setup_logger
1429
logger = setup_logger()
1530

1631
logger.info("Reading %s.", par["input"])

src/convert/from_cellranger_multi_to_h5mu/script.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,22 @@
1717
## VIASH END
1818

1919
sys.path.append(meta["resources_dir"])
20-
from setup_logger import setup_logger
20+
# START TEMPORARY WORKAROUND setup_logger
21+
# reason: resources aren't available when using Nextflow fusion
22+
# from setup_logger import setup_logger
23+
def setup_logger():
24+
import logging
25+
from sys import stdout
26+
27+
logger = logging.getLogger()
28+
logger.setLevel(logging.INFO)
29+
console_handler = logging.StreamHandler(stdout)
30+
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
31+
console_handler.setFormatter(logFormatter)
32+
logger.addHandler(console_handler)
33+
34+
return logger
35+
# END TEMPORARY WORKAROUND setup_logger
2136
logger = setup_logger()
2237

2338
POSSIBLE_LIBRARY_TYPES = ('vdj_t', 'vdj_b', 'vdj_t_gd', 'count')

src/convert/from_h5ad_to_h5mu/script.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,22 @@
1313
## VIASH END
1414

1515
sys.path.append(meta["resources_dir"])
16-
from setup_logger import setup_logger
16+
# START TEMPORARY WORKAROUND setup_logger
17+
# reason: resources aren't available when using Nextflow fusion
18+
# from setup_logger import setup_logger
19+
def setup_logger():
20+
import logging
21+
from sys import stdout
22+
23+
logger = logging.getLogger()
24+
logger.setLevel(logging.INFO)
25+
console_handler = logging.StreamHandler(stdout)
26+
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
27+
console_handler.setFormatter(logFormatter)
28+
logger.addHandler(console_handler)
29+
30+
return logger
31+
# END TEMPORARY WORKAROUND setup_logger
1732
logger = setup_logger()
1833

1934
assert len(par["input"]) == len(par["modality"]), "Number of input files should be the same length as the number of modalities"

src/convert/from_h5mu_to_h5ad/script.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,22 @@
1111
## VIASH END
1212

1313
sys.path.append(meta["resources_dir"])
14-
from setup_logger import setup_logger
14+
# START TEMPORARY WORKAROUND setup_logger
15+
# reason: resources aren't available when using Nextflow fusion
16+
# from setup_logger import setup_logger
17+
def setup_logger():
18+
import logging
19+
from sys import stdout
20+
21+
logger = logging.getLogger()
22+
logger.setLevel(logging.INFO)
23+
console_handler = logging.StreamHandler(stdout)
24+
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
25+
console_handler.setFormatter(logFormatter)
26+
logger.addHandler(console_handler)
27+
28+
return logger
29+
# END TEMPORARY WORKAROUND setup_logger
1530
logger = setup_logger()
1631

1732
# TODO: Merge modalities into one layer

src/correction/cellbender_remove_background/script.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,22 @@
6767
## VIASH END
6868

6969
sys.path.append(meta["resources_dir"])
70-
from setup_logger import setup_logger
70+
# START TEMPORARY WORKAROUND setup_logger
71+
# reason: resources aren't available when using Nextflow fusion
72+
# from setup_logger import setup_logger
73+
def setup_logger():
74+
import logging
75+
from sys import stdout
76+
77+
logger = logging.getLogger()
78+
logger.setLevel(logging.INFO)
79+
console_handler = logging.StreamHandler(stdout)
80+
logFormatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s")
81+
console_handler.setFormatter(logFormatter)
82+
logger.addHandler(console_handler)
83+
84+
return logger
85+
# END TEMPORARY WORKAROUND setup_logger
7186
logger = setup_logger()
7287

7388
from helper import anndata_from_h5

0 commit comments

Comments
 (0)