1. 零代码单细胞全流程分析,到底能做什么
先说个在我圈子里反复出现的场景:实验室没有专职生信人员,师兄师姐懂一点R但只够处理bulk转录组,老板突然丢来一个单细胞项目,研究对象是临床样本,合作方只给了GEO登录号。你想上手,打开教程一看,第一步是配置conda环境,第二步是装Seurat,第三步是解决依赖冲突——然后就没有第三步了,因为你已经被劝退了。
这篇文章要解决的,就是这种“想做单细胞数据全流程分析,但写不了代码”的困境。我把我过去两年用零代码工具反复跑通单细胞数据的路径完整梳理一遍,覆盖从GEO数据下载、表达矩阵处理、质量控制、降维聚类、细胞注释,到差异分析和结果可视化的完整流程,全程不需要写R、不需要写Python,只要会用鼠标点按钮、看得懂常见英文界面,就能把一套标准分析跑完。
先给结论:零代码单细胞分析完全可行,尤其在样本量不大、分析需求集中在标准流程的场景下,图形化平台基本覆盖了Seurat主流程的8成功能。这篇文章适合所有没有编程基础但需要独立完成单细胞分析的医学生、临床医生、刚进实验室的低年级研究生,也适合那些想先跑通全局再回头补代码的人。你不需要懂什么数据结构、什么正则表达式,但你需要理解每个分析步骤在做什么——这才是零代码分析真正考验人的地方:工具帮你省去了敲代码的时间,但不会帮你省去理解数据的功夫。
我还会把每个环节的“为什么这么设置参数”“这个步骤不做事后会怎样”讲清楚。因为零代码平台最大的陷阱是:按钮太好点了,你很容易在完全不知道某个参数含义的情况下点了一路“下一步”,最后拿到一张漂亮的UMAP图,却完全不知道它是否可信。这篇文章就是帮你把中间这层黑盒揭开。
2. 工具选型:零代码不等于没技术含量
2.1 主流零代码工具与平台的横向对比
目前市面上能承担单细胞全流程分析的零代码路径,我实测下来主要分三类:
一类是商业化云分析平台,国内的华大、联川、新格元、欧易等生信服务公司基本都有面向科研用户的图形化分析平台,国外的10x Genomics官方也出了Cloud Analysis。这类平台的特点是:内置了从Cell Ranger到Seurat主流程的完整pipeline,你上传数据后按图形界面指引操作即可,平台会自动完成比对、定量、质控和基础分析。优点是无脑省事,缺点是部分平台导出数据的自由度有限。
第二类是开源的交互式可视化软件,典型代表是CELLxGENE(CZI出品)和UCSC Cell Browser。严格说它们不是分析平台,而是“查看和探索”平台,适合已有表达矩阵(比如从GEO下到的h5ad文件)后快速做质控判断、marker可视化、聚类结果浏览。这类工具的优点是免费、无需注册、对本地数据处理快,缺点是不具备完整的差异分析功能。
第三类是“半零代码”的网页端分析工具,比如singleR的在线版本、iDEP这类的转录组在线分析网站。它们能完成部分单细胞分析任务,但全流程打通时需要我经常在多个工具之间倒腾文件格式,比较麻烦。
我自己的使用结论是:如果你要独立完成一整套单细胞全流程分析,最推荐的是商用云平台的社区版或免费版。这些平台一般默认支持Seurat标准流程,免费额度对于单个数据集的分析完全够用,而且操作界面全中文、有教程视频,对零基础用户最友好。CELLxGENE这类工具更适合做结果验证和可视化补充,而不是作为主流程工具。
2.2 平台选型的判断标准与我的建议
很多第一次接触零代码分析的人会问我:到底选哪个平台好?我的回答是:不要先看功能列表,先看四个硬指标。
第一是数据出口是否自由。你辛辛苦苦分析完,能不能把完整的表达矩阵、细胞注释结果、差异分析表格导出来?有些平台是“进去了就出不来”的闭环生态,导出的格式受限,这会直接影响后续写论文投稿时补充材料的上传需求。我建议优先选支持导出10x标准格式或CSV/TSV格式的平台。
第二是是否支持公共数据直连下载。GEO、Single Cell Portal、CellxGene数据库上的公共数据集,平台能不能直接导入?能直连会省掉大量下载再上传的等待时间。我踩过最痛的坑就是选了某个不支持GEO导入的平台,下载了一个10G的h5文件,再传到云端,光是传输就花了一晚上。
第三是质控阶段的可视化深度。一个平台值不值得用,不要看它的UMAP跑得多快,要看它的质控模块有没有提供完整的基础统计图——基因数分布、UMI数分布、线粒体基因比例分布、细胞数统计。这些图在Seurat里是QA自动出的,但在很多阉割版平台里会被省略,导致你根本无法判断数据质量。
第四是差异分析的可定制程度。能不能自定义比较组?能不能选择阈值参数?是只提供默认的Wilcoxon检验,还是提供多个可选的统计方法?这些决定了你的结果能不能写进论文。
按这个标准筛下来,我个人最常用的组合是:主流程用国内某云平台的免费社区版,倒数据用CSV格式,结果可视化用CELLxGENE和手工整理后的图表。这套组合的好处是:既省了编程时间,又保留了足够的数据掌控力。
2.3 数据格式的一些必要基础
进入实操前,必须花三分钟把单细胞数据的几种常见格式说清楚,不然你在GEO下载数据时会直接懵掉。
目前最主流的是10x Genomics平台产生的数据,它在GEO上以三种形式存在:第一种是“三件套”稀疏矩阵,包含barcodes.tsv.gz(细胞条形码)、features.tsv.gz(基因名)、matrix.mtx.gz(表达矩阵),这可以说是最原始的10x格式,多数平台都能直接导入;第二种是h5格式,本质上同一个矩阵的HDF5打包文件,单个文件、体积略小,10x Cloud Analysis和大多数国内平台都支持;第三种是h5ad格式,这是Scanpy生态的标准格式,通常包含了别人预处理完的矩阵和注释信息,CELLxGENE可以直接加载,但部分商用平台的兼容性不一。
另外还有两类很容易搞混的格式:一类是R的rds/rdata格式,这是Seurat对象,保存了完整的分析结果包括UMAP坐标和marker基因列表,但零代码平台普遍不支持直接导入;另一类是纯CSV/TSV格式的表达矩阵,行是基因、列是细胞,这种最通用,几乎任何平台都能读,但下载时要注意看清是原始count还是已经normalize过的数据,这直接决定你后续步骤的起点,后面我会展开讲。
我给你的选型建议就是:能从GEO下到三件套或用默认的,优先下三件套;只有h5就下h5;实在只有CSV也能用。“零代码”少了一道命令行解压和格式转换的工序,但怎么找到正确的文件、怎么判断文件是否完整,这些基本功还是得补上。
3. 实操落地:从数据下载到细胞注释
3.1 第一步:去GEO数据库找数据集并下载表达矩阵
这一节是整个零代码流程的起点,也是很多人卡死的地方。我会按实际操作的顺序一步一步说。
首先是打开NCBI的GEO数据库(GEO DataSets界面即可),输入你的关键词组合。标准格式一般是“疾病/组织英文名 + single cell RNA-seq”或“scRNA-seq [Organism]”。比如你要研究肺腺癌的单细胞数据,就搜“lung adenocarcinoma scRNA-seq”;想限定物种,可以加“AND homo sapiens[Organism]”。搜索结果会有一堆Series,每条记录有GSE编号、样本数、物种、平台信息、发布日期。
选数据集时重点看三个信息:一是样本量,做单细胞分析一般每个GSE至少十几个样本起步才会有统计学意义;二是平台信息,优先选10x Genomics(GPL编号中能找到对应或者文章方法里说明的),这决定了你能不能用最常见的工作流程;三是看Supplementary file列表里到底有什么文件——这一步最好在进入下一步前就完成,否则分析到一半发现数据缺失会很崩溃。
具体到下载:点开GSE编号对应的页面,往下拉找到“Supplementary file”区域,里面一般有GSE编号开头的文件列表。这里我用一个很典型的例子来说明:如果你看到一个以“GSEXXXX_RAW.tar”结尾的压缩包,里面通常是每个样本一个子文件夹,包含barcodes.tsv.gz、features.tsv.gz、matrix.mtx.gz三个文件;如果你看到“GSEXXXX_matrix.h5”说明这是整个数据集打包好的单个h5文件;如果看到的是“processed data”文件夹下的CSV或者txt,那就是别人已经处理好的表达矩阵。
零代码平台的上传方式一般有三种:直接拖拽本地文件上传、通过URL链接导入、通过GEO号自动拉取。前两种最常用,我建议直接下载到本地再上传,虽然费一点流量,但最稳妥。有个重要操作:10x三件套在上传前不要解压,直接传gz压缩包,平台会自己识别;很多新手手贱把文件解压成文本导致格式识别失败,这个问题在第五部分我会细说。
3.2 第二步:数据上传与质量控制参数选择
数据上传成功之后得到的是“原始表达矩阵”,也就是每个细胞、每个基因的UMI计数矩阵。接下来有一个大坑要提醒你:很多GEO上传的数据不是原始count,而是经过normalize的CPM、TPM或者log1p后的结果。判断方法很简单,看数值——如果表达量都是整数,且大部分是0,原始count的概率很大;如果出现了小数,或者有负值,那大概率是已经标准化过的。
这两种数据的处理流程完全不同。原始count可以直接进入标准化的质控和下游分析;如果是已经标准化过的矩阵,你需要找平台有没有“跳过normalization”选项,如果有就勾选,没有的话分析结果会严重偏差。因为很多平台的默认流程是从count开始的,你的数据如果不是count,等于喂给它的第一步就是错的数据结构。
质量控制是零代码单细胞分析中最不能跳过的一步。核心是三看:看每个细胞检测到的基因数(nFeature_RNA),看每个细胞的UMI总数(nCount_RNA),看线粒体基因在表达总量中的占比(percent.mt)。
为什么看这三个?基因数太低说明这个细胞可能是空液滴或破损细胞——细胞碎了,mRNA跑了,能检测到的基因就少;基因数太高可能是两个甚至多个细胞被一个液滴包住(双细胞/多细胞);线粒体基因比例高说明细胞状态不好——健康的细胞应该有完整的胞浆RNA,线粒体RNA占比通常不高,细胞应激或者凋亡时,胞浆RNA降解,就只剩线粒体基因的count相对完整。
具体阈值怎么设?没有绝对统一的标准,我给的常规参考范围是:nFeature_RNA下限200,上限5000到6000;nCount_RNA下限500到1000;percent.mt不高于10%到20%。但这个一定要结合你的样本来源:比如肿瘤样本的免疫微环境里,T细胞天然基因数偏少,你用500的下限可能会把大片真正的T细胞过滤掉;肝细胞、心肌细胞的线粒体比例天然偏高,超过10%不代表质量差。所以我强烈建议:先用平台默认阈值跑一遍,看质控图里被过滤掉的细胞比例,如果过滤掉超过30%到40%,就要反思是数据本身太差,还是你的参数太严厉。
平台在质控模块一般会画出三张图基因数分布、UMI数分布、线粒体比例分布,你通过看峰的位置来定阈值,而不是照搬教程参数。这一步做完,平台会生成一个过滤后的新矩阵,后续所有分析都用这个过滤后的数据。
3.3 第三步:标准化、降维聚类与分辨率调参
质控完成之后进入分析主流程。零代码平台一般会把这一步做成“一键完成”,但我建议你把里面的参数页面展开看看——这决定了你的聚类结果长什么样。
标准化:目的是让不同细胞、不同样本之间的表达量可比。单细胞最常用的标准化方式是LogNormalize,即先对每个细胞的count数做比例归一化,再做log1p变换;较新的SCTransform方法能同时完成标准化和去除技术噪声,效果更好但对算力要求高。零代码平台默认一般就是LogNormalize,够用了。高变基因选择一般默认2000个,这个值不用太纠结,Seurat的标准流程就是这个。
降维的流程是:先对高变基因做PCA,PCA的结果可以理解为“提取了细胞间主要的差异特征、把几万个基因的空间压成几十个主成分”;然后基于PCA结果再做UMAP或者tSNE进行可视化。这里有一个很关键的参数选择:PCA主成分数量。平台默认可能是10到20,但更好的做法是看elbow plot(肘部图)——就是那个表示每个主成分解释了多大方差的折线图,你选择曲线变平缓之前的那几个主成分。零代码平台有的不展示elbow plot,那就用默认值15,对多数数据集够用。
聚类这一步,最重要的参数是resolution(分辨率)。分辨率控制的是聚类“颗粒度”:分辨率低,分出的群少而大,适合看主要细胞类型;分辨率高,分出的群多而细,适合找亚型。默认值一般是0.8,我个人的习惯是:先跑0.8看整体结构,如果想分离出更多亚群就调到1.0到1.2,如果发现过度细分导致一群细胞被切成好几片就调低到0.5。
UMAP和tSNE的选择上,零代码平台多数默认出UMAP。如果你只需要看分群结果,UMAP就够了;如果你想更好展示细胞之间的局部邻近关系,可以两者都跑。但注意:这两种都是可视化的降维方法,不应该根据哪个“看起来更好看”来选,更不应该为了论文图片好看反复调随机种子。真正判断聚类是否合理的标准,是看每个cluster的marker基因是否明确。
3.4 第四步:细胞类型注释的两种打法
聚类完成之后,你手上有了一堆编号为0、1、2、3……的细胞群,接下来要做的事是回答“这群细胞是什么细胞”——这一步叫细胞注释。
零代码平台上通常提供两种注释方法。第一种是自动注释,最常用的是SingleR,它把每个细胞群的表达谱与内置参考数据库做相关性比较,自动给出注释结果。优点是一键完成、速度快,缺点是对参考数据库依赖强,如果参考数据库与你研究的组织类型差异较大,注释可能不准——比如拿血液免疫细胞参考库去注释肿瘤组织中的基质细胞,结果就会比较离谱。
第二种是人工注释,也是最可靠的方法:利用已知的marker基因,通过FeaturePlot(特征图)或小提琴图看每个细胞群是否表达特定的标志基因。下面是几个最常用的谱系marker参考:
| 细胞类型 | 常用marker基因 |
|---|---|
| T细胞 | CD3D、CD3E、CD8A、CD4、IL7R |
| NK细胞 | KLRD1、NKG7、GNLY、KLRC1 |
| B细胞 | MS4A1(CD20)、CD79A、CD19 |
| 髓系细胞 | LYZ、CD14、FCGR3A(CD16)、C1QA |
| 内皮细胞 | PECAM1(CD31)、VWF、CLDN5 |
| 成纤维细胞 | COL1A1、COL1A2、DCN |
| 上皮细胞 | EPCAM、KRT18、KRT8、KRT19 |
| 少突胶质细胞 | MBP、MOG、PLP1(脑组织相关) |
我的实操建议是:先用自动注释跑一遍,得到一个初步参考意见;然后拿marker基因对你最关心的细胞群做人工验证。比如自动注释把cluster 3标注为NK细胞,你就画一下KLRD1、NKG7、GNLY这几个基因的FeaturePlot,如果在cluster 3上高表达、其他群阴性,这个注释才算站稳脚跟。
如果遇到一个细胞群表达特征不清晰,两个marker都有点阳性但都不强,常见的情况是这个群是双阳性的过渡态或功能亚型。这时候可以结合别人已发表的同类组织单细胞图谱来对比判断,不建议盲目给一个看起来“什么都表达”的群强行命名。宁可先标注为“unknown/undefined”,留着后续精细分析,也不要硬贴一个错误标签,否则整个差异分析都会建立在错误的分组上。
4. 差异分析与可视化呈现
4.1 差异分析到底在比什么:分组逻辑
单细胞数据走到差异分析这一步,要先想明白一个问题:你究竟要比较什么和什么?这个问题看起来多余,但实际是很多初学者做得最混乱的地方。零代码平台的按钮很简单,但分析逻辑还得自己搞清楚。
单细胞差异分析有两种典型的分组设计。第一种是样本组间比较:比如疾病组vs对照组,你比较的是两个生物学分组之间的差异基因。做法是先把两组的细胞合并拿来做差异分析,或者更严谨一点,先计算出每个细胞群的组间差异。第二种是细胞亚群之间的比较:你关注的是某个细胞类型内部,比如T细胞亚群中cluster 0和cluster 1之间,谁的基因表达有显著差异。这两种比较的生物学意义完全不同,在平台里对应不同的操作:前者通常是对同一细胞类型在不同样本条件下的细胞做差异分析,后者是选两个cluster直接跑差异分析。
单细胞差异分析的统计方法最常用的是Wilcoxon秩和检验,这是Seurat默认的方法,零代码平台一般也是默认使用它。做组间比较时,我会先按细胞类型分好组,再对每个细胞类型做疾病vs对照的差异分析,这样得到的是一张“每种细胞类型里疾病改变了哪些基因”的结果表,信息量比把所有细胞混在一起比较有意义得多。这个操作在零代码平台上其实就是多选几次比较组、各跑一遍,不费劲。
4.2 结果表怎么读:平均log2FC、pct、p值
差异分析跑完之后你会拿到一张很长的表格,每行是一个基因,列是各种统计量。很多零代码用户看到表格就懵了,不知道哪列是干嘛的。这里把最核心的四列讲清楚:
avg_log2FC(平均log2倍数变化)表示这个基因在比较组和对照组之间的表达差异倍数。正值说明在“比较组”中上调,负值说明下调。注意阈值习惯:一般取|log2FC|大于0.25或0.5作为差异基因的筛选界值,保守一点的取1。对单细胞数据来说,因为表达量稀疏、dropout率高,log2FC通常不如bulk数据那么高,所以0.25的阈值不算太低,不要直接拿bulk转录组那套log2FC>1来套。
pct.1和pct.2分别代表这个基因在比较组和对照组中“有多少比例的细胞检测到了表达”。这两个值很重要:如果一个基因的平均表达差异很大,但pct.1只有5%、pct.2也只有5%,说明只有少数细胞在表达它,这个差异可能只是少数细胞贡献的,解释时要小心。
p_val_adj(校正后的p值)是多重假设检验校正后的显著性指标。因为一次差异分析要检验两万多个基因,如果直接用原始p值,假阳性会爆炸,所以必须看校正后的值。筛选标准一般是p_val_adj < 0.05。
我在零代码平台筛选差异基因时的操作是:先点导出这张表,然后在Excel里用筛选功能设三列条件:p_val_adj < 0.05,|avg_log2FC| > 0.5(或者0.25),pct.1或pct.2中至少一个大于0.1。这样筛出来的基因列表,既保证统计学显著,又保证有生物学意义,后续做富集分析也比较靠谱。
4.3 火山图、热图与特征图的出图技巧
差异分析结果拿到之后,最终呈现到论文里的,通常是三张核心图:火山图、热图、特征图/小提琴图。零代码平台一般都能直接生成前两种,但样式和可定制程度参差不齐。
火山图展示的是所有基因的差异情况,横轴是log2FC、纵轴是-log10(校正p值),橙色/红色点代表显著上调基因,蓝色代表显著下调,灰色是不显著的。出图时最需要调的是“阈值线怎么画”——一般会在图上叠加两条垂直虚线(log2FC的阈值)和一条水平虚线(p值阈值),让审稿人一眼看懂你的筛选标准。有些平台生成火山图时点太小、线条太粗,导出的DPI也低,我的解决办法是:如果平台导出图分辨率不够,就用差异表格数据在Excel里重新画散点图,效果反而更清爽。
热图展示的是关键差异基因在不同样本/细胞群中的表达,行是基因、列是细胞或样本。做热图要注意两个问题:一是基因数量不要太多,选top20到top50个差异基因就足够了,太多的话图全是马赛克一样的小格子根本看不清;二是要看平台是否提供按聚类分组排序的选项,让热图看起来有清晰的分块结构。
特征图(FeaturePlot)就是那个把基因表达量映射到UMAP坐标上的散点图。这张图在单细胞论文里出镜率最高,用来展示marker基因在细胞亚群中的表达位置。出图时最值得注意的是color scale,也就是从低到高的颜色映射范围,很多平台默认的最大值会受少数高表达细胞影响,导致整体颜色梯度不明显。如果平台允许,手动设置一个合理的颜色上限(比如99%分位数),让大部分细胞能看出梯度差异,而不是一片白色加几个红点。
另外还有一个小技巧:当你需要在一个亚群中展示某个基因的表达差异时,不要只用FeaturePlot全局图,可以再加一张小提琴图(VlnPlot)来展示这个基因在不同条件下的表达分布。这两种图放在一起,直观性和统计细节都有了。
5. 常见问题与避坑技巧实录
5.1 数据格式与下载阶段的高频坑
这个阶段的问题五花八门,但归纳起来就几个。第一个高频坑是解压错了文件。10x三件套如果是gz压缩包,直接传原始文件,不要手动解压成tsv文本。平台识别的是文件后缀名和内部格式,你一旦解压成纯文本,轻则平台报错,重则静默识别错乱——明明是一列列的矩阵,平台把第一行当表头、第一列当基因名,读进来之后基因数和细胞数对不上,你还在下一环节对着异常质控图发呆。第二个高频坑是下载的文件不完整。GEO的Supplementary file经常是几百MB到几个GB的包,浏览器直接下载很容易断掉,而下载工具显示“下载完成”时文件实际缺了末尾的几MB。判断方法:上传前先看gz文件的解压大小是否和网页标注一致,或者看压缩包能否正常打开。零代码平台上如果反复报“文件格式无法识别”并且文件体积异常偏大或偏小,十有八九是下载环节出了问题。
第三个坑是拿到的是pseudobulk矩阵而不是单细胞矩阵。有些GEO数据集上传的是每个样本一个总表达量文件(bulk样式的矩阵),行是基因、列是样本,这种数据没法做单细胞聚类分析。区分方法看列的数目:如果列数只有几十个到几百个,那是样本数而不是细胞数;真正的单细胞表达矩阵应该是几万列起。这一点在看Supplementary file列表时就要留心,很多带有“pseudobulk”字样的文件并不是你能直接用于单细胞零代码分析的对象。
5.2 质控阈值:为什么不能照抄别人的参数
我在第二部分强调过参数要看数据分布,这里展开说。很多零代码用户习惯性地从别人的教程里复制一套阈值,比如nFeature_RNA设200-6000、percent.mt设10%,然后套在自己的数据上,结果过滤掉了一半以上的细胞,或者过滤后图中出现了明显的异常群。
出现这种情况的根源在于:单细胞数据质量受到组织来源、解离方式、建库平台、测序深度等多方面影响。比如冷冻组织解离的细胞存活率天然低于新鲜组织,线粒体比例天然高;用10x V2和V3试剂的基因检出数和UMI深度有差异;肿瘤样本里的基质细胞与免疫细胞对酶解消化的耐受性不同。所以不同研究之间,指标的合理范围可以差很多倍。
我现在的做法是三步走:第一步,先看原始数据的分布图,确定每个指标的峰位置;第二步,用宽松阈值过滤掉明显的极端值(比如nFeature<200的、percent.mt>30%的),不要一上来就上严厉参数;第三步,跑一轮聚类,看结果中是否有高线粒体比例聚集的“坏死群”,如果有一个群集中高表达线粒体基因,再针对性地把它过滤掉。
有个经验数字可以给你参考:健康的单细胞数据集,质控后保留的细胞数一般在原始细胞数的60%到90%之间。如果你过滤后只剩下不到一半,先不要怀疑自己的阈值设置,而是应该回头想想是不是输入数据格式不对——比如把已标准化的数据当原始count输入。
5.3 聚类与注释阶段的不理想结果处理
聚类结果不理想是零代码用户最容易受挫的环节。常见表现有三种:分群过多过碎、分群太少看不出差异、部分细胞群的特征基因表达混杂。
分群过碎时,往往是你把resolution设高了,细胞群之间互相粘连、边界模糊,或者同一类细胞被切成了好几个碎片。处理方法是直接调低resolution数值。需要注意的是,改resolution不需要重头跑全部流程,平台一般在聚类参数模块里提供“重新聚类”的选项,只调分辨率即可。
分群太少,比如所有细胞都堆在一个大群时,先看是不是过滤参数太宽松混入了大量空液滴,再看是不是高变基因数太少(默认2000一般没问题)或者PCA主成分数太少。PCA主成分数设为5和设为20,聚类结果可以是天壤之别。
最让人头疼的是一种情况:某个群高表达的marker基因类型很多——比如一个群同时有一定程度的CD3D(T细胞marker)和LYZ(髓系marker)表达。这种情况大概率不是注释问题,而是数据本身有双细胞残留,或者是过渡态的细胞状态。零代码平台如果提供DoubletFinder工具(用于去双细胞),就在流程中加入这一步;如果不提供,可以在质控阶段用更严格的nFeature上限过滤一遍。对于过渡态细胞,我建议单独提取这个群做亚聚类,看能不能在更高分辨率下分成两个有明确特征的子群。
还有一点容易被忽视:批效应。如果你的数据来自多个样本、多个测序批次,UMAP上往往会出现“同类型细胞按样本聚在一起”的现象,而不是按细胞类型聚在一起。这在零代码平台上是比较难解决的,因为彻底去批需要Harmony或Seurat IntegrateData这些工具,部分商用平台虽有集成但用户参数干预有限。如果你的数据有严重的批效应,建议把样本信息作为分组变量做一个可视化检查,先判断有没有这个问题,再决定是全部分析还是按样本分层分析。
5.4 零代码分析前必须想清楚的三件事
第一件事:你的实验设计是否支持你想要的结论。单细胞分析产出的是“描述性结果”——你能发现疾病状态下某种细胞类型比例增加,你能发现某个亚群表达特定的基因,但你不能从关联推出因果。很多零代码用户做完差异分析看到某个免疫抑制基因高表达,就急着写“该细胞亚群导致免疫抑制”,这个逻辑链是断裂的。想想你的样本量:如果疾病组只有2个样本、对照组2个样本,差异分析结果往下游推结论会非常危险。
第二件事:隐私和合规问题。如果分析的是自己实验室的临床样本数据,上传到第三方云平台之前,一定确认平台的数据处理协议,最好脱敏后再上传。公共数据则不存在这个问题。
第三件事:结果的可重复性。所有平台上的分析参数、版本、随机种子都要记录在案。零代码平台唯一的劣势是透明度不如代码——代码写下来就是完整的分析日志,而平台操作步骤只停留在你的记忆里。我的习惯是每一轮分析都会用截图加批注的方式记录参数,这样写论文的methods部分时能直接贴内容,也让自己的分析可复现。
6. 一些实在的体会
我自己是从写R脚本做单细胞分析转型到大量使用零代码工具带新人的,所以两边的情况都算是摸过底。说句公道话:零代码平台确实会让人对分析过程的理解不够深,这是它的天然短板,但它带来的效率提升也是实打实的——以前教一个零基础学生做单细胞流程,光配环境就要一星期,现在一个下午就能让他在平台上完整跑通流程。
如果你想长期从事生信分析相关的工作,我还是建议你在零代码流程跑通之后,回去把R或者Python的基础语法补一补,毕竟平台不能覆盖所有冷门分析。但如果你的目标只是把手头的数据分析完、把论文发出来,不想在代码上耗时间,零代码路线完全能支撑你走到目的地。
最后给你一条实用建议:做第一遍分析的时候,每一步参数都记录成一个小表格,哪个参数、默认值、你改动后的值、改动原因。这个习惯能帮你快速定位分析过程中的问题,也是你最终写论文methods部分时最省心的素材。分析就是一次次尝试和修正,零代码只是把敲键盘这个姿势换成了点鼠标,要思考的内容一样都没少。希望这篇文章能帮你少走一点我走过的弯路。