我是 Python 和 MDAnalysis 的新手。我正在尝试使用 MDAnalysis 进行分析。但是,我遇到了这个错误:
SelectionError: Selection failed: could not convert string to float 'cold'.
我想选择名为“BF4”、“EMI”和“TMA”的分子。选择取决于分子的 z 位置。我有cold
,cnew
但我无法将每个分子的 z 坐标值与这两个值进行比较,因为它们被视为字符串而不是浮点数。
请你帮助我好吗?非常感谢
with MDAnalysis.Writer("tube.xtc",tube.n_atoms) as W:
t=50
with open('lineCNT16.gro','w') as f:
for ts in universe.trajectory:
W.write(tube)
tube = sum(sorted(tube, key=lambda x: x.position[2]))
lobf = []
chunk = 40
for i in range(len(tube) // 40): # how many times can we chunk the tube?
piece = tube[i*chunk:(i+1)*chunk] # this is selecting [0:20] first, then [20:40] etc
position = piece.positions.mean(axis=0)
lobf.append(position)
print (ts,lobf)
mol=29627
f.write('Generated by trjconv : Ionic liquid simulation t= '"%s\n"%t)
f.write('18\n')
f.write(' 1C08 C29626 4.247 4.253 7.544\n')
cold = 7.544
for position in lobf:
a=position[0]/10
b=position[1]/10
c=position[2]/10
cnew=c
print(cnew)
f.write(' 1C08 ')
f.write('C')
f.write("%0.8s"%mol)
f.write(' ')
f.write("%0.5s"%a)
f.write(' ')
f.write("%0.5s"%b)
f.write(' ')
f.write("%0.5s\n"%c)
mol=mol+1
BF4=universe.atoms.select_atoms("resname BF4 and prop z >= cold and prop z<= cnew")
#EMI=universe.atoms.select_atoms("resname EMI and prop z >= cold and prop z<= cnew")
#TMA=universe.atoms.select_atoms("resname TMA and prop z >= cold and prop z<= cnew")
#print(EMI)
#print(BF4)
#print(TMA)
cold=cnew
f.write(' 1C08 C29643 4.247 4.253 12.64\n')
f.write('6.15000 6.20000 20.18420\n')
t=t+50.00000
mol=29627