|
| 1 | +import sys |
| 2 | + |
1 | 3 | import anndata as ad |
2 | | -import scib_metrics as sm |
3 | 4 | import numpy as np |
4 | | -import sys |
| 5 | +import scib_metrics as sm |
5 | 6 |
|
6 | 7 | ## VIASH START |
7 | 8 | # Note: this section is auto-generated by viash at runtime. To edit it, make changes |
8 | 9 | # in config.vsh.yaml and then run `viash config inject config.vsh.yaml`. |
9 | 10 | par = { |
10 | | - 'input_unintegrated': 'resources_test/.../unintegrated.h5ad', |
11 | | - 'input_integrated_split1': 'resources_test/.../integrated_split1.h5ad', |
12 | | - 'input_integrated_split2': 'resources_test/.../integrated_split2.h5ad', |
13 | | - 'output': 'output.h5ad' |
14 | | -} |
15 | | -meta = { |
16 | | - 'name': 'lisi' |
| 11 | + "input_unintegrated": "resources_test/.../unintegrated.h5ad", |
| 12 | + "input_integrated_split1": "resources_test/.../integrated_split1.h5ad", |
| 13 | + "input_integrated_split2": "resources_test/.../integrated_split2.h5ad", |
| 14 | + "output": "output.h5ad", |
17 | 15 | } |
| 16 | +meta = {"name": "lisi"} |
18 | 17 | ## VIASH END |
19 | 18 |
|
20 | 19 | sys.path.append(meta["resources_dir"]) |
|
23 | 22 | subset_markers_tocorrect, |
24 | 23 | ) |
25 | 24 |
|
26 | | -print('Reading input files', flush=True) |
27 | | -input_unintegrated = ad.read_h5ad(par['input_unintegrated']) |
28 | | -input_integrated_split1 = ad.read_h5ad(par['input_integrated_split1']) |
29 | | -input_integrated_split2 = ad.read_h5ad(par['input_integrated_split2']) |
| 25 | +print("Reading input files", flush=True) |
| 26 | +input_unintegrated = ad.read_h5ad(par["input_unintegrated"]) |
| 27 | +input_integrated_split1 = ad.read_h5ad(par["input_integrated_split1"]) |
| 28 | +input_integrated_split2 = ad.read_h5ad(par["input_integrated_split2"]) |
30 | 29 |
|
31 | 30 | print("Formatting input files", flush=True) |
32 | 31 | integrated_s1, integrated_s2 = get_obs_var_for_integrated( |
|
35 | 34 | integrated_s1 = subset_markers_tocorrect(integrated_s1) |
36 | 35 | integrated_s2 = subset_markers_tocorrect(integrated_s2) |
37 | 36 |
|
38 | | -print('Compute metrics', flush=True) |
| 37 | +print("Compute metrics", flush=True) |
39 | 38 | n_batches = len(integrated_s1.obs.batch.unique()) |
40 | 39 | n_celltypes = len(integrated_s1.obs.cell_type.unique()) |
41 | 40 |
|
42 | 41 | print("Compute iLisi and cLisi for split 1", flush=True) |
43 | | -knn = sm.nearest_neighbors.pynndescent(integrated_s1.layers['integrated'], n_neighbors=100, random_state=0) |
| 42 | +knn = sm.nearest_neighbors.pynndescent( |
| 43 | + integrated_s1.layers["integrated"], n_neighbors=100, random_state=0 |
| 44 | +) |
44 | 45 |
|
45 | 46 | ilisi_s1_per_cell = sm.lisi_knn(knn, integrated_s1.obs.batch) |
46 | 47 | ilisi_s1 = (np.nanmedian(ilisi_s1_per_cell) - 1) / (n_batches - 1) |
|
49 | 50 | clisi_s1 = (n_celltypes - np.nanmedian(clisi_s1_per_cell)) / (n_celltypes - 1) |
50 | 51 |
|
51 | 52 | print("Compute iLisi and cLisi for split 2", flush=True) |
52 | | -knn = sm.nearest_neighbors.pynndescent(integrated_s2.layers['integrated'], n_neighbors=100, random_state=0) |
| 53 | +knn = sm.nearest_neighbors.pynndescent( |
| 54 | + integrated_s2.layers["integrated"], n_neighbors=100, random_state=0 |
| 55 | +) |
53 | 56 | ilisi_s2_per_cell = sm.lisi_knn(knn, integrated_s2.obs.batch) |
54 | 57 | ilisi_s2 = (np.nanmedian(ilisi_s2_per_cell) - 1) / (n_batches - 1) |
55 | 58 |
|
|
58 | 61 |
|
59 | 62 | ilisi = np.mean([ilisi_s1, ilisi_s2]) |
60 | 63 | clisi = np.mean([clisi_s1, clisi_s2]) |
61 | | -uns_metric_ids = [ 'ilisi', 'clisi' ] |
62 | | -uns_metric_values = [ ilisi, clisi ] |
| 64 | +uns_metric_ids = ["iLisi", "cLisi"] |
| 65 | +uns_metric_values = [ilisi, clisi] |
63 | 66 |
|
64 | 67 | print("Write output AnnData to file", flush=True) |
65 | 68 | output = ad.AnnData( |
66 | | - uns={ |
| 69 | + uns={ |
67 | 70 | "dataset_id": integrated_s1.uns["dataset_id"], |
68 | 71 | "method_id": integrated_s1.uns["method_id"], |
69 | 72 | "metric_ids": uns_metric_ids, |
70 | 73 | "metric_values": uns_metric_values, |
71 | 74 | "ilisi_s1_index": ilisi_s1_per_cell, |
72 | 75 | "ilisi_s2_index": ilisi_s2_per_cell, |
73 | 76 | "clisi_s1_index": clisi_s1_per_cell, |
74 | | - "clisi_s2_index": clisi_s2_per_cell |
| 77 | + "clisi_s2_index": clisi_s2_per_cell, |
75 | 78 | } |
76 | | - |
77 | 79 | ) |
78 | | -output.write_h5ad(par['output'], compression='gzip') |
| 80 | +output.write_h5ad(par["output"], compression="gzip") |
0 commit comments