Python Modeler 9.14“;ValueError:太多的值无法解包;
我正在使用一个基于Python的名为“Modeler”的蛋白质结构建模工具,我不断遇到这个错误 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
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