Я работаю над сценарием моделирования Монте-Карло над структурой белка. Я никогда не делал этого до написания сценариев Монте-Карло. Я буду распространять эту программу в больших масштабах. Согласно координатам xyz белка, я должен определить размер коробки. Этот ящик будет разделен на сетку размером 0,5 А. Основываясь на критериях расстояния и угла, я должен назначить точку, основанную на распределении вероятностей Больцмана.
Моя программа должна двигаться в каждом направлении, беря сетку 0,5 А и генерируя случайную точку и проверяя состояние расстояния и угла. Если удовлетворять условию put point, то в противном случае отбросить эту точку, основанную на распределении вероятностей Больцмана.
Вот мой код для генерации случайных точек
from __future__ import division
import math as mean
from numpy import *
import numpy as np
from string import *
from random import *
def euDist(cd1, cd2):# calculate distance
d2 = ((cd1[0]-cd2[0])**2 + (cd1[1]-cd2[1])**2 + (cd1[2]-cd2[2])**2)
d1 = d2 ** 0.5
return round(d1, 2)
def euvector(c2,c1):# generate vector
x_vec = (c2[0] - c1[0])
y_vec = (c2[1] - c1[1])
z_vec = (c2[2] - c1[2])
return (x_vec, y_vec, z_vec)
for arang in range(1000): # generate random point
arang = arang + 1
x,y,z = uacoord
#print x,y,z
x1,y1,z1 = (uniform(x-3.5,x+3.5), uniform(y-3.5,y+3.5), uniform(z-3.5,z+5))
pacord = [x1,y1,z1] # random point coordinates
print pacord
Я полностью поражен, чтобы создать размер коробки из координаты xyz структуры белка и как определить сетку размером 0,5. Как проверить каждую точку в поле.
Любая помощь будет заметна.