问题标签 [sequence-alignment]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
222 浏览

python - 在python中对齐一组痕迹

我有一系列看起来像这样的痕迹:

真的很小的低部分,然后是很大的高部分,然后又以低部分结束。

跟踪示例

我希望能够对齐所有这些痕迹......尽可能接近(所以从低到高的变化和相反的变化将在相同的索引处)。

我尝试使用互相关,但这给了我 0 偏移量……我不知道为什么。

我在互联网上没有找到任何东西,我很困惑,因为这似乎是许多人以前面临的常见问题。

0 投票
1 回答
249 浏览

python - 来自 BioPython 的 Align.PairwiseAligner() 的 MemoryError

我正在尝试编写一个 Python3 脚本,该脚本执行两个序列的全局对齐,长度约为 10 kb 和 11 kb。两者都非常相似。(我试图找到它们不匹配的几个点,我知道其中一个点接近查询序列的末尾,这就是为什么局部比对是不够的(BLASTN 只是裁剪最后 2 个碱基以获得更好的对齐分数)。)

我曾希望能够为此使用 BioPython,特别是 Align.PairwiseAligner。但是,我收到了 MemoryError。

有没有办法配置或使用 BioPython 来使用更少的内存(更多的运行时间完全没问题 - 当然,在合理范围内)?或者任何其他方式来执行我可以使用的 2 个序列的全局对齐,而无需求助于像 Emboss Needle 这样的外部软件?

(这是一个更大的软件的一部分。我已经必须同时发布 BLAST 和 BioPython。如果可以避免的话,我宁愿不必再发布另一个软件。)

这是一个 MVCE:

这是 Windows 10 上的 Python 3。Biopython 版本是 1.72。

编辑:这是追溯:

0 投票
1 回答
51 浏览

duplicates - SAM(序列对齐/映射)格式对齐标签

我正在使用 samtools 删除重复项。要标记然后删除重复项,markdup 依赖于 fixmates 提供的 ms(伴侣分数)和 MC(伴侣雪茄)标签。

有谁知道这些标签到底是什么?固定伴侣的表现如何?

谢谢您的帮助!

0 投票
1 回答
50 浏览

python - 如何匹配相似(但不相同的字符串)中的标记,以便我可以将 POS 标签从一个字符串共享到另一个字符串?

我有大量的文本,分成句子。我有每个句子的两个版本,一个版本有 POS 标记的标记。我想对版本 1 中的所有内容进行 POS 标记。我想通过将版本 1 中的单词替换为版本 2 中带有 POS 标记的对应词来做到这一点。

这有一些并发症:

  1. 同一个词的拼写在两个版本之间可能不同(例如'cafe'vs. 'café')。

  2. 带有 POS 标记的版本中的间距并不总是与另一个中的间距相匹配(例如"did", "n't"vs. "didn't")。

  3. 一个版本经常使用符号,而另一个版本则拼出完整的单词(例如'&'vs. 'and')。

文本的语言不是英语,所以上面的例子只是对正在发生的事情的粗略估计。以下是实际文本中的几个示例。我希望很容易看出版本 2 中带有 POS 标记的文本如何与版本 1 中的文本紧密匹配,但不完全匹配;有些单词丢失了,有些单词拼写不同,有些单词乱了,等等。

在示例 1'&'中映射到'uont'. 版本 1 中的单词'pru''bra'不映射到版本 2 中的任何内容。单词 ,'jo'在版本 2 中的位置也错误,需要遵循版本 1 的词序。

在示例 2'vó''ṁo', 和'yj'all 都映射到'vomoyj',即使某些字符不同,并且它被拆分在两个位置。

在示例 3 中,只有一个单词,但部分重复。'fa', 't', 和'is'都出现在 中'fatisyjogot',所以我可以忽略除'fatisyjogot'版本 2 之外的所有内容。

在版本 2 中标记了单词的地方,我想用版本 2 中的形式和 POS-tag 替换版本 1 中的对应词。这样我就可以保持版本 1 的词序。如果版本 2 中不存在带标签的表单,我想保留版本 1 中的单词并添加占位符标签'<X>'. 如果版本 2 中的任何内容像示例 3 一样重复,我还需要省略它。因此,从上面的示例中,我想创建以下列表:

我尝试使用 RegEx 和nltk模块中的编辑距离方法编写一个函数来识别相似的字符串。它适用于较长的字符串,但由于某些字符串很短,就像'vó'上面一样,它有时会遇到困难。我还查看了序列比对库,但发现自己在尝试应用它们时感到困惑。

有没有办法比较这些字符串并将版本 2 中的每个字符串与版本 1 中的某个子字符串进行高精度匹配?我可以自己整理 POS 标签,我只需要一种方法来找到所有相应的令牌。

例如,我可以编写一个函数,给它两个版本作为参数,并让它返回所有相关的字符串(以及它们在句子中的索引/位置)吗?

编辑:将其翻译成英文以简化问题是不可行的。我真的需要比较字符串。

0 投票
1 回答
1095 浏览

python - 在 Python 中比较字符串以查找匹配单词的最佳方法是什么?

我有两个文本,文本 A 和文本 B。文本 B 不是文本 A 的精确副本,它有很多不在文本 A 中的特殊字符,但从技术上讲,它是相同的文本。我需要比较字符串并将文本 B 中的对应项映射到文本 A 中的对应项。

文本不是英文的,也不容易翻译成英文,所以下面的例子只是为了说明一些问题。

文本 A 中的某些词不在文本 B 中,但文本 B 中的所有词都应在文本 A 中:

文本 B 中的某些词使用与文本 A 不同的字符,但它们是相同的词:

文本 B 中的单词通常按正确的顺序排列,但并非总是如此:

文本 B 中的一些单词是由较小的组件组​​成的,这些组件也包含在文本 B 中,而这些较小的组件是不必要的:

文本 A 中的某些词由文本 B 中的两个或多个词表示:

我想要做的是用文本 B 中的对应词替换文本 A 中的单词。为此,我需要编写一个函数来匹配两个文本之间的单词。

我已经尝试编写一个函数,该函数使用库中的edit distance方法和一些正则表达式来比较字符串。nltk这只做得不错,所以我研究了使用sequence alignment库中的技术,例如biopython,但我无法理解这些。

特别是,在使用编辑距离时,很难将诸如“under”和“cut”之类的词与“undercut”匹配,同时也避免了短字符串中的错误。这是因为在一个包含相似标记的句子中,比如“to”和“tu”,这些标记与“tú”之类的东西有相同的编辑距离,理论上它们是同样有效的候选者,尽管这里明显的匹配是“tu” ',而不是'到'。

是否有任何高度准确的方法来匹配文本 A 中文本 B 中的字符串?我想得到如下输出:

理想情况下,这还将包括文本 A 中每个匹配单词的开头和结尾的索引,以避免混淆,例如下面出现两次的单词“their”:

如上所述,文本不是英文的,翻译它以使用 NLP 技术比较单词实际上并不可行,因此它确实需要基于字符串比较。我认为肯定有一些方法或库已经存在,它采用比我使用 RegEx 和编辑距离想出的更有效的序列比对算法,但我找不到。

有人知道用于比较字符串以实现此结果的高度准确的方法吗?

0 投票
0 回答
144 浏览

matrix - 如何从多序列比对构建经验密码子替换矩阵

我一直在尝试使用 Biopython 建立一个经验密码子替换矩阵,给出一个 fasta 格式的多序列比对。

当比对的序列具有相同的长度时,使用AlignInfo模块的单核苷酸替换矩阵似乎相对简单。这是我使用python2.7设法做的事情:

使用具有相同长度的序列 (aln.fa) 的 fasta 格式的多序列比对文件,输出是一个半矩阵,对应于比对中观察到的核苷酸替换的数量(请注意,允许有空位 (-)):

我的目标是计算类似的经验替换矩阵,但对于多序列比对中存在的所有核苷酸三联体(密码子)。

我试图调整 AlignInfo 模块的_pair_replacement函数,以便通过更改来接受核苷酸三联体:

第 305 至 308 行

在这个阶段,它可以从比对中检索密码子,但抱怨字母表(模块只接受单字符字母表?)。

注意

(i) 我想得到一个替代矩阵,它解释了三个可能的阅读框架

非常感谢任何帮助。

0 投票
0 回答
71 浏览

c++ - 实现全局序列比对

我将创建一个 needleman-wunsch 全局序列比对。但我的回答是错误的。请帮我检查我的代码。有时当两个序列匹配时,它仍然会运行不匹配函数。忽略我蹩脚的英语,谢谢。

这是我的输出(突出显示的是错误答案):

在此处输入图像描述

0 投票
0 回答
67 浏览

sequence-alignment - 使用 STAR 进行剪接和未剪接的序列比对

我正在处理单细胞测序数据,并希望通过 RNA 速度 ( https://www.nature.com/articles/s41586-018-0414-6 ) 运行它。为此,我需要映射拼接和未拼接的读取。我正在使用的数据集是 SMARTseq 数据集,没有 UMI 或条形码(https://www.embopress.org/doi/full/10.15252/embj.2018100164)。数据作为每个单元格的单个 sra 文件提供,可以使用 SRAtoolkit 通过 GEO 获取并解压缩到单端 fastq 文件中。

我的目标是使用 STAR 对齐将数据映射两次。首先,我想将读数映射到外显子区域,然后再映射到内含子区域。为此,我从 ensembl 参考基因组 GRCm38 build 100 ( https://www.ensembl.org/Mus_musculus/Info/Index ) 下载了 fasta 和 gtf 文件。gtf 文件本身不包含 intronic 信息,我使用以下代码在 R 中添加了这些信息:

然后,我生成了一个 STAR 基因组,如下所示:

针对外显子序列映射读取的代码如下:

这工作得很好。对于未拼接的读取,我想做以下事情:

奇怪的是,这给了我与外显子读取映射完全相同的结果。我很困惑,我确定我做错了什么,但我不知道是什么。任何帮助将非常感激!

最好的问候,莱昂

0 投票
1 回答
160 浏览

linux - 将 fastq 读取拆分为 10G 迷你文件,汇编器不接受为 fastq 格式

我使用以下代码将 52G fastq 文件拆分为 10G 块:

这产生了以下文件:

当我尝试使用 Velvet 组装“outputfileab”时,我收到以下错误消息:

奇怪的是,velveth 和 velvetg 都正常用于组装第一个 10G 读取,即“outputfileaa”。

有人知道发生了什么吗?

0 投票
0 回答
167 浏览

python - 使用 BioPython 进行半全局对齐

我们可以使用 BioPython 中的 Pairwise2 将全局对齐更改为使用参数的半全局对齐吗?如果是这样,你能举个例子吗?