Я пытаюсь извлечь только координаты альфа-углевода и построить их в трехмерном представлении. Верхняя половина следующего кода работает нормально, но я не могу представить свои результаты.извлечение и построение координат атома из pdb-файла python
import re
import glob
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
coord = []
pattern = re.compile('ATOM\s{5,}\d+\s{2}CA\s{2,}\w{3}\s\w\s{2,}\d+\s{6}\d+\.\d+\s\d+\.\d+\s{2}\d+\.\d+', flags=re.S)
for file in glob.glob('file_rank_1.pdb'):
with open(file) as fp:
for result in pattern.findall(fp.read()):
output = result[-22:]
coord = " ".join(output.split())
coord = coord.replace(" ",",")
c = coord.split(',')
print(c)
X,Y,Z = (c)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X,Y,Z)
ax.set_xlabel('x axis')
ax.set_ylabel('y axis')
ax.set_zlabel('z axis')
plt.show()
Мои результаты запуска выше выглядит ...
['72.438', '109.283', '43.980']
['75.664', '110.907', '45.079']
['74.354', '111.094', '48.594']
['73.380', '107.449', '48.722']
['76.614', '106.603', '46.958']
['79.740', '105.625', '48.895']
['82.425', '107.703', '47.318']
['80.088', '110.405', '46.265']
['78.710', '110.389', '49.818']
['82.235', '110.471', '51.200']
['82.841', '113.550', '49.133']
['79.233', '114.754', '49.675']
['78.633', '113.745', '53.295']
['77.041', '117.182', '53.503']
['73.963', '116.530', '51.505']
['73.696', '113.058', '52.933']
TypeError: Cannot cast array data from dtype('float64') to dtype('<U32') according to the rule 'safe'
Приведенный выше код открывает интерфейс графа, но он остается пустым. Существует также полный экран сообщений с красным файлом из интерактивной оболочки, которые я остановил, чтобы попытаться сэкономить место в этом вопросе. Как я могу построить числа, найденные в c? Благодаря
У вас нет каких-либо номеров в 'c'. Это струны. – Goyo
Я попытался превратить их в поплавки, но, должно быть, неправильно использовал команду, так как когда я это сделал, это вызвало больше проблем, чем решений. – pphil206