У меня есть файлы в два типа: A: содержит 1206 строк координат (XYZ) - белок, цепь Б: содержит 114 строк координат (XYZ) - пучок молекулыPython вычислить минимальные расстояния между несколькими координатами
Я хотел бы сделать следующее: Для каждой линии A вычислить расстояние от каждой строки B. Поэтому я получаю 114 значений расстояния для каждой строки A. Но мне не нужны все они, только самые короткие для каждая строка A. Таким образом, желаемый результат: Файл с 1206 строками, каждая строка содержит одно значение: кратчайшее расстояние. Важно, чтобы сохранить первоначальный порядок файла А.
Мой код:
import os
import sys
import numpy as np
outdir = r'E:\MTA\aminosavak_tavolsag\tavolsagok'
for dirname, dirnames, filenames in os.walk(r'E:\MTA\aminosavak_tavolsag\receptorok'):
for path, dirs, files in os.walk(r'E:\MTA\aminosavak_tavolsag\kotohely'):
for filename in filenames:
for fileok in files:
if filename == fileok:
with open(os.path.join(outdir, filename) , "a+") as f:
data_ligand = np.loadtxt(os.path.join(path, fileok))
data_rec = np.loadtxt(os.path.join(dirname, filename))
for i in data_rec:
for j in data_ligand:
dist = np.linalg.norm(i - j)
dist_float = dist.tolist()
dist_str = str(dist_float)
dist_list = dist_str.split()
for szamok in dist_list:
for x in range(len(dist_list)):
minimum = min([float(x) for x in dist_list])
f.write(str(minimum) + "\r\n")
Этот код работает, но только частично. --- Моя конечная цель найти белковые остатки достаточно близки к этому кучу молекулы (сайт связывания). Я могу проверить свои результаты с помощью визуального программного обеспечения, и мой код найдет гораздо меньше остатков, чем должен. ----
Я просто не могу понять, в чем проблема. Не могли бы вы помочь мне? Спасибо!
я не получил последний вопрос! Вы можете вычислить вектор из 1024 элементов, который содержит ближайший элемент в B для каждой строки в A. Теперь, на следующем шаге, что вы хотите вычислить? Я думаю, если вы добавите пример файла A, а файл B будет приятным. –
Большие данные не означают, что у вас не должно быть небольших данных для фактической проверки вашей реализации. Если единственное, что вам нужно доказать, что ваш алгоритм работает, - это поверхностный визуальный контроль, никто не станет воспринимать это серьезно. – Voo