用 ABI 文件中的 'A'、'C'、'G' 或 'T' 替换 'N' (sanger)

replacing 'N' with 'A', 'C', 'G', or 'T' from ABI file (sanger)

我的主要问题是设法用 chromatogram.i 中具有最高峰的碱基替换未分配的核苷酸 'N' 我试图在 '[=21] 中解析 A​​BI 文件=]' 这样我就安装了 abifpy 模块:

from abifpy import Trace
chrom=Trace("10F8_POL3.ab1")
chrom.data['tracepeaks']

这样做可以得到每个位置的所有最高峰,但我不知道哪个碱基(A、C、G 或 T)与每个峰匹配。有谁能够帮我?

我从未使用过您提到的 python 库,但我曾经不得不在 java 中编写自己的 abi 解析器。您必须从 abi 文件中获取原始通道数据。有 4 个通道:一个用于 A、C、G 和 T。

注意事项 - 我不确定您的图书馆会将这些 ABI 键标签映射到什么,因此您必须查看图书馆的文档。我也好久没做sanger相关的东西了,可能有点生疏了。

我相信频道可以按任意顺序排列,因此您必须首先从名为“FWO_”的“FILTER WHEEL ORDER”标签中获取顺序。

获得频道顺序后,您必须获取列出每个频道的 pos 的频道数据。我认为那个标签叫做“DATA”。这将 return 许多阵列。我认为 ABI 有很多额外的渠道用于其他只有测序仪或操作员关心的东西。我想你关心的频道还是9-12号。

因此,例如,如果 A 的通道数据首先来自 FWO_ 标记,那么它将位于第 9 个通道(或偏移量 8)中,如果您返回一个数组数组。

获得 A、C、G 和 T 通道数据(它们在每个时间点的 pos 位点)后,您可以看到哪一个在峰值偏移处的值最高。

希望对您有所帮助。

祝你好运

更新

查看 python 代码,我猜 FWO 似乎映射到“baseorder”,通道数据是“raw1”、“raw2”、“raw3”和“raw4”。

更新 2 以解决对评论的回答

  1. 为什么“raw1”(和其他)数组比序列长? 原始通道数据中的值是每个测量时间点的 pos 值。如果您将 those 值绘制为 y 值并将数组中的偏移量绘制为 x 值,您会看到带有峰谷的波形。 peaks 数组只是 basecaller 确定为峰的原始数据中的 x pos。通常一个 1000bp 的 sanger read 会有 1000 个峰值和大约 15,000 个原始 positions.

  2. 我是唯一一个尝试“修复”Sanger 测序序列的人吗?os 这很常见吗? re-basecall sanger 数据是很常见的事情。一般来说,它比只取最高峰 pos 更复杂。由于染料斑点、肩峰和混合样本,存在质量问题和不正确的峰。

有几个basecaller,包括phred、kb basecaller,我认为它来自ABI。还有 Celera 的 tracetuner,我认为它是最好的。但是,我认为它很难构建。我四处寻找源代码,我认为它是 http://tracetuner.cvs.sourceforge.net/tracetuner/,但祝你好运,运行。

我想我的意思是,这是一个已解决的问题,所以除了尝试了解格式的工作原理和解决玩具问题外,最好留给进行信号处理的人。

  1. 1/为什么通道数据是负值数组? 2/为什么 'tracepeaks' 数组长度(包含最高峰)与序列长度匹配但通道数据不匹配?

    第 pos 个数据中应该只有 pos 个值。每个 position 应该是无符号 2 字节,因此最大值为 65536 我猜你正在使用的库是 return 将它们作为有符号值。我在上面的#1 中回答了另一部分。