Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@
* Added EMD vertical global metric and split perfect integration into horizontal and vertical
for computing horizontal and vertical metrics (PR #63).

* Fix problems identified during a full run (PR #99).

## MINOR CHANGES

* Enabled unit tests (PR #2).
Expand Down Expand Up @@ -153,5 +155,6 @@

* Fix missing anndata in yaml file and set the base_r docker image version to 1 instead of 1.0.0 (PR #89).

* Fix bug in control methods (PR #107).


44 changes: 32 additions & 12 deletions src/control_methods/shuffle_integration/script.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@

## VIASH START
par = {
"input_unintegrated": "resources_test/task_cyto_batch_integration/mouse_spleen_flow_cytometry_subset/unintegrated_censored.h5ad",
"output": "output.h5ad",
"input_unintegrated": "resources_test/task_cyto_batch_integration/mouse_spleen_flow_cytometry_subset/unintegrated.h5ad",
"output_integrated_split1": "resources_test/task_cyto_batch_integration/mouse_spleen_flow_cytometry_subset/control_integrated_split1.h5ad",
"output_integrated_split2": "resources_test/task_cyto_batch_integration/mouse_spleen_flow_cytometry_subset/control_integrated_split2.h5ad",
}
meta = {"name": "harmonypy"}
meta = {"name": "shuffle_integration_by_cell_type", "resources_dir": "src/control_methods"}
## VIASH END

print("Importing helper functions", flush=True)
Expand All @@ -16,25 +17,44 @@

print("Reading and preparing input files", flush=True)
adata = ad.read_h5ad(par["input_unintegrated"])
adata_split1 = adata[(adata.obs.is_control > 0) | (adata.obs.split == 1)].copy()
adata_split2 = adata[(adata.obs.is_control > 0) | (adata.obs.split == 2)].copy()

adata.obs["batch_str"] = adata.obs["batch"].astype(str)

print("Randomise features", flush=True)
print("Randomise features - split 1", flush=True)
adata_split1.obs["batch_str"] = adata_split1.obs["batch"].astype(str)
integrated = _randomize_features(
adata.layers["preprocessed"]
adata_split1.layers["preprocessed"]
)

# create new anndata
output = ad.AnnData(
obs=adata.obs[[]],
var=adata.var[[]],
output_split1 = ad.AnnData(
obs=adata_split1.obs[[]],
var=adata_split1.var[[]],
layers={"integrated": integrated},
uns={
"dataset_id": adata_split1.uns["dataset_id"],
"method_id": meta["name"],
"parameters": {},
},
)

print("Randomise features - split 2", flush=True)
adata_split2.obs["batch_str"] = adata_split2.obs["batch"].astype(str)
integrated = _randomize_features(
adata_split2.layers["preprocessed"]
)
# create new anndata
output_split2 = ad.AnnData(
obs=adata_split2.obs[[]],
var=adata_split2.var[[]],
layers={"integrated": integrated},
uns={
"dataset_id": adata.uns["dataset_id"],
"dataset_id": adata_split2.uns["dataset_id"],
"method_id": meta["name"],
"parameters": {},
},
)

print("Write output AnnData to file", flush=True)
output.write_h5ad(par["output"], compression="gzip")
output_split1.write_h5ad(par["output_integrated_split1"], compression="gzip")
output_split2.write_h5ad(par["output_integrated_split2"], compression="gzip")
2 changes: 1 addition & 1 deletion src/control_methods/shuffle_integration_by_batch/script.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

print("Reading and preparing input files", flush=True)
adata = ad.read_h5ad(par["input_unintegrated"])
adata_split1 = adata[(adata.obs.is_control > 0) | (adata.obs.batch == 1)].copy()
adata_split1 = adata[(adata.obs.is_control > 0) | (adata.obs.split == 1)].copy()
adata_split2 = adata[(adata.obs.is_control > 0) | (adata.obs.split == 2)].copy()

print("Randomise features - split 1", flush=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
## VIASH START
par = {
"input_unintegrated": "resources_test/task_cyto_batch_integration/mouse_spleen_flow_cytometry_subset/unintegrated.h5ad",
"output": "output.h5ad",
"output_integrated_split1": "resources_test/task_cyto_batch_integration/mouse_spleen_flow_cytometry_subset/control_integrated_split1.h5ad",
"output_integrated_split2": "resources_test/task_cyto_batch_integration/mouse_spleen_flow_cytometry_subset/control_integrated_split2.h5ad",
}
meta = {"name": "harmonypy"}
meta = {"name": "shuffle_integration_by_cell_type", "resources_dir": "src/control_methods"}
## VIASH END

print("Importing helper functions", flush=True)
Expand All @@ -16,7 +17,7 @@

print("Reading and preparing input files", flush=True)
adata = ad.read_h5ad(par["input_unintegrated"])
adata_split1 = adata[(adata.obs.is_control > 0) | (adata.obs.batch == 1)].copy()
adata_split1 = adata[(adata.obs.is_control > 0) | (adata.obs.split == 1)].copy()
adata_split2 = adata[(adata.obs.is_control > 0) | (adata.obs.split == 2)].copy()

print("Randomise features - split 1", flush=True)
Expand Down