Я работаю над сценарием моделирования Монте-Карло над структурой белка. Я никогда раньше не писал скриптов в Монте-Карло. Я буду масштабно расширять эту программу. По координатам белка xyz я должен определить размер коробки. Это поле будет разделено на сетку размером 0,5 А. На основании критериев расстояния и угла я должен назначить точку на основе распределения вероятностей Больцмана.
Моя программа должна двигаться в каждом направлении, беря сетку 0,5 А, генерировать случайную точку и проверять условие расстояния и угла. Если выполнено условие, поставьте точку, в противном случае отбросьте эту точку на основе распределения вероятностей Больцмана.
Вот мой код для генерации случайных точек
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. Как проверить каждую точку в поле.
Любая помощь будет заметна.