[docs]@dl.save_object.register@dl.validate_savesdefsave_single_cell_experiment(x:SingleCellExperiment,path:str,data_frame_args:dict=None,assay_args:dict=None,rdim_args:dict=None,alt_expts_args:dict=None,**kwargs,):"""Method for saving :py:class:`~singlecellexperiment.SingleCellExperiment.SingleCellExperiment` objects to their corresponding file representations, see :py:meth:`~dolomite_base.save_object.save_object` for details. Args: x: Object to be staged. path: Path to a directory in which to save ``x``. data_frame_args: Further arguments to pass to the ``save_object`` method for the row/column data. assay_args: Further arguments to pass to the ``save_object`` method for the assays. rdim_args: Further arguments to pass to the ``save_object`` method for the reduced dimensions. alt_expts_args: Further arguments to pass to the ``save_object`` method for the alternative experiments. kwargs: Further arguments. Returns: ``x`` is saved to path. """ifdata_frame_argsisNone:data_frame_args={}ifassay_argsisNone:assay_args={}ifrdim_argsisNone:rdim_args={}ifalt_expts_argsisNone:alt_expts_args={}# see comments in save_ranged_summarized_experiment in dolomite_se.dlse.save_ranged_summarized_experiment(x,path,data_frame_args=data_frame_args,assay_args=assay_args,**kwargs)# Modify OBJECT_info=dl.read_object_file(path)_info["single_cell_experiment"]={"version":"1.0"}ifx.get_main_experiment_name()isnotNone:_info["single_cell_experiment"]["main_experiment_name"]=str(x.get_main_experiment_name())dl.save_object_file(path,"single_cell_experiment",_info)# save rdims_rdim_names=x.get_reduced_dim_names()iflen(_rdim_names)>0:_rdim_path=os.path.join(path,"reduced_dimensions")os.mkdir(_rdim_path)withopen(os.path.join(_rdim_path,"names.json"),"w")ashandle:json.dump(_rdim_names,handle)for_aidx,_anameinenumerate(_rdim_names):_rdim_save_path=os.path.join(_rdim_path,str(_aidx))try:dl.alt_save_object(x.reduced_dim(_aname),path=_rdim_save_path,**rdim_args,**kwargs)exceptExceptionasex:raiseRuntimeError("failed to stage reduced dimension '"+_aname+"' for "+str(type(x))+"; "+str(ex))# save alt expts._alt_names=x.get_alternative_experiment_names()iflen(_alt_names)>0:_alt_path=os.path.join(path,"alternative_experiments")os.mkdir(_alt_path)withopen(os.path.join(_alt_path,"names.json"),"w")ashandle:json.dump(_alt_names,handle)for_aidx,_anameinenumerate(_alt_names):_alt_save_path=os.path.join(_alt_path,str(_aidx))try:dl.alt_save_object(x.alternative_experiment(_aname),path=_alt_save_path,**alt_expts_args,**kwargs,)exceptExceptionasex:raiseRuntimeError("failed to stage alternative experiment '"+_aname+"' for "+str(type(x))+"; "+str(ex))return