蒙特卡罗模拟蛋白质结构和网格

awa*_*nit 12 python simulation numpy montecarlo chemistry

我正在研究蛋白质结构的蒙特卡罗模拟脚本.我从来没有在蒙特卡洛脚本之前做过.我将大规模扩展这个计划.根据蛋白质xyz坐标我必须定义盒子大小.此框将被划分为大小为0.5 A的网格.根据距离和角度标准,我必须根据Boltzmann概率分布指定点.

3-D盒中的蛋白质结构,显示网格

我的程序应该通过取0.5 A的网格在每个方向上移动并生成随机点并检查距离和角度的条件.如果满足条件,则根据玻尔兹曼概率分布丢弃该点.

这是我生成随机点的代码

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
Run Code Online (Sandbox Code Playgroud)

我很惊讶从蛋白质结构的xyz坐标生成盒子大小以及如何定义大小为0.5的网格.如何检查框中的每个点.
任何帮助都会很明显.

duf*_*ymo 3

喜欢你的主题、问题和方法。我不知道它会在这里停留多久。

矩形空间中的 3D 网格在有限元分析和所有其他分析物理问题的技术中很常见。看一下网格是如何生成的。

通常有两部分:空间中 (x,y,z) 点的网格和连接它们的框。具有两个元素的简单 2D 网格如下所示:

D               E               F
o (1, 0) ------ o (1, 1) ------ o (1, 2)
+               +               +
+               +               +
+               +               +
o (0, 0) -------+ (0, 1) -------+ (0, 2)
A               B               C
Run Code Online (Sandbox Code Playgroud)

该网格中有六个点:

A (0, 0)
B (0, 1)
C (0, 2)
D (1, 0)
E (1, 1)
F (1, 2)
Run Code Online (Sandbox Code Playgroud)

和两个盒子:

1 - (A, B, E, D)
2 - (B, C, F, E)
Run Code Online (Sandbox Code Playgroud)

因此一种可能的方法是迭代所有框,检查质心的位置,并进行相应调整。

我将从代码中外部化网格定义并从文件中读取它。这样您就可以使用相同的代码处理不同的网格。

如果我理解正确的话,网格将在空间中保持固定。你试图使蛋白质本身的运动随机化。这就像流体问题,欧拉方法:您正在跟踪材料相对于固定控制体积的运动。只不过它是蛋白质而不是液体。

因此,您还将对空间中蛋白质的初始条件有单独的定义。您计划及时增加它,以查看蛋白质如何根据您的规则折叠。

我很接近吗?