Python Modeler 9.14“;ValueError:太多的值无法解包;

Python Modeler 9.14“;ValueError:太多的值无法解包;,python,terminal,Python,Terminal,我正在使用一个基于Python的名为“Modeler”的蛋白质结构建模工具,我不断遇到这个错误 ValueError:要解压缩的值太多 当我尝试运行以下脚本时: from modeller import * env = environ() aln = alignment(env) for (pdb, chain) in (('tseq1', 'A')): m = model(env, file=pdb, model_segment=('FIRST:'+chain, 'LAST:'+ch

我正在使用一个基于Python的名为“Modeler”的蛋白质结构建模工具,我不断遇到这个错误

ValueError:要解压缩的值太多

当我尝试运行以下脚本时:

from modeller import *

env = environ()
aln = alignment(env)
for (pdb, chain) in (('tseq1', 'A')):
    m = model(env, file=pdb, model_segment=('FIRST:'+chain, 'LAST:'+chain))
    aln.append_model(m, atom_files=pdb, align_codes=pdb+chain)
aln.malign()
aln.malign3d()
aln.compare_structures()
aln.id_table(matrix_file='family.mat')
env.dendrogram(matrix_file='family.mat', cluster_cut=-1.0)
我尝试过更改“tseq1”(模板序列),以防我得到错误的文件,它应该是qseq1,这是我的查询序列。但这没什么区别,我一直都会犯同样的错误。我在某个地方读到,当我试图将太多的值解包到一个没有足够变量解包到的对象中时,会发生此错误,但我看不到“tseq1”在这个脚本中的位置。 当我在终端中运行此代码时,我使用以下命令(以防与此相关,我对此表示怀疑):


有人能帮忙吗?

错误必须在这一行:

for (pdb, chain) in (('tseq1', 'A')):
您正试图将
tseq1
解包为两个变量
pdb
chain
。由于Python字符串是可编辑的,因此发生的情况是
pdb
获取
't'
的's',但解释器不知道从何处解压序列的其余部分(因此
解压的值太多了

让您困惑的是,
('tseq1','A'))
('tseq1','A')
几乎相同,即它不是一个元组序列,它只是一个2元素元组

如果将外括号更改为方括号,则将元组转换为只有一个元组的列表,并且代码不会失败。(或者,您可以在元组后添加逗号,以创建元组的元组
(('tseq1','a'),)
)。然而,我不知道这是否是你所期望的:

for (pdb, chain) in [('tseq1', 'A')]:
顺便说一下,拆包时不需要支架。这是一样的:

for pdb, chain in [('tseq1', 'A')]:

我对上一个答案投了更高的票,但作为替代方案,您可能希望添加一个逗号以使元组正常工作,如果您希望代码能够这样做的话:

for (pdb, chain) in (('tseq1', 'A'),):
    print pdb, chain
产生:

tseq1 A
试试这个

inv_type = (('tseq1', 'A'))
pdb, chain = inv_type if isinstance(inv_type, tuple) else [inv_type]
print pdb, chain

首先,在你的问题中填写完整的错误信息。。。还要添加您正在使用的python版本。随附完整的错误消息。对我来说,问题在于您在for循环中提取的元组
inv_type = (('tseq1', 'A'))
pdb, chain = inv_type if isinstance(inv_type, tuple) else [inv_type]
print pdb, chain