def compute_lisi(A, B, combined_meta, batch_key, cell_type_key, aligner_fcn, do_B_transform=False): A = aligner_fcn(A) if do_B_transform: B = aligner_fcn(B) X = np.concatenate((A, B)) print(X.shape) assert (X.shape[0] == combined_meta.shape[0]) return metrics.lisi2(X, combined_meta, [batch_key, cell_type_key])
# For each alignment method for i, method in enumerate(args.methods): print('\t{}'.format(method)) method_key = '{}_aligned'.format(method) log_dir = join(log_dir_root, '{}_{}'.format(task.as_path(), method)) if not exists(log_dir): makedirs(log_dir) if method == 'None': pass # plot_alignment_results(log_dir, task_adata, method, task) lisi_scores.append( metrics.lisi2(task_adata.obsm['PCA'], task_adata.obs, [task.batch_key, task.ct_key], perplexity=30)) else: if 'ICP' in method: runners.run_ICP_methods(datasets, task, task_adata, method, log_dir, args) #lisi_scores.append(metrics.lisi2(task_adata.obsm[method_key], task_adata.obs, [task.batch_key, task.ct_key], perplexity=30) elif method == 'ScAlign': runners.run_scAlign(datasets, task, task_adata, method, log_dir, args) elif method == 'MNN': runners.run_MNN(datasets, task, task_adata, method, log_dir, args) elif method == 'SeuratV3': #task_adata = datasets[task.ds_key] runners.run_Seurat(datasets, task, task_adata, method, log_dir,
if task.leave_out_ct is not None: task_idx = (datasets[task.ds_key].obs[task.batch_key] == task.source_batch) | ((datasets[task.ds_key].obs[task.batch_key] == task.target_batch) & (datasets[task.ds_key].obs[task.ct_key] != task.leave_out_ct)) # elif task.leave_out_source_ct is not None: # task_idx = ((datasets[task.ds_key].obs[task.batch_key] == task.source_batch) & (datasets[task.ds_key].obs[task.ct_key] != task.leave_out_source_ct)) | (datasets[task.ds_key].obs[task.batch_key] == task.target_batch) else: task_idx = (datasets[task.ds_key].obs[task.batch_key] == task.source_batch) | (datasets[task.ds_key].obs[task.batch_key] == task.target_batch) task_adata = datasets[task.ds_key][task_idx] method_key = '{}_aligned'.format(args.method) kbet_stats = None if args.method == 'None': plot_alignment_results(log_dir, task_adata, args.method, task) if args.input_space == 'PCA': lisi_score = metrics.lisi2(task_adata.obsm['PCA'], task_adata.obs, [task.batch_key, task.ct_key], perplexity=30) # lisi_score_batch = metrics.lisi2(task_adata.obsm['PCA'], task_adata.obs, [task.batch_key], perplexity=30) # batch_A_adata = task_adata[task_adata.obs[task.batch_key] == task.source_batch, :] # print(f'batch_A_adata.obsm["PCA"].shape: {batch_A_adata.obsm["PCA"].shape}') # lisi_score_celltype = metrics.lisi2(batch_A_adata.obsm['PCA'], batch_A_adata.obs, [task.ct_key], perplexity=30) else: lisi_score = metrics.lisi2(task_adata.X, task_adata.obs, [task.batch_key, task.ct_key], perplexity=30) # lisi_score_batch = metrics.lisi2(task_adata.X, task_adata.obs, [task.batch_key], perplexity=30) # batch_A_adata = task_adata[task_adata.obs[task.batch_key] == task.source_batch, :] # print(f'batch_A_adata.shape: {batch_A_adata.shape}') # lisi_score_celltype = metrics.lisi2(batch_A_adata.X, batch_A_adata.obs, [task.ct_key], perplexity=30) if args.do_kBET_test: try: kbet_stats = metrics.kBET(task_adata.X, task_adata.obs, task.batch_key, args.kBET_env_path) print(kbet_stats) print('kBET medians:')