🥥Python模拟大型蛋白质结构与细胞膜的相互作用
细胞的质膜可以被视为具有多种功能的高度动态、调节、异质的环境。它构成了单元的边界,封装了它的所有组件。蛋白质以多种方式与膜相互作用以适应基本过程,例如膜运输、膜突出、胞质分裂、信号传导和细胞间通讯。大量文献已经促进了我们目前对膜蛋白相互作用的理解。其模拟是一种可以在氨基酸残基水平上揭示在化学变性剂不存在和存在的情况下蛋白质展开/折叠机制的技术。
模拟原理
力学
牛顿第二定律将物体的运动学(运动)与其力学(作用在其上的总力)联系起来,并定义了其位置的动态演化:
mdt2d2r(t)=F=−∇U(r)(1)
粒子动力学模拟
求解常微分方程的方法有很多。二阶常微分方程转换为两个一阶常微分方程的系统,如下所示:
dtdr(t)=v(t)(2)
mdtdv(t)=F(t)(3)
我们使用一个简单的正向欧拉算法的有限差分逼近:
vn+1=vn+mFndt(4)
rn+1=rn+vn+1dt(5)
这里我们用时间步长 dt 离散时间 t,于是 tn+1=tn+dt,并且 rn=r(tn),vn=v(tn),其中 n 是时间步数。使用这种方法,计算动态很简单。
模拟地球上球体下落
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
# Setup the figure and axes...
fig, ax = plt.subplots(figsize=(8,8))
## Adjust axes limits according to your problem. Here we don't need more than a couple of meters left or right, and 600 meters up
ax.set(xlim=(-2, 2), ylim=(0, 600), xlabel='Position, meters', ylabel='Height, meters', title='Apple falling from CN tower')
# parameters of the problem
T = 10. #s
m = 0.3 #kg
g = 9.8 #m/s^2
v0x = -0.1 #m/s
H = 553. #m
# setting a timestep to be 50 ms
dt = 0.05 #s
N = int(T / dt)
# Allocating arrays for 2D problem
v = np.zeros((N+1, 2))
r = np.zeros((N+1, 2))
f = np.zeros((N+1, 2))
# initial conditions:
r[0] = np.array([0., H])
v[0] = np.array([-v0x, 0.])
# the only force is gravity
f[:] = np.array([0., -m * g])
## Run dynamics:
for n in range(N):
v[n+1] = v[n] + f[n]/m * dt
r[n+1] = r[n] + v[n+1] * dt
## drawing the first data point
scat = ax.scatter(r[0,0], r[0,1], marker='o', c='g', s=200)
## animating
def animate(i):
scat.set_offsets(r[i])
ani = animation.FuncAnimation(fig, func=animate, frames=N)
## this function will create a lot of *.png files in a folder 'CNtower_frames'
## and create an HTML page with a simulation
ani.save('CNtower.html', writer=animation.HTMLWriter(fps= 1//dt))
plt.close()
#ani.save('CNtower.mp4', fps= 1//dt)
胡克定律模拟三体问题
蛋白质结构和功能
分子力学
蛋白质的分子动力学
蛋白质折叠成α螺旋的分子动力学模拟
分子动力学轨迹分析
源代码
模拟和分析
分析分子动力学模拟脚本
分子动力学模拟中非共价相互作用的快速、可定制和可视化分析
探索式分子可视化系统
在配置文件或分子动力学模拟的轨迹中识别和分析表面分子
Python生物工程研究
Last updated