常见问题
1. 输入文件的格式是什么样的?
答:SDAS支持SAW count,SAW gef2h5ad,SAW aggr(alpha ver.)的输出文件;同时支持用户按照SDAS输入数据格式描述自行准备的文件。
2. 细胞注释模块有5种算法,Spotlight\cell2location\RCTD\Tangram均需要对应的scRNA-Seq数据,SDAS是否提供,如果不提供,用户应该如何准备?
答:SDAS软件暂时不提供细胞注释的单细胞数据,用户需要按照使用手册中的格式说明来准备h5ad文件。
3. SDAS中的各模块支持scRNA-Seq数据分析吗,如果支持,用户应该如何准备单细胞数据?
答:SDAS中的dataProcess,DEG, geneSetEnrichment, inferCNV,CCI, trajectory,转录因子分析模块均支持scRNA-Seq数据分析,用户按照使用手册准备输入文件(h5ad或rds)即可。
4. 基于SDAS各模块输出结果,进行可视化作图,是否有支持方案?
答:SDAS的每个模块具有独立的环境,且每个环境中安装有jupyter kernel(ipykernel/IRkernel),支持用户直接调用该环境使用Jupyter Notebook等交互式环境画图。
5. 输入文件h5ad的版本问题?
答:未适配Anndata 0.11.0+新格式,读取含None的h5ad时会报错(报错特征:TypeError: Can't implicitly convert non-string objects)。建议用户预处理h5ad写入前清除所有None,以下是参考代码:
import anndata as ad
def remove_none_before_write(adata: ad.AnnData) -> ad.AnnData:
"""递归移除adata中所有None值,适配SDAS"""
# 处理uns
for k in list(adata.uns.keys()):
if adata.uns[k] is None:
del adata.uns[k]
elif isinstance(adata.uns[k], dict):
# 递归清理嵌套dict
adata.uns[k] = {subk: subv for subk, subv in adata.uns[k].items() if subv is not None}
# 处理obs、var(含None的列转NaN或删除)
adata.obs = adata.obs.dropna(axis=1, how='all') # 全None列删除
adata.var = adata.var.dropna(axis=1, how='all')
# 处理layers、obsm、varm等
for k in list(adata.layers.keys()):
if adata.layers[k] is None:
del adata.layers[k]
return adata
# 使用示例
adata = ad.read_h5ad("your_data.h5ad")
adata_clean = remove_none_before_write(adata)
adata_clean.write_h5ad("data_for_sdas.h5ad") # 无None,SDAS可正常读取