|
| 1 | +import anndata as ad |
| 2 | +import numpy as np |
| 3 | + |
| 4 | +## VIASH START |
| 5 | +# Note: this section is auto-generated by viash at runtime. To edit it, make changes |
| 6 | +# in config.vsh.yaml and then run `viash config inject config.vsh.yaml`. |
| 7 | +par = { |
| 8 | + 'input_train': 'resources_test/task_template/cxg_mouse_pancreas_atlas/train.h5ad', |
| 9 | + 'input_test': 'resources_test/task_template/cxg_mouse_pancreas_atlas/test.h5ad', |
| 10 | + 'input_solution': 'resources_test/task_template/cxg_mouse_pancreas_atlas/solution.h5ad', |
| 11 | + 'output': 'output.h5ad' |
| 12 | +} |
| 13 | +meta = { |
| 14 | + 'name': 'random_labels' |
| 15 | +} |
| 16 | +## VIASH END |
| 17 | + |
| 18 | +print('Reading input files', flush=True) |
| 19 | +input_train = ad.read_h5ad(par['input_train']) |
| 20 | +input_test = ad.read_h5ad(par['input_test']) |
| 21 | + |
| 22 | +print('Compute label distribution', flush=True) |
| 23 | +label_distribution = input_train.obs["label"].value_counts() |
| 24 | +label_distribution = label_distribution / label_distribution.sum() |
| 25 | + |
| 26 | +print('Generate predictions', flush=True) |
| 27 | +obs_label_pred = np.random.choice( |
| 28 | + label_distribution.index, |
| 29 | + size=input_test.n_obs, |
| 30 | + replace=True, |
| 31 | + p=label_distribution |
| 32 | +) |
| 33 | + |
| 34 | +print("Write output AnnData to file", flush=True) |
| 35 | +output = ad.AnnData( |
| 36 | + uns={ |
| 37 | + 'dataset_id': input_train.uns['dataset_id'], |
| 38 | + 'normalization_id': input_train.uns['normalization_id'], |
| 39 | + 'method_id': meta['name'] |
| 40 | + }, |
| 41 | + obs={ |
| 42 | + 'label_pred': obs_label_pred |
| 43 | + } |
| 44 | +) |
| 45 | +output.obs_names = input_test.obs_names |
| 46 | + |
| 47 | +output.write_h5ad(par['output'], compression='gzip') |
0 commit comments