diff --git a/panpipes/python_scripts/run_preprocess_prot.py b/panpipes/python_scripts/run_preprocess_prot.py index e221138d..12fbc67f 100644 --- a/panpipes/python_scripts/run_preprocess_prot.py +++ b/panpipes/python_scripts/run_preprocess_prot.py @@ -103,6 +103,22 @@ else: L.error("You must specify a background MuData to run dsb, containing both rna and prot") sys.exit("You must specify a background MuData to run dsb, containing both rna and prot") + + # RNA and PROT layer must be present in the object to run dsb + mods = list(all_mdata_bg.mod.keys()) + if 'prot' not in mods: + L.error("The MuData you specified does not contain prot modality. Cannot run dsb") + sys.exit("The MuData you specified does not contain prot modality. Cannot run dsb") + if 'rna' not in mods: + L.error("The MuData you specified does not contain rna modality. Cannot run dsb") + sys.exit("The MuData you specified does not contain rna modality. Cannot run dsb") + del mods + + # the RNA and PROT must intersect - they won't if experimental design included some cells without PROT data + L.info("Checking that only cells with PROT signal present are in the bacground object") + if all_mdata_bg['rna'].shape[0] != all_mdata_bg['prot'].shape[0]: + mu.pp.intersect_obs(mdata_bg) + all_mdata_bg.update() # checking that the same proteins are in foreground and background (since foreground might have been filtered) L.info("Checking that the same proteins are in foreground and background")