가정하자 나는이 두 PDB 파일 (다음과 같이 그 중 하나입니다)pdb 파일을 읽고 파이썬을 사용하여 FFT 기반 도킹을 수행하는 방법은 무엇입니까?
ATOM 1 N MET A 1 66.104 56.583 -35.505
ATOM 2 CA MET A 1 66.953 57.259 -36.531
ATOM 3 C MET A 1 67.370 56.262 -37.627
ATOM 4 O MET A 1 67.105 55.079 -37.531
ATOM 5 CB MET A 1 68.227 57.852 -35.867
ATOM 6 CG MET A 1 67.848 58.995 -34.899
ATOM 7 SD MET A 1 66.880 58.593 -33.421
.... . .. ... . . ...... ...... ......
.... . .. ... . . ...... ...... ......
이 파일은 다음과 같은 스크립트를 사용하여 파이썬에서 읽을 수 있습니다.
import sys
x=[];y=[];z=[]
res=[]
Nr=0
for fn in sys.argv[1:]:
f=open(fn,'r')
while 1:
line=f.readline()
if not line: break
if line[0:6]=='ATOM ' :
rx=float(line[30:38]);ry=float(line[38:46]);rz=float(line[46:54])
if line[21]=='A' :
x.append(rx); y.append(ry); z.append(rz)
Nr=Nr+1
res.append(line[17:20])
for i in range(1,Nr-1):
print fn, i, res[i], x[i], y[i], z[i]
f.close
는 지금은 N*N*N
차원의 격자를 생성하고 회전 그리드에 분자를 번역하고 싶습니다. 회전 및 평행 이동은 FFT (Fast Fourier Transform)를 사용하여 수행 할 수 있습니다.
import numpy as np
import fftw as fft
class Grid3D(object):
def __init__(self, grid_dimension):
x = y = z = grid_dimension
self.grid = np.zeros([x, y, z], dtype=float)
를 다음과 같이 뭔가를 작성하는 노력이 모든 차원 그리드 및 FFT를 사용하여 두 분자의 도킹을 수행하는 사실이다. 나는 더 나아가거나 더 나은 방법을 진행하는 방법을 알고 싶습니까?
특정 질문은 여기에 있습니다 ... –
1 중심 리셉터클은 중심에서 원점으로 이동합니다. 2. 중심 리간드는 중심에서 질량 중심을 기준으로 조정됩니다. 3. FFT를위한 중심 분자를 포함 할 입방 격자 크기 선택 4. 복소수의 3D 그리드에 점수를 할당하여 수용체를 해독합니다. 5. 입력 방향 리간드를 랜덤 방향으로 돌립니다. 6. 균등하게 분포 된 세트 및 이산화 7. 3D FFT를 실행하여 리간드와 수용체 격자 사이의 컨볼 루션을 계산하고 결과 격자에서 최고 스코어링 위치를 선택하십시오. 8. 총 6,600 개의 리간드 회전 (15 ° 각 샘플링)에 대해 단계 6-7을 반복하십시오. – user2176228
위의 절차를 따르는 잘 알려진 방법이 있습니까? – user2176228