两年前的一个下午,某位同事把一份拼接结果发给我,说三条测序读长怎么都拼不到一起去,软件给出的重叠区全是错配。我打开一看,峰图质量干净、峰间距均匀、信号强度正常,问题不在测序本身。把其中一条读长做了一次反向互补,三条序列立刻首尾相接,重叠区两百多个碱基,一致性百分之百。那是我第一次真正意识到,“反向互补序列”这五个字不只是教科书上的一个名词,而是每一个跟序列打交道的人早晚会撞上的一道坎。很多人第一次在拼接结果里看到这个说法时的反应都是懵的:明明是一条 DNA,怎么还分正反?翻过来之后原来的坐标怎么办?什么时候该翻,什么时候不该翻?这篇就把这件事从头捋一遍,从碱基配对的物理基础讲到拼接软件里那个按钮的实际作用,再把我自己踩过的几个坑摊开说清楚。
1. 把“反向”和“互补”拆开:这是两个独立动作
1.1 互补说的是配对关系,不是“长得像”
很多人一上来就把互补理解成“另一条链”,这个说法方向没错但不够精确,容易在细节上出问题。互补描述的是一种一对一的配对规则:腺嘌呤(A)配胸腺嘧啶(T),鸟嘌呤(G)配胞嘧啶(C)。这个规则不是人为规定的,而是被双螺旋的几何结构锁死的——A 和 T 之间形成两个氢键,G 和 C 之间形成三个氢键,同时一个嘌呤(A、G,双环结构)必须配一个嘧啶(T、C,单环结构),这样才能保证双螺旋的直径恒定在差不多两个纳米左右。如果两个嘌呤想配对,空间上会鼓出来一块;两个嘧啶想配对,又凹进去一块,整条链就没法维持规则的螺旋了。
理解这一点很重要,因为它解释了为什么 G-C 含量高的序列更“结实”。三个氢键对两个氢键,解链需要的能量明显更高,所以 GC 含量高的区域在 PCR 里更难拉开,退火温度要相应调高。很多人在设计引物时只看长度不看 GC,扩增效率忽高忽低,根子就在这里。
还有一个容易被忽略的点:互补是逐个位置对应的,它不改变序列的顺序。给定 5'-ATGCGG-3',写配对链的时候,A 对 T、T 对 A、G 对 C、C 对 G、G 对 C、G 对 C,得到的是 3'-TACGCC-5',位置顺序原封不动。这一步只完成了“互补”,还没有“反向”。
再补一个实操中经常遇到的细节:真实序列里不只有 ACGT 四种字符。混合碱基、简并碱基用一套国际通用的字母表示,反向互补的时候它们也必须跟着换,而且换的规则不是简单的“随便配一个”:
| 原字符 | 含义 | 互补后 |
|---|---|---|
| R | A 或 G(嘌呤) | Y |
| Y | C 或 T(嘧啶) | R |
| K | G 或 T(酮基) | M |
| M | A 或 C(氨基) | K |
| S | G 或 C(强键) | S |
| W | A 或 T(弱键) | W |
| B | C、G 或 T | V |
| V | A、C 或 G | B |
| D | A、G 或 T | H |
| H | A、C 或 T | D |
| N | 任意碱基 | N |
S 和 W 是自身的互补,N 也是。这一点在手工处理序列时特别容易翻车——我见过有人把 R 直接改成 C 或者 T,结果下游比对全线错乱。软件一般会自动处理这些,但如果你是自己写脚本或者用表格手工整理,这张表最好贴在显示器边上。
1.2 “反向”这个词,本质是在说方向标记
要理解“反向”,得先接受一件事:DNA 的一条链是有明确方向的,方向由两端化学基团的差异决定。一端是游离的磷酸基团,记为 5';另一端是游离的羟基,记为 3'。这两端在化学反应性上完全不同,聚合酶只认 3' 端那个羟基,别的都不认。
按行业惯例,我们写序列时默认从左到右是 5' 到 3'。这个约定看似无关紧要,实际上是一切麻烦的来源——因为一旦你从数据库里复制一条序列,别人问你“这是哪条链”,如果你答不上来,这条序列的生物学含义就是模糊的。同样一串 ATGC,代表正义链还是反义链,翻译出来的蛋白可能完全不一样。
所以“反向”这个操作,本质就是把整条序列的读取顺序倒过来,让原来的 3' 端变成新的 5' 端。ATGCGG 倒过来写成 GGCGTA。做完这一步还没结束,因为倒过来的同时每个位置上的碱基也得按照配对规则换成它的互补碱基,两个动作叠加,才是完整的“反向互补”。
顺序上有一点必须强调:先反向、再互补,和先互补、再反向,结果是一样的,两个操作可以交换。但如果你只做了一个,那就是错的。这是新手最常犯的错误,后面第 5 节会专门讲几个真实案例。
1.3 手算两遍,把这件事彻底钉死
光看定义容易产生“我懂了”的错觉,动笔算两遍才算真懂。第一个例子,取六碱基序列:
原始序列(5'→3'):A T G C G G 第一步:反向 G G C G T A 第二步:互补 C C G C A T 结果(5'→3'): CCGCAT验证方法很简单:把原始序列写成 5'-ATGCGG-3',它的配对链就是 3'-TACGCC-5'。把这条配对链反过来从左到右读,就是 5'-CCGCAT-3'。两者一致,说明计算正确。反向互补的结果,永远等于另一条链按 5'→3' 书写的序列——这句话是理解整个概念的钥匙,记住它比记公式有用。
第二个例子选一段回文序列,很多限制性内切酶的识别位点都是这种结构:
原始序列:G A A T T C 反向: C T T A A G 互补: G A A T T C结果和原来一样。这就是所谓的回文序列:它的反向互补等于它自身。这也是为什么很多酶的识别位点在双链上看起来“两边对称”——无论从哪条链读都是同一个序列,酶分子两个亚基各认一条链,方向都能对上。常见的六碱基识别位点里,回文结构占了绝大多数。理解这一点对后面判断序列方向很有用:回文位点不能用来判断方向,因为它翻过来还是自己,你没法从它身上看出正反。
2. 拼接软件为什么非要校正方向:读长天生是“单行道”
2.1 聚合酶只朝一个方向走,所以每条读长自带方向
测序这件事,无论用什么平台,底层逻辑都是“读取正在合成的链”。而合成这件事,酶只会往一个方向做——在已有链的 3' 端羟基上添加下一个核苷酸。所以新合成出来的链,5' 端是先合成的部分,3' 端是后合成的部分。仪器按时间顺序记录信号,读出来的序列天然就是5'→3'顺序。
关键在于:这个 5'→3' 是相对于新合成链而言的,而新合成链是和模板链互补的。这就意味着,你拿到的读长和原始模板之间是互补关系。如果你手上有两条读长,一条来自正义链模板、一条来自反义链模板,它们在序列空间里就是互为反向互补的关系,直接重叠比对永远对不上,必须先把其中一条翻过来。
打个比方:两个人分别沿着一条双车道公路的两侧走,一个从南往北,一个从北往南,各自记下沿途的路标。你要把两份记录对齐,就得把其中一份倒着念。序列拼接面对的是同一件事。
2.2 一批数据里方向混杂是常态,而不是意外
做过一段时间拼接的人都知道,一次实验里拿到的读长,方向往往是混的。造成混杂的原因有好几层:
第一层是测序引物的方向。常规的 Sanger 测序,正向引物和反向引物各测一次,得到的两个读长互为反向互补(严格说是分别从插入片段两端往里读,重叠部分互补)。这本来是设计好的一对,但如果你只挑了一部分送去测,或者中途换了引物,回来的一批数据方向就不统一了。
第二层是文库构建的随机性。片段化之后连入载体,插入片段的朝向本身是随机的(非定向克隆的情况),所以同一批克隆里,有的插入片段是正向进去的,有的是反向进去的。测出来的序列自然一半一半。
第三层是双端测序的读长配对。同一个片段两端各测一条,这两条序列在比对到参考上时方向是相反的,需要根据配对关系做方向校正。如果把这条信息丢了,两条 read 会被当成两条独立的、方向未知的序列处理,拼接质量会明显下降。
第四层是多片段混合样本。一次拼十几个片段的时候,谁跟谁是一组都要靠重叠区判断,方向更没有先验。
所以对拼接软件来说,自动判断并校正每条读长的方向,不是锦上添花的功能,而是能不能拼出结果的前提。这也是为什么几乎所有拼接工具都有“双重比对”或者“正反都试一遍”的机制。
2.3 方向错了,报错信息会伪装成完全不相干的问题
这是这一节里最值钱的部分。方向问题很少直接告诉你“方向错了”,它总是以别的面目出现:
- 重叠区一堆错配。两条本来完全一致的序列,一条翻了、一条没翻,比对上去就像随机序列,一致性可能只有 25% 左右(正好是随机匹配的期望值)。很多人看到这个数字第一反应是“污染了”“样本搞混了”,其实是方向问题。
- 假 SNP。如果两条序列方向相反但恰好有个局部能勉强对上,软件可能会在低严格度下强行拼接,产生一串虚假的碱基差异。这种假阳性在后续做变异分析时极难排除,因为峰图看着没问题,只是方向反了。
- contig 断成好几段。本该连成一条的两条读长拼不上,中间空出一段,你会以为是覆盖度不足,实际上补测再多也补不上,因为方向永远是反的。
- 嵌合序列。最隐蔽的一种。两条读长在某个回文区域勉强对上了(因为回文区域反向互补后仍是自己),软件从这里接着拼,把后半段接反了方向,产出一条自然界不存在的嵌合 contig。这种错误在核糖体 RNA 基因、重复序列区域尤其常见,因为那里天然富含回文和重复结构。
我自己的习惯是:只要看到某两条读长的重叠区一致性恰好落在 25%~35% 这个区间,第一反应就是去做一次反向互补再试。这个数字太有特征了,几乎就是方向问题的指纹。
3. 那套桌面拼接套件里,方向校正到底发生在哪一步
3.1 导入阶段:软件默认帮你做的事,未必是你想要的
大多数桌面拼接套件在导入读长时,都有一个和方向相关的选项,通常表述是“自动检测并调整读长方向”或者“允许反向互补匹配”。勾上之后,软件会在建立重叠关系时同时对每条读长的正、反两个版本做比对,取分数高的那个。这个过程对用户是透明的,你在界面上看到的永远是拼好的结果,看不到中间翻转过几次。
便利的代价是不可见。如果自动判断出错(这种情况在短读长、低复杂度区域、或者只有一条读长覆盖的情况下确实会发生),你很难第一时间察觉。我的做法是:对关键样本关掉自动校正,先看原始方向,再手动决定。听起来麻烦,但对只有几十条读长的小项目来说,多花十分钟换来的是心里有数。
另外要注意导入时的另一个选项:是否反向互补整条序列还是只比对时临时翻转。有的软件只是比对时临时翻,原始文件不动;有的会真的把序列写回文件。这两种行为在后续导出结果时完全不同,一定要看清楚。
3.2 拼接参数里那几个和方向强相关的设置
拼接的核心参数表面看都和方向无关,实际上每一项都会被方向问题放大:
| 参数 | 典型取值 | 方向问题如何影响它 |
|---|---|---|
| 最小重叠长度 | 20~40 bp | 设得太短,反向的序列也容易凑出“假重叠”,宁可设长一点 |
| 最小一致性 | 90%~95% | 方向错时一致性会掉到 25% 左右,这个阈值的意义就在于挡掉它 |
| 错配惩罚 | 中等 | 惩罚太轻会让低质量的反向匹配混进来 |
| 末端质量修剪 | 末端 50~100 bp | 不修剪的话,末端低质量区的随机错配会掩盖真实的重叠信号 |
| 是否允许末端不匹配 | 视情况 | 允许太多,等于放开了方向错误的入口 |
这里面最值得说的是最小重叠长度。新手往往想设短一点,觉得“能拼上的都拼上”,结果就是大量假重叠。因为反向互补之后的部分序列在统计上和随机序列差别不大,短到二十个碱基的重叠,完全可能靠巧合凑出来。我的经验值是:宁可设到 40 bp,让软件少拼一点,也不要设 15 bp 让它乱拼。拼不上的地方你还能人工看,拼错了的地方你可能永远发现不了。
3.3 什么时候必须手动做一次反向互补
自动校正能覆盖大部分场景,但下面这几种情况我基本都会手动处理:
第一种,只有一条读长、需要和参考序列比对的场景。这时候没有第二条读长可以做交叉验证,软件的方向判断依据不足,手动确认更稳妥。
第二种,拼接结果和预期长度差很多的时候。比如预期 1.5 kb 的片段,拼出来只有 800 bp,而且两头都是高质量区,那八成是某条读长方向反了,导致中间断开。
第三种,要往公共数据库提交序列之前。提交的序列必须标明方向,而且最好和参考序列或者转录方向一致。这时候不能依赖软件的默认行为,必须自己核一遍。
第四种,做定点突变或者克隆构建验证的时候。插入片段的朝向直接决定表达是否成功,这种场合一个方向错误就是几周白干。
3.4 命令行批量处理时,两个开关要配对使用
批量处理几百条序列的时候,图形界面不现实,一般会走命令行。这类工具里,反向和互补通常是两个独立的开关,比如-r表示 reverse(反向),-p表示 complement(互补)。必须同时给两个,只给一个就是半成品,而且这种错误不会报错,只会静默产出错误结果。
命令行处理还有几个极其容易翻车的细节,我挨个说:
- 只处理序列行,别动文件头。FASTA 格式里
>开头的行是注释,反向互补只针对序列行。有的简易脚本图省事把整个文件当字符串翻转,结果文件头也反了,下游全部解析失败。 - 质量值要跟着一起翻转。如果输入是 FASTQ,序列翻转了,对应的质量字符串必须同样翻转,否则每个碱基的质量分都错位了。这个错误极其隐蔽,因为文件格式完全合法,只是质量分全错。表现是下游修剪时把高质量区当低质量剪掉,或者反过来。
- 大小写要保留。软屏蔽(soft-masking)用小写字母表示重复序列或低复杂度区,反向互补之后这些小写区域必须还在原来的生物学位置上。如果脚本统一转成大写,信息就丢了。
- gap 字符不动。多序列比对结果里的
-在反向互补时应原样保留为-,不能被替换成 N 或者被删掉。
4. 判断一条序列方向对不对:四种可以互相印证的锚点
方向判断说到底是个“找参照物”的问题。孤零零一条序列,没有任何外部信息,谁也判断不了方向——因为方向本身是相对的。下面这四类锚点,实际操作中经常是配合使用的。
4.1 特征序列与酶切位点:能用,但有陷阱
最直观的办法是找已知的特征序列。比如你克隆的时候用了某个酶切位点,在载体上做线性化,那么插入片段的起始处应该有这个位点的残留。或者你设计了带标签的引物,标签序列在哪个方向,插入片段的方向就定了。
陷阱在于前面提到的回文问题:回文位点不能用来判断方向。六碱基识别位点里大部分是回文的,翻过来一模一样。真正能定方向的是非回文的特征序列,比如某个已知基因的起始密码子附近序列、某个标签蛋白的编码序列、或者一段已知方向的接头。
另一个常用手段是不对称酶切。选两个识别位点不同、在序列上位置不对称的酶,做一次双酶切,跑胶看片段大小。正向和反向插入产生的片段组合完全不同,这个方法直观、成本低,做克隆验证时非常常用。
4.2 开放阅读框与密码子偏好:最可靠也最费事
如果要判断的是一条编码序列,最硬的证据来自翻译。做法是把六个阅读框全部翻译一遍(正链三个、反链三个),看哪个框能翻出一段完整、没有提前终止的长肽链。
具体操作上有个小技巧:先看长度,再看终止密码子分布。一个真实的编码区,通常能翻出几百个氨基酸而中间不出现终止密码子。而错误方向的翻译,一般几十个氨基酸就会撞上一个终止密码子。统计学上,随机序列每 21 个密码子出现一次终止的概率相当高,所以“长 ORF”本身就是强信号。
更进一步可以看密码子偏好。不同物种对同义密码子的使用频率有明显差异,如果翻译出来的序列在该物种的偏好分布上明显偏离,那方向可能就是错的。这个判断需要一点先验知识,但对经常处理同一物种数据的人来说,凭直觉就能感觉出“这翻译得不对劲”。
4.3 引物位置:设计阶段就该想清楚的事
如果序列是用已知引物扩增出来的,那方向基本在实验设计阶段就确定了。正向引物结合在模板的哪条链上,扩增产物从左到右就是什么方向,这件事在设计引物的时候就应该记在实验记录本上。
麻烦在于很多人做完实验就把这事忘了,等两个月后回头分析数据,完全不记得当时用的是哪对引物、哪个方向。我的建议很土但很管用:在引物名字里带上方向信息。比如正向引物叫 xxx-F,反向引物叫 xxx-R,同时在记录里写清楚 F 结合在正义链还是反义链上。这种习惯平时看不出价值,等到出问题的时候能省下半天时间。
还有一种情况是测序引物。送测时用的引物结合在载体上还是插入片段内部,决定了读长从哪个位置开始、朝哪个方向延伸。如果同一个样本既用了正向测序引物又用了反向测序引物,那两条读长天然互为反向互补,这一点在拼接前就该知道。
4.4 参考序列比对:有参考就最省事
如果能找到同源参考序列,方向判断就变成了一件机械工作:把待测序列和参考做比对,看正向和反向哪个得分高。做法是把序列和它的反向互补分别比对一次,比较比对分数、覆盖度、一致性。
这里有个细节值得说:很多比对工具默认就会搜索双链。也就是说,你把一条序列扔进去,工具会自动尝试正反两个方向,返回最优的那个命中,并在结果里标注比对方向(通常写作 Plus/Minus 或者 Forward/Reverse)。这意味着你看到的比对结果可能已经是被翻转过的了,如果你直接把参考序列的那一段截下来和原始序列比对,会发现一堆错配——因为比对工具翻过了,你没翻。这个坑我踩过不止一次,后来养成了习惯:看比对结果先看方向标记,再谈其他。
5. 我踩过的几个坑:方向问题从来不承认自己是方向问题
5.1 峰图漂亮却拼不上,折腾了一整天才想到翻转
这就是开头提到的那个场景。当时的三条读长,两条能拼上,第三条怎么都进不去。我第一反应是这条读长质量差,打开峰图逐位看,质量分全在 Q30 以上;又怀疑是载体污染,做了载体比对,干净;再怀疑是样本混淆,把原始样本重新跑了一遍胶,条带位置正常。折腾到下午,随手点了一下反向互补,三条序列瞬间严丝合缝。
事后复盘,问题出在送测的时候只送了一条反向引物,而另外两条是正向引物测的。数据没问题,是我自己忘了这件事。教训是:拼接之前先花两分钟把每条读长的来源和方向列个表,比事后花两小时排查划算得多。
5.2 反向互补之后坐标全乱,下游注释全部错位
这个坑更隐蔽。当时处理一批重测序数据,需要把比对到负链上的读长统一翻成正链再做变异检测。翻转本身没问题,问题出在位置坐标没有同步换算。序列翻了,但记录的起点位置还是原来的,结果所有变异位点的坐标全部偏了,偏的量正好是序列长度减去原位置。
正确的换算公式其实很简单,设序列长度为 L,原来的位置是 i(从 1 开始计数),翻转后的新位置就是:
新位置 = L - i + 1如果处理的是一个区间 [start, end],翻转后变成:
新起点 = L - end + 1 新终点 = L - start + 1注意起止要互换,这一点特别容易漏。我当时的脚本只做了L - i + 1,处理单点变异没问题,一碰到区间注释(比如基因结构、保守域)就全乱了。后来统一改成一个专门的位置换算函数,所有涉及翻转的流程都调用它,才算彻底解决。
5.3 设计下游引物忘了取反向互补,PCR 死活不出条带
这是分子实验里最经典的方向错误。设计一对引物扩增某段序列,正向引物直接截取序列 5' 端的那一段,反向引物也想当然地截取 3' 端的那一段——错了。反向引物结合在互补链上,它的序列必须是目标区域 3' 端序列的反向互补。
为什么?因为引物要和自己结合的那条链配对。反向引物结合的链和参考序列是互补关系,所以引物本身必须和参考序列在这一段上完全一致——等等,这里容易绕晕,捋一遍:参考序列给的是正义链 5'→3'。反向引物要结合在正义链上(沿着反义方向延伸),所以它的序列应该和正义链的一段互补,写出来时按 5'→3' 排列,就是那段序列的反向互补。
如果忘了这一步,引物和模板根本配不上,PCR 自然没有条带。更坑的是有时候能出非特异条带,让你以为是条件问题,优化半天退火温度、镁离子浓度,其实是引物本身就设计错了。所以设计完引物,一定拿引物序列回贴到模板上检查一遍,看它到底结合在哪个位置、方向对不对。
5.4 翻译出一堆终止密码子,以为是移码,其实是方向反了
有一次拿到一段克隆片段的测序结果,翻译之后每隔二三十个氨基酸就出现一个终止密码子。第一反应是移码突变,检查了半天没找到插入缺失;又怀疑是测序错误,看了峰图也没问题。最后把序列反向互补再翻译,一条完整的、九百多个氨基酸的阅读框赫然出现在眼前。
这个经历给我的启示是:翻译结果异常时,先别急着找突变,先确认方向。判断方法很简单,六个框全翻一遍,看哪个框最长、最干净,那个就是正确的方向和阅读框。真正发生移码的情况,通常是在某个特定位置之后才变乱,而不是从头乱到尾。从头到尾都是终止密码子,几乎一定是方向问题。
5.5 把“反向翻译”和“反向互补”当成一回事
这两个词中文长得像,含义天差地别,但确实有人搞混。反向互补是核酸层面的操作,指序列倒序加碱基互补。反向翻译(back translation)是蛋白层面的概念,指根据氨基酸序列反推出可能的核苷酸序列——因为密码子有简并性,一个蛋白序列对应的核酸序列有无穷多种可能,反推出来的只是一组候选。
这两个概念混淆的后果是:在讨论序列方向时把蛋白层面的逻辑带进来,越讨论越乱。我在技术群里见过好几次这样的对话,两边说的根本不是一件事。所以看到“反向”两个字,先确认是在哪个层面说话。
6. 反向互补还会在哪些环节冷不丁冒出来
6.1 引物设计与引物核查
前面讲过反向引物要取反向互补,这里补充两个更细的点。
一是引物二聚体检查。检查二聚体时,要把正向引物和反向引物互相之间的所有可能配对都算一遍,包括一条引物的 3' 端和另一条引物反向互补后的配对。有些工具只检查正向配对,漏掉反向的那一半,结果实际做实验时二聚体严重。
二是引物特异性检查。把引物序列(包括反向互补版本)都拿去比对,看是否在基因组的其他位置有结合位点。只查正向会漏掉一半的假阳性位点。
6.2 数据库检索时的方向标记
在公共数据库里检索序列,返回结果通常带有方向标记。看结果的时候要养成习惯:先看方向,再看其他。因为当你把检索到的序列下载下来,和手头的序列做比对或者拼接时,如果方向标记是负链而你忽略了,就会遇到一堆“莫名其妙”的错配。
另一个相关细节是检索时的链设置。有的检索工具默认只搜正链,有的默认双链都搜。同一段序列,设置不同,返回的命中数量和位置可能完全不同。做同源检索时如果不确定,把两个方向都搜一遍,比对结果会更完整。
6.3 克隆构建的方向验证
做表达载体构建,插入片段的朝向决定能不能表达出正确的蛋白。验证方法有几种,各有取舍:
- 双酶切:选两个不对称的位点,正向和反向插入切出来的片段大小不同,跑胶一看就明白。成本低、直观,但要选对酶。
- 菌落 PCR 加单向引物:一条引物在载体上,一条在插入片段内部,且方向朝外。只有正确朝向才能扩出条带。这个方法快,适合筛大量克隆。
- 测序:最直接,用载体上的通用引物往外读一段就够了,不用读全长。成本比前两种高,但信息最完整。
我一般先用菌落 PCR 粗筛,阳性克隆再送测序确认。粗筛这一步能挡掉七八成的错误朝向,测序通量压力小很多。
6.4 链特异性信息与转录方向
到了转录组层面,方向问题会变得更微妙。基因有正义链和反义链之分,转录方向决定了哪条链是模板。做链特异性文库的时候,如果建库环节的方向信息处理错了,得到的表达量数据可能整体反了——本来高表达的正链基因被算到了反链上。
这个问题在做反义转录本研究时尤其致命,因为反义链上的信号本来就很弱,方向一错,真正的信号和背景噪音混在一起,根本分不开。排查这类问题时,我的做法是找几个已知方向的管家基因作为内参,看它们的信号落在哪条链上,以此校准整个数据集的方向。
7. 一份可以直接照着走的方向核对清单
把上面这些内容压缩成一张表,实际动手时对着走一遍,能挡掉大部分方向相关的错误:
| 环节 | 核对项 | 出错的典型表现 |
|---|---|---|
| 拿到原始数据 | 每条读长的测序引物方向是否记录在案 | 拼接时某条读长怎么都进不去 |
| 拼接前 | 是否开启了自动方向校正,是否需要关闭 | 结果不可解释,无法回溯 |
| 拼接参数 | 最小重叠长度是否 ≥ 40 bp | 出现大量假重叠、嵌合 contig |
| 拼接后 | contig 方向和参考是否一致 | 下游坐标全反,注释错位 |
| 序列翻转 | 质量值、大小写、gap 是否同步处理 | 质量分错位,重复区标记丢失 |
| 坐标换算 | 区间翻转时起止是否互换 | 区间注释整体偏移 |
| 引物设计 | 反向引物是否取了反向互补 | PCR 无条带或非特异 |
| 序列翻译 | 六个框是否都翻过 | 从头到尾都是终止密码子 |
| 提交数据 | 方向是否明确标注 | 他人复用你的数据时无法对齐 |
清单本身不复杂,难的是养成习惯。我现在的做法是把它存成一个文本模板,每个新项目开始时复制一份,逐条打勾。前几次会觉得繁琐,做顺了之后基本上就是扫一眼的事,但省下的返工时间是以天计的。
最后分享一个我一直在用的小技巧:遇到任何“两条序列对不上”的情况,先花十秒钟做一次反向互补再试。这个动作的成本几乎为零,但能解决的问题比例高得惊人。很多看起来像是污染、突变、测序质量的问题,翻一下就消失了。等你排查了两小时才想起来翻转,那种懊恼的感觉,经历一次就够记一辈子的。