Хранение значений из структуры в файл - PullRequest
1 голос
/ 11 февраля 2020

Я пытаюсь сохранить расстояние между двумя остатками, используя следующий код:

f = open('%s.txt' % fileName, 'w')
print(residue1,residue2,distance)
f.write(line)

Команда печати показывает следующий вывод:

<Residue   U het=  resseq=63 icode= > <Residue   A het=  resseq=11 icode= > 66.809425
<Residue   G het=  resseq=64 icode= > <Residue   A het=  resseq=11 icode= > 71.63533
<Residue   C het=  resseq=65 icode= > <Residue   A het=  resseq=11 icode= > 76.931366
<Residue   G het=  resseq=66 icode= > <Residue   A het=  resseq=11 icode= > 81.664375
<Residue   A het=  resseq=67 icode= > <Residue   A het=  resseq=11 icode= > 84.5027
<Residue   U het=  resseq=68 icode= > <Residue   A het=  resseq=11 icode= > 87.20471
<Residue   A het=  resseq=69 icode= > <Residue   A het=  resseq=11 icode= > 82.4701
<Residue   A het=  resseq=70 icode= > <Residue   A het=  resseq=11 icode= > 76.94348
<Residue   G het=  resseq=71 icode= > <Residue   A het=  resseq=11 icode= > 76.04107
<Residue   C het=  resseq=72 icode= > <Residue   A het=  resseq=11 icode= > 82.2956
<Residue   C het=  resseq=73 icode= > <Residue   A het=  resseq=11 icode= > 87.42678
<Residue   A het=  resseq=74 icode= > <Residue   A het=  resseq=11 icode= > 92.075035
<Residue   U het=  resseq=75 icode= > <Residue   A het=  resseq=11 icode= > 94.59299
<Residue   G het=  resseq=76 icode= > <Residue   A het=  resseq=11 icode= > 94.36213

Когда я редактирую код для добавления строк сохранить вывод в файл:

f = open('%s.txt' % fileName, 'w')
print(residue1,residue2,distance)
line = str(residue1)+','+str(residue2)+','+str(distance)
f.write(line)
f.close()

Я получаю следующую ошибку:

    model = structure[0]
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/Bio/PDB/Entity.py", line 41, in __getitem__
    return self.child_dict[id]
KeyError: 0

Как ее решить?

Обновление:

f = open('%s.txt' % fileName, 'w')
print(residue1.get_id(),',',residue2.get_id(),',',distance)
line = f"{residue1.get_id()}, {residue2.get_id()}, {distance}"
f.write(line)
f.close()

Эта строка запускается один раз со следующим выводом в выходном файле:

(' ', 122, ' '), (' ', 11, ' '), 144.1501007080078

, а затем завершается с ошибкой

...