Я новичок в 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