使用 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 时出错的主要内容,如果未能解决你的问题,请参考以下文章
Needleman-Wunsch 实现在 cogent 和 skbio 中给出了不同的对齐方式