[docs]defsave_common_se_props(x,path,data_frame_args,assay_args,**kwargs):"""Save common :py:class:`~summarizedexperiment.SummarizedExperiment.SummarizedExperiment` properties to the specified path. Mostly for reuse in derivatives of SE. 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. """# save OBJECT_info={"summarized_experiment":{"version":"1.0","dimensions":list(x.shape)}}dl.save_object_file(path,"summarized_experiment",_info)# save assays_assay_names=x.get_assay_names()iflen(_assay_names)>0:_assays_path=os.path.join(path,"assays")os.mkdir(_assays_path)withopen(os.path.join(_assays_path,"names.json"),"w")ashandle:json.dump(_assay_names,handle)for_aidx,_anameinenumerate(_assay_names):_assay_save_path=os.path.join(_assays_path,str(_aidx))try:dl.alt_save_object(x.assays[_aname],path=_assay_save_path,**assay_args,**kwargs)exceptExceptionasex:raiseRuntimeError("failed to stage assay '"+_aname+"' for "+str(type(x))+"; "+str(ex))# save row data_rdata=x.get_row_data()if_rdataisnotNoneand(_rdata.row_namesisnotNoneor_rdata.shape[1]>0):dl.alt_save_object(_rdata,path=os.path.join(path,"row_data"),**data_frame_args)# save column data_cdata=x.get_column_data()if_cdataisnotNoneand(_cdata.row_namesisnotNoneor_cdata.shape[1]>0):dl.alt_save_object(_cdata,path=os.path.join(path,"column_data"),**data_frame_args)_meta=x.get_metadata()if_metaisnotNoneandlen(_meta)>0:dl.alt_save_object(_meta,path=os.path.join(path,"other_data"),**kwargs)
[docs]defread_common_se_props(path,**kwargs):"""Read shared properties from a directory containing :py:class:`~summarizedexperiment.SummarizedExperiment.SummarizedExperiment` or its derivatives. Args: path: Path to the directory containing the object. Returns: A tuple containing row data, column data and the assays. """_row_data=None_rdata_path=os.path.join(path,"row_data")ifos.path.exists(_rdata_path):_row_data=dl.alt_read_object(_rdata_path,**kwargs)_column_data=None_cdata_path=os.path.join(path,"column_data")ifos.path.exists(_cdata_path):_column_data=dl.alt_read_object(_cdata_path,**kwargs)_assays={}_assays_path=os.path.join(path,"assays")ifos.path.exists(_assays_path):withopen(os.path.join(_assays_path,"names.json"),"r")ashandle:_assay_names=json.load(handle)for_aidx,_anameinenumerate(_assay_names):_assay_read_path=os.path.join(_assays_path,str(_aidx))try:_assays[_aname]=dl.alt_read_object(_assay_read_path,**kwargs)exceptExceptionasex:raiseRuntimeError(f"failed to load assay '{_aname}' from '{path}'; "+str(ex))return_row_data,_column_data,_assays