57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
#A* -------------------------------------------------------------------
|
|
#B* This file contains source code for the PyMOL computer program
|
|
#C* copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific.
|
|
#D* -------------------------------------------------------------------
|
|
#E* It is unlawful to modify or remove this copyright notice.
|
|
#F* -------------------------------------------------------------------
|
|
#G* Please see the accompanying LICENSE file for further information.
|
|
#H* -------------------------------------------------------------------
|
|
#I* Additional authors of this source file include:
|
|
#-*
|
|
#-*
|
|
#-*
|
|
#Z* -------------------------------------------------------------------
|
|
|
|
from chempy.models import Indexed
|
|
from chempy import water_amber,water_residues
|
|
from chempy import hetatm,path,io
|
|
import os
|
|
|
|
import copy
|
|
|
|
def fill_box(area,water=None,box=18.774349):
|
|
if not water:
|
|
test_path = path + "water.pdb"
|
|
if os.path.exists(test_path):
|
|
water= io.pdb.fromFile(test_path)
|
|
water= hetatm.generate(water,forcefield=water_amber,
|
|
topology=water_residues)
|
|
if not water:
|
|
raise RunError('Need water structure file.')
|
|
solv_box = Indexed()
|
|
half = box/2
|
|
x = area[0][0]
|
|
c = 0
|
|
while x<area[1][0]:
|
|
y = area[0][1]
|
|
while y<area[1][1]:
|
|
z = area[0][2]
|
|
while z<area[1][2]:
|
|
tmp = copy.deepcopy(water)
|
|
lr = ''
|
|
for a in tmp.atom:
|
|
if a.resi!=lr:
|
|
c = c + 1
|
|
lr = a.resi
|
|
a.resi = str(c)
|
|
b = a.coord
|
|
b[0] = b[0] + x + half
|
|
b[1] = b[1] + y + half
|
|
b[2] = b[2] + z + half
|
|
print(" "+__name__+": filling box at %8.3f %8.3f %8.3f\n" % (x,y,z))
|
|
solv_box.merge(tmp)
|
|
z = z + box
|
|
y = y + box
|
|
x = x + box
|
|
return solv_box
|