ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GFFcompare 组装评估:编码体系、输出解读与参数避坑

GFFcompare 组装评估:编码体系、输出解读与参数避坑 1. GFFcompare到底在解决什么比对难题1.1 从一批注释文件堆到桌面说起如果你做过转录组组装多半经历过这个场景StringTie 跑完几个样本手里攒下五六个 GTF每个里面转录本 ID 五花八门同一个基因在不同样本里被切成好几段外显子边界还差那么几个碱基。这时候导师或者同事丢过来一句拿 GFFcompare 比一下你照着敲了命令屏幕上刷过几行日志目录里多出.stats、.tracking、.tmap、.refmap、.loci和一个.combined.gtf然后……就卡住了。那几个字母、c、j、u到底代表什么敏感度和精确度两条数字怎么解读u类占了一大半是好事还是坏事GFFcompare 就是干这件事的工具把一份或多份转录本注释GTF/GFF互相比较并且和参考注释比对给出结构层面的分类、统计和评估指标。它最初脱胎于 Cufflinks 工具链里的 Cuffcompare后来独立出来由 CCBCenter for Computational Biology, Johns Hopkins维护现在是 StringTie 生态里做组装评估的事实标准。搞懂它你才能回答我的组装到底好不好这个问题而不是只盯着 log 里一句 done 自我安慰。我这篇不打算复述官方文档的参数列表——那种内容你随手gffcompare -h就能看到。我更想聊的是那套编码体系背后的判定逻辑是什么、每个输出文件真正该怎么用、参数在什么场景下会改变结论、以及我实际踩过的那些坑。文章面向已经会跑命令行、但被 GFFcompare 结果绕晕的转录组分析人员也适合刚接手组装项目、想把评估做扎实的同学。版本差异我会专门提醒因为它确实坑过我不止一次。1.2 为什么不能直接 diff 两个 GTF 文件很多人第一反应是diff a.gtf b.gtf或者写个脚本比transcript_id。这条路走不通原因有三层理解了这三层你才明白 GFFcompare 存在的必要性。第一层是坐标容差。两个组装器对同一个外显子边界的判断可能差 1 到 50 个碱基尤其在外显子-内含子交界处测序读段跨 junction 的证据强弱不同边界就会抖。如果做严格字符串比对这些几乎一样的转录本会被判成完全不同结果里全是假阴性。GFFcompare 用了一套容差机制比如-d、-e控制距离把边界接近的转录本归到一起。第二层是结构等价而非文本等价。一条转录本的本质是它的内含子链intron chain也就是外显子边界的序列组合。两条转录本外显子数目一样、每个 junction 坐标一致就是结构等价哪怕transcript_id完全无关、起点终点差几个碱基。GFFcompare 的核心比对对象就是内含子链而不是字符串。第三层是同一位点存在多转录本。一个基因位点可以产出多个剪接异构体它们共享部分外显子、又各自有独特外显子。这种部分重叠的关系没法用布尔值回答必须用一套分级编码来描述重叠到什么程度。这就是、c、j、m这一串字母的来历。所以GFFcompare 解决的不是两个文件一不一样而是两份注释之间每一条转录本在结构上如何对应。这个定位转变过来后面所有细节都会顺很多。1.3 GFFcompare 内部干了三件事很多人把 GFFcompare 当成一个黑盒其实它一次运行做了三件相对独立的事拆开看会清晰非常多。第一件是合并merge/collapse。当你给它多个输入 GTF 时它先把所有输入里的转录本放在一起做去冗余产出一个非冗余的并集集合也就是.combined.gtf里的TCONS_xxxx转录本。注意这一步是先于比对发生的。也就是说如果你传了 3 个样本.stats里Query mRNAs的数字对应的是并集转录本数量不是三个样本数量之和。这个细节我第一次用时没意识到白白困惑了半天。第二件是比对compare。把并集或者你给的单个文件和-r指定的参考注释逐条比对按容差规则判定结构关系给每条转录本打上分类编码。第三件是统计stats。基于上面的比对结果在碱基、外显子、内含子、内含子链、转录本、位点六个层级上分别算出敏感度Sensitivity和精确度Precision并统计漏掉/新增的外显子、内含子、位点数量。提示如果没有指定-r第三件统计里就不会有敏感度和精确度只剩两两之间的分类关系。想评估组装质量-r基本是必给的。理解了这三件事的边界你就知道.combined.gtf是合并的产物.tracking、.tmap、.refmap、.loci是比对的产物.stats是统计的产物。不同文件对应不同阶段互不混淆。2. 那套字母编码才是 GFFcompare 的通用语言2.1 编码的优先级先认亲再谈别的GFFcompare 给每条输入转录本打出的是一个单字符分类编码外加可能的前缀比如就是最高等级。关键点在于编码不是叠加的而是按优先级选一个。两条转录本可能同时满足多个关系的条件GFFcompare 会按固定顺序挑优先级最高的那个作为最终编码。这个优先级顺序大致是ckmnjeopsxiyu为什么要有优先级因为一条转录本可能既和参考某条转录本共享一个 junction满足j的条件又整体被参考包含满足c的条件。这时候显然应该报被包含这个更强的结论。优先级本质上是从强到弱描述结构相似性的一个刻度表。理解了这个排序你读.tracking时就不会疑惑为什么它明明是 novel却被标成了c。因为c的优先级更高说明它确实被某条参考转录本完整包含只是内部结构可能还有差异但分类上按包含处理。2.2 匹配类编码、c、k这三个是最高优先级的编码代表和参考有明确的容纳或匹配关系。表示内含子链完全匹配。多外显子转录本要求每一段内含子的起止坐标都一致链方向一致单外显子转录本要求外显子边界落在容差之内或完全一致取决于版本。这是最强的一致性通常用来统计完全被参考支持的转录本数量。做组装评估时数量除以参考转录本总数就是转录本层级的敏感度来源之一。c表示输入转录本被参考转录本包含contained。也就是说输入的内含子链是参考内含子链的一个子集——输入可能少了一两个外显子但保留的那部分 junction 都跟参考对得上。这种转录本往往是参考里已经存在、但被组装成了更短版本的情况或者参考本身有更长的异构体。k表示参考转录本被输入包含reverse containment。方向反过来输入更长参考是它的子集。这种情况常见于你把两个注释版本对比时新版本把两个旧异构体连成了一条更长转录本。这三个的区别用一句话记是相等c是输入被参考包住k是参考被输入包住。方向感很重要很多人在读.tmap时会记反。2.3 结构变体类编码m、n、j、e、o这一组是有关系但不等同的地带也是组装结果里数量最多的一批。m是内含子保留retained intron。输入的转录本里至少有一段内含子在参考里是作为外显子存在的。这在真核生物里很常见尤其在某些组织或胁迫条件下会发生可变剪接导致的内含子保留。GFFcompare 把这类标成m提醒你这里可能存在生物学上的剪接事件也可能只是组装噪声。n是新异构体none也有说 novel isoform。两条转录本的内含子链互不包含但至少共享一个剪接位点。翻译成人话就是这条输入的转录本和参考某条转录本用的是同一套剪接位点的一部分但组合出了参考没有的新结构。这通常是真实的新剪接异构体的信号值得细看。j是多外显子、至少一个 junction 匹配。比n更弱一点表示它和参考共享了至少一个剪接位点但整体结构差异较大。很多组装出来的 novel 转录本落在这个类。e是单外显子转录本部分覆盖参考的内含子。这类比较尴尬——单外显子转录本本身就难以判断它可能是真实的单外显子基因也可能是基因组 DNA 污染、或者未剪接的前体 RNA。GFFcompare 把这种跨在内含子上的单外显子单列出来方便你后续过滤。o是其他同链重叠。凡是落在同链、有重叠、但前面几个类都不满足的都归到这里。这是一个兜底类信息量不大主要用来判断有没有关系。我一般会重点盯、n、m三类的绝对数量和占比。n和m太高说明组装器在参考之外发现了大量结构要么是真发现要么是噪声太低则说明组装和参考对不齐。2.4 反向与内嵌类编码s、x、i、y这一组是最容易被误读的因为它们大多暗示方向或嵌套出了问题。s表示反链上的内含子匹配。也就是说转录本和参考共享一个 junction但链方向相反。这几乎总是坏消息——要么是链特异性建库处理时方向搞反了要么是注释本身链信息有误。如果你的链特异性数据里s类异常多第一个要怀疑的就是链方向参数。x是反链上的外显子重叠。同样提示链方向问题。i是完全落在参考内含子内部intronic。这类转录本在参考里找不到对应的外显子结构整条都嵌在某个参考基因的内含子里。有可能是新的独立基因、可能是内含子里的非编码转录本、也可能是注释不完整导致的假象。GFFcompare 提供-C参数可以把这类直接丢掉。y是转录本的内含子包含了参考contains reference within intron。方向和i反过来是输入的内含子把参考整条包进去了。s、x两类一旦出现明显数量优先排查链方向i、y两类则要结合基因组注释的完整度来判断。2.5 无中生有与特殊类u、r、pu是unknown / intergenic表示这条转录本和参考没有任何重叠落在基因间区。这是最能引起误解的一个类。r是重复序列重叠。只有在提供了基因组序列-s参数时才可能被识别。它表示这条转录本和基因组里的重复元件有重叠很可能来自转座子或低复杂度区域可信度存疑。p是可能的聚合酶通读polymerase run-on。转录本和参考没有实际重叠但距离很近在-d指定的范围内。这类转录本很可能是上游基因转录没有正常终止、一路读下去产生的生物学意义有限但也要看具体距离。u类需要特别说清楚它不等于垃圾。u只表示在给定参考注释里找不到对应关系。如果你的参考注释本身不完整比如只包含蛋白编码基因没有 lncRNA 注释那么一批真实的 lncRNA 组装结果会全部落进u类。我看到过有人一看u类占比高就直接判定组装失败这是典型误判。正确做法是把u类转录本单独提取出来做序列比对或结构域搜索判断它们是不是新的非编码转录本。编码含义通常怎么解读内含子链完全匹配被参考完全支持c被参考包含组装短了或参考更长k包含参考组装长了或参考更短m内含子保留可能有真实剪接事件n新异构体潜在新剪接重点看j至少一个 junction 匹配结构差异较大e单外显子覆盖内含子需过滤或核实o其他同链重叠兜底类p可能通读距离近但无重叠s反链内含子匹配链方向疑似错误x反链外显子重叠链方向疑似错误i落在参考内含子内内含子区转录本y内含子包含参考嵌套关系u与参考无重叠基因间区未必是垃圾r与重复序列重叠需-s才能识别3. 六个输出文件到底哪个该看3.1.stats六层刻度的敏感度与精确度.stats是我打开的第一个文件也是信息密度最高的一个。它由几块组成先是几个总览数字Query mRNAs、Reference mRNAs、超级位点数量然后是六个层级的敏感度和精确度最后是错配的明细统计。六个层级从细到粗分别是Base level碱基层级、Exon level外显子层级、Intron level内含子层级、Intron chain level内含子链层级、Transcript level转录本层级、Locus level位点层级。敏感度和精确度的定义必须先说清楚否则数字读反是常事敏感度 Sn TP / (TP FN)衡量参考里有多少被你的组装找到了。精确度 Pr TP / (TP FP)衡量你组装出来的有多少是靠谱的。以转录本层级为例TP 是和参考完全匹配的转录本数FN 是参考里没被匹配上的转录本数FP 是你组装出来但参考里没有的转录本数。所以敏感度低意味着漏了精确度低意味着多了。层级越粗数字通常越高这是正常的。碱基层级只要碱基重叠就算对容易虚高转录本层级要求整条结构一致数字必然低一截。看结果时一定要认准层级我见过有人拿碱基层级的 99% 去汇报结果被问转录本层级哑口无言。.stats后半段的 Missed exons / Novel exons / Missed introns / Novel introns / Missed loci / Novel loci则是把错配拆到具体类别方便定位到底是边界问题还是结构问题。如果 Missed introns 特别多说明组装没找到应有的剪接如果 Novel introns 特别多说明组装在参考之外造出了很多剪接结构。3.2.tracking每条转录本的户口本.tracking是我认为最被低估的文件。它以并集转录本TCONS_xxxx为单位一行记录一条转录本在不同输入样本和参考里的对应关系。列的结构大致是第一列并集转录本 ID第二列所属位点 IDXLOC_xxxx接着每个输入样本一列记录该样本里对应的原始转录本 ID最后一列是参考里对应的转录本及其分类编码。这个文件的价值在于跨样本追踪。想知道某个新发现的异构体在哪几个样本里都组装出来了查这一行几个样本列都有值说明它是可重复的只有一个样本列有值那就要怀疑是不是噪声。想做差异剪接分析、或者手动筛 novel 转录本从.tracking入手比从.tmap高效得多。我常用的一个操作是筛出所有编码为n新异构体、并且在至少两个样本中都出现的转录本这些是可信度最高的候选新剪接事件。用简单的awk过滤就能做不需要写复杂脚本。3.3.tmap与.refmap方向相反的两张映射表这两个文件容易搞混因为它们字段结构几乎一样方向却完全相反。.tmap是从输入转录本出发列出每条输入query转录本最匹配的参考转录本字段包括参考基因 ID、参考转录本 ID、分类编码、查询基因 ID、查询转录本 ID、外显子数、FPKM/TPM、覆盖度、长度等。想回答我这条组装转录本对应参考的哪条查.tmap。.refmap是从参考转录本出发列出每条参考转录本对应的所有输入转录本。想回答参考里的这条基因我组装出了几个版本查.refmap。评估参考基因的召回情况时.refmap更顺手。两个文件里都有class_code列这就是第 2 节那套编码的来源。FPKM、TPM、cov这几列只有在你输入的是 StringTie 输出带这些属性时才有意义输入的是纯 GTF 时可能为空。3.4.loci与.combined.gtf位点视角与合并结果.loci文件以位点为单位给出每个超级位点super-locus包含哪些转录本、和参考的关系。做位点层级的统计或者想快速定位哪些区域是全新的这个文件很方便。.combined.gtf则是去冗余之后的并集注释里面是TCONS_xxxx。很多人把这个文件当成最终组装结果直接拿去做下游。这没问题但要清楚一件事它是按容差规则合并过的转录本边界可能被你原来的单样本结果略有调整。如果你对边界精度有严格要求得回头核对合并前后的差异。另外提一句.combined.gtf的转录本 ID 前缀可以通过-p参数自定义。默认是TCONS和 StringTie 的--merge保持一致。如果你做的是多项目对比建议改一下前缀否则不同项目的 ID 撞车下游脚本解析时会很痛苦。4. 参数怎么配才不白跑4.1 基础命令骨架最朴素的用法就是单文件对参考gffcompare -r reference.gtf -o mycmp assembled.gtf-r指定参考-o指定输出前缀默认gffcmp最后跟输入。跑完得到mycmp.stats、mycmp.tracking等一套文件。多文件的情况gffcompare -r reference.gtf -o mycmp sample1.gtf sample2.gtf sample3.gtf这时它会先合并再去比对.stats里的 Query 数量对应合并后的并集。文件多了命令行会长可以用-i传一个列表文件每行一个 GTF 路径清爽很多。这里有个很实际的取舍你要评估的是单个样本的质量还是整体的质量如果是前者应该一个样本单独跑一次得到各自的敏感度/精确度如果是后者比如做 StringTie--merge之后的共识注释评估才把所有样本一起传。混在一起跑单样本的问题会被平均掉看不出差异。我刚开始做的时候就把两种混了导致某个样本的组装问题一直没暴露出来。4.2 距离参数-e与-d-d控制TSS转录起始位点聚类的最大距离默认 100 bp。它影响的是把哪些转录本算作共享同一起始位点——在判断p类聚合酶通读和位点合并时起作用。-e控制外显子合并/邻近外显子的最大距离也默认 100 bp主要影响单外显子转录本的归并。这两个参数调大会把更多差不多的转录本归到一起编码往更强的方向走更多、c敏感度数字会好看但可能把真实的结构差异掩盖掉。调小则相反能区分更细的结构但会把边界噪声放大成假差异。我的经验是除非你有明确的生物学依据否则别动默认值。100 bp 是经过大量数据验证的折中。真有特殊需求比如基因组特别紧凑的物种调完后一定要对比一下参数变化前后的.stats看编码分布怎么变。如果数量突然暴涨多半是容差太松了。4.3 过滤类参数-C、-M、-R这些开关GFFcompare 提供了一批过滤参数作用是把某些明显不重要或存疑的转录本从统计里剔除。用不用、怎么用取决于你的分析目标。-C会丢弃完全落在参考内含子里的输入转录本也就是第 2 节讲的i类。如果你的参考注释已经很完整只想看基因区的组装质量加-C能让.stats更干净。但如果你怀疑参考漏注释了内含子区的转录本就不能加。-M忽略单外显子转录本。单外显子转录本在 NGS 数据里噪声很大很多组装器会输出大量短的单外显子框。如果你只关心多外显子基因的结构-M能显著提升精确度数字。代价是可能漏掉真实的单外显子基因。-R则在有-r时把参考限制到与输入有重叠的那部分再做统计。这个开关在我只想评估我对已知基因的复现程度时很有用因为它排除了参考里那些根本不该被表达检测到的基因对敏感度的稀释。需要提醒的是不同版本的 GFFcompare 在部分过滤参数的语义上有细微差异。我遇到过升级版本后同一批数据.stats数字变化的情况。稳妥做法升级后先用旧版本跑一遍已知数据做基准确认数字解释没变再上生产。注意过滤参数会改变分母统计基准所以带过滤和不带过滤的结果不能直接横向比较。要么全程带要么全程不带别一会儿加-C一会儿不加。4.4 链与序列参数-s-s用来指定参考基因组序列文件FASTA。它主要影响两件事一是帮助判断链方向二是启用重复序列重叠检测r类。如果你的数据是链特异性建库或者你想知道哪些组装转录本落在重复区这个参数就值得加。代价是运行时间会明显变长因为要读基因组、做序列比对。我在处理哺乳动物基因组时加-s后运行时间从几分钟涨到将近半小时。所以平时做快速评估可以不加只有在需要精细判断链方向或排查重复污染时才加。链方向问题的典型表现就是第 2 节说的s、x类偏多。如果你的链特异性数据里这两类占比超过几个百分点先别急着下结论用-s重跑一次看是不是链判断被数据本身误导了。参数作用建议-r指定参考注释做评估时几乎必给-o输出前缀建议改避免多项目撞名-p并集转录本前缀多项目场景建议自定义-T不生成 tmap/refmap只要 stats 时可加省时间-i传入文件列表多文件时用命令行更清爽-s参考基因组序列判链/查重复时加耗时会涨-e邻近外显子最大距离默认 100非必要不动-dTSS 聚类最大距离默认 100非必要不动-C丢弃落在参考内含子的转录本参考完整时才用-M忽略单外显子转录本只看多外显子结构时用-R参考限制到有重叠部分评估已知基因复现时用5. 踩坑实录与结果解读的坑5.1 参考注释版本不对全部白跑这是最隐蔽也最致命的坑。你以为参考是GRCh38的注释实际用的是GRCh37版本坐标整条错位结果.stats里敏感度低得离谱编码一片u和o你还在怀疑是不是组装器出问题了。排查方法很直接先用head看一下 GTF 的坐标范围和染色体命名。染色体命名不一致是重灾区——有的注释用chr1有的用1比对时字符串对不上结果自然是全u。这种行为 GFFcompare 一般不会报错它会默默把所有转录本当基因间区处理特别坑。我的做法是在跑之前固定做一次一致性检查参考、组装、基因组三者的染色体命名必须统一用cut -f1 reference.gtf | sort -u和组装文件对比一下几秒钟的事能省掉几小时的返工。5.2 链特异性方向搞反链特异性建库的dUTP协议方向不同工具的处理约定不一样。如果建库方向在 StringTie 阶段就搞反了组装出来的转录本链信息和参考相反GFFcompare 就会报大量s、x类。判断依据是如果s加x占了显著比例而你的建库是链特异性的基本可以确定方向反了。修复方式是回到上游调整 StringTie 的链特异性参数--rf或--fr重新组装再比。不要指望 GFFcompare 帮你修它只负责报告。这个坑我跟它纠缠过整整一个下午最后发现是--rf和--fr用反了。提醒一句这两个参数的语义要对着你建库试剂盒的说明书确认别凭印象。5.3 把u类当垃圾丢掉前面提过一次这里再强调一遍因为它真的太常见。u类占比高第一反应往往是组装质量差然后直接把u类删掉。但如果你的参考注释只覆盖了蛋白编码基因那全长非编码 RNA、反义转录本、增强子 RNA 全都会落进u类。把这批直接丢掉你等于扔掉了这次组装最有价值的新发现。正确的处理方式是把u类转录本单独提取出来统计它们的长度分布、外显子结构、是否有多外显子剪接、是否在多个样本里可重复。如果它们结构完整、跨样本可重复、长度合理那大概率是真实的新转录本值得单独做下游验证。我手上就有一个项目最后发出来的核心结论正是从u类里挖出来的。5.4 单外显子转录本拉低精确度单外显子转录本是精确度的重灾区。NGS 数据里基因间区的单外显子组装框大量存在它们落进u或o类成了精确度公式里的 FP假阳性把精确度拉得很低。这时候要区分是精确度真的低还是被单外显子框拖累了最直接的办法是加-M重跑一次对比加与不加的.stats。如果精确度从 60% 跳到 85%说明问题主要出在单外显子上如果变化不大那才是多外显子结构本身有问题。这个对比实验我强烈建议每个项目做一次能帮你快速定位问题方向比盯着单一数字瞎猜强得多。5.5 GTF 属性格式不合法导致静默出错GFFcompare 对 GTF/GFF 的属性格式有一定要求尤其是transcript_id和gene_id这两个字段。如果属性里少了transcript_id或者引号、分号格式不规范GFFcompare 可能不会明确报错而是给出奇怪的结果——比如所有转录本都被当成独立的或者统计数量对不上。遇到结果看起来不太对但没报错的情况我第一件事就是把输入 GTF 喂给gffread或者做个格式检查确认属性完整。规范的做法是从源头保证——StringTie 输出的 GTF 一般是合规的问题多出在手动拼接或者是第三方工具导出的注释上。提示养成习惯跑 GFFcompare 前先grep -c transcript_id input.gtf对比一下总行数两者接近才说明每个转录本都有 ID。5.6 敏感度和精确度看错了方向最后一个坑是解读层面的。敏感度和精确度一高一低的时候很多人第一反应是整体质量不错但如果敏感度 90%、精确度 50%实际含义是参考里九成被你找到了但你多报了一倍的东西。这在组装场景里可能是过度组装反过来敏感度低精确度高则是漏报严重。更细致的做法是看层级之间的落差。如果碱基、外显子层级都很高但转录本、位点层级断崖式下跌说明你的组装在局部是对的但整体拼接结构不对——典型表现是转录本被拆成了好几段或者多个基因被拼成一条。这种情况去查.tracking和.loci往往能定位到具体的断点区域那里可能存在重复序列或复杂的可变剪接。6. 把它接进组装评估流水线6.1 从 StringTie 到 GFFcompare 的完整链路一个典型的组装评估流程大致是这样几段先分样本用 StringTie 组装得到一个样本一个 GTF如果用--merge做共识就先合并再评估然后用 GFFcompare 对参考做比对拿到统计最后根据统计和编码分布做判断。需要提醒的是--merge后的共识注释再拿去做 GFFcompare 时它的性质已经不是原始组装了——它已经做过一轮去冗余。所以这时候的敏感度/精确度更像是共识注释对参考的覆盖度而不是原始组装器的能力。两者不能混为一谈。我做评估时通常会跑两轮一轮是各样本单独比参考看单样本质量一轮是共识注释比参考看整体覆盖两组数字放在一起看才有全貌。6.2 手算敏感度与精确度做交叉验证虽然.stats直接给了数字但作为分析人员你最好能手算一遍验证尤其是当你怀疑某个数字异常时。方法是从.tmap和.refmap里数编码参考转录本总数记为 R。编码为的输入转录本数量记为 T。转录本层级敏感度 Sn ≈ T / R这里简化了严格来说敏感度是按参考侧算匹配上的比例。转录本层级精确度 Pr ≈ T / (输入转录本总数)。你自己算出来的数字如果和.stats差很多多半是某些过滤参数或者容差设置改变了分母值得回头核对。这招在我排查为什么更新版本后数字变了时特别有用。另外.stats里还会输出Matching transcripts和Matching loci的绝对值这两个数字比百分比更实在跨项目对比时我更倾向看绝对值。6.3 和其他评估工具怎么搭配GFFcompare 强在结构层面的比对它不关心转录本表达量、不关心编码潜能。所以完整的组装评估通常还要搭配别的工具表达量一致性可以用 StringTie 的-B输出配合其他量化工具核对。编码潜能可以用 ORF 预测工具如 TransDecoder 之类来判断u类转录本是不是有编码能力。转录本完整性可以用 BUSCO 之类的标记基因方法来评估。GFFcompare 的角色是给出结构对不对这个维度其余维度交给别的工具。别指望一个工具把所有问题都回答了。我见过有人拿 GFFcompare 的精确度低就去否定整个组装忽略了那批被否定的转录本可能正是最有价值的新发现。我的习惯是GFFcompare 报告里先看六个层级的敏感度/精确度拿到整体印象再重点看n和u两类的绝对数量最后结合.tracking判断候选转录本的跨样本可重复性。三步下来一份组装的质量画像基本就清晰了。最后分享一个我常用的小技巧把.stats里的敏感度、精确度按层级做成一张表重复跑不同参数组合把结果竖着排在一起。参数容差、过滤开关对结果的影响一目了然比一次跑一个来回对比高效得多。这套对比表我在每个组装项目里都会留一份事后复盘时特别管用也能帮你快速回答这个数字为什么比上次高这类问题。
返回列表