使用 skbio 0.5.4 中的 smith-waterman 时出错

Posted

技术标签:

【中文标题】使用 skbio 0.5.4 中的 smith-waterman 时出错【英文标题】:Error using smith-waterman from skbio 0.5.4 【发布时间】:2019-02-26 22:38:36 【问题描述】:

我正在使用来自 skbio (0.5.4) 的 smith-waterman 的包装版本,但我有一个未预料到的错误:

_,分数,_ = local_pairwise_align_ssw(protein_list[idx1],protein_list[idx2],substitution_matrix = blosum62) 文件“/anaconda3/lib/python3.6/site-packages/skbio/alignment/_pairwise.py”,第 732 行,在 local_pairwise_align_ssw 验证=假) 文件“/anaconda3/lib/python3.6/site-packages/skbio/alignment /_tabular_msa.py”,第 785 行,在 __init__ reset_index=minter 为 None 并且 index 为 None) 文件“/anaconda3/lib/python3.6/site-packages/skbio/alignment /_tabular_msa.py”,第 1956 行,扩展 self._assert_valid_sequences(sequences) 文件“/anaconda3/lib/python3.6/site-packages/skbio/alignment /_tabular_msa.py”,第 2035 行,在 _assert_valid_sequences %(长度,预期长度)) ValueError: 每个序列的长度必须与 MSA 中的位置数匹配:232 != 231

奇怪的是,有时错误出现在蛋白质对 0-10 上,而其他蛋白质对出现在 0-116 上。所以,我不认为这是蛋白质 fromat 的错误。

【问题讨论】:

【参考方案1】:

我也有类似的问题。但是,我能够将错误限制为优化的 SSW 版本。所以序列格式没有错误。

import warnings
from skbio.sequence import Protein
with warnings.catch_warnings():
    warnings.filterwarnings("ignore", message="...")
    from Bio.Align import substitution_matrices
from skbio.alignment import local_pairwise_align_ssw
from skbio.alignment import local_pairwise_align

peptide1 = Protein("CGAGDNQAGTALIF")
peptide2 = Protein("CAGEEGGGADGLTF")
gap_open_penalty = 10
gap_extend_penalty = 10
substitution_matrix = substitution_matrices.load("BLOSUM45")

## works correct
rv = local_pairwise_align_ssw(
      sequence1 = peptide1
    , sequence2 = peptide2
    , gap_open_penalty=1
    , gap_extend_penalty=1
    , substitution_matrix=substitution_matrix
)
print(rv)

## but if I swap peptide1 and peptide 2 the ValueError occur
rv = local_pairwise_align_ssw(
      sequence1 = peptide2
    , sequence2 = peptide1
    , gap_open_penalty=1
    , gap_extend_penalty=1
    , substitution_matrix=substitution_matrix
)
print(rv)

## if I do the same with local_pairwise_align it works!
rv = local_pairwise_align(
      seq1=peptide2
    , seq2=peptide1
    , gap_open_penalty=1
    , gap_extend_penalty=1
    , substitution_matrix=substitution_matrix
)
print(rv)

【讨论】:

以上是关于使用 skbio 0.5.4 中的 smith-waterman 时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何获得`skbio` PCoA(主坐标分析)结果?

Needleman-Wunsch 实现在 cogent 和 skbio 中给出了不同的对齐方式

使用 skbio 从压缩的 FASTA bz2 文件中读取

Skbio python模块支持python 2

当 `skbio 的 pcoa` 不是时,为啥 `sklearn.manifold.MDS` 是随机的?

skbio 安装验证