"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "data/chempy/tinker/make_simple.py" between
pymol-v1.8.6.0.tar.bz2 and pymol-v2.1.0.tar.bz2

About: PyMOL is a Python-enhanced molecular graphics tool. It excels at 3D visualization of proteins, small molecules, density, surfaces, and trajectories. It also includes molecular editing, ray tracing, and movies. Open Source version.

make_simple.py  (pymol-v1.8.6.0.tar.bz2):make_simple.py  (pymol-v2.1.0.tar.bz2)
from __future__ import print_function
import string import string
import os import os
import sys import sys
# ChemPy Simple Forcefield (CSFF) Generator Script # ChemPy Simple Forcefield (CSFF) Generator Script
# #
# A simplified force field based on Amber Parm99 # A simplified force field based on Amber Parm99
# =================================================== # ===================================================
# This force field is designed to be used to answer # This force field is designed to be used to answer
# general questions about shape and size of small # general questions about shape and size of small
skipping to change at line 58 skipping to change at line 60
# skip # skip
l = f.readline() l = f.readline()
# read names & molecular weights # read names & molecular weights
self.type = [] self.type = []
self.mw = {} self.mw = {}
while 1: while 1:
l = string.strip(f.readline()) l = string.strip(f.readline())
if not len(l): break if not len(l): break
a2 = string.strip(l[0:2]) a2 = string.strip(l[0:2])
self.type.append(a2) self.type.append(a2)
if not self.mw.has_key(a2): if a2 not in self.mw:
self.mw[a2] = [] self.mw[a2] = []
self.mw[a2].append([l[3:]]) self.mw[a2].append([l[3:]])
# skip 1 # skip 1
l = f.readline() l = f.readline()
# read bonds # read bonds
self.bond = {} self.bond = {}
while 1: while 1:
l = string.strip(f.readline()) l = string.strip(f.readline())
if not len(l): break if not len(l): break
a5 = l[0:5] a5 = l[0:5]
if a5[0:2]>a5[3:5]: if a5[0:2]>a5[3:5]:
a5 = a5[3:5]+'-'+a5[0:2] a5 = a5[3:5]+'-'+a5[0:2]
if not self.bond.has_key(a5): if a5 not in self.bond:
self.bond[a5] = [] self.bond[a5] = []
self.bond[a5].append([l[5:]]) self.bond[a5].append([l[5:]])
# read angles # read angles
self.angle = {} self.angle = {}
while 1: while 1:
l = string.strip(f.readline()) l = string.strip(f.readline())
if not len(l): break if not len(l): break
a5 = l[0:8] a5 = l[0:8]
if a5[0:2]>a5[6:8]: if a5[0:2]>a5[6:8]:
a5 = a5[6:8]+'-'+a5[3:5]+'-'+a5[0:2] a5 = a5[6:8]+'-'+a5[3:5]+'-'+a5[0:2]
if not self.angle.has_key(a5): if a5 not in self.angle:
self.angle[a5] = [] self.angle[a5] = []
self.angle[a5].append([l[8:]]) self.angle[a5].append([l[8:]])
# read torsion # read torsion
self.torsion = {} self.torsion = {}
while 1: while 1:
l = string.strip(f.readline()) l = string.strip(f.readline())
if not len(l): break if not len(l): break
a5 = l[0:11] a5 = l[0:11]
if not self.torsion.has_key(a5): if a5 not in self.torsion:
self.torsion[a5] = [] self.torsion[a5] = []
self.torsion[a5].append([l[11:]]) self.torsion[a5].append([l[11:]])
# read impropers # read impropers
self.improper = {} self.improper = {}
while 1: while 1:
l = string.strip(f.readline()) l = string.strip(f.readline())
if not len(l): break if not len(l): break
a5 = l[0:11] a5 = l[0:11]
if not self.improper.has_key(a5): if a5 not in self.improper:
self.improper[a5] = [] self.improper[a5] = []
self.improper[a5].append([l[11:]]) self.improper[a5].append([l[11:]])
# skip # skip
while 1: while 1:
l = string.strip(f.readline()) l = string.strip(f.readline())
if not len(l): break if not len(l): break
# read vdw equivalents # read vdw equivalents
self.vdw_eq = {} self.vdw_eq = {}
while 1: while 1:
l = string.strip(f.readline()) l = string.strip(f.readline())
skipping to change at line 165 skipping to change at line 167
"tmp3.dat > tmp4.dat") "tmp3.dat > tmp4.dat")
os.system("sed 's/SO/T4/g;s/SX/TA/g;s/SH/T2/g;s/-S /-T2/g;s/S -/T2-/g;' "+ os.system("sed 's/SO/T4/g;s/SX/TA/g;s/SH/T2/g;s/-S /-T2/g;s/S -/T2-/g;' "+
"tmp4.dat > tmp5.dat") "tmp4.dat > tmp5.dat")
os.system("sed 's/-F /-R1/g;s/F -/R1-/g;s/-I /-R4/g;s/I -/R4-/g;"+ os.system("sed 's/-F /-R1/g;s/F -/R1-/g;s/-I /-R4/g;s/I -/R4-/g;"+
"s/Cl/R2/g;s/Br/R3/g;' tmp5.dat > tmp6.dat") "s/Cl/R2/g;s/Br/R3/g;' tmp5.dat > tmp6.dat")
tmp = BlankObject() tmp = BlankObject()
print "CSFF: Chemical Python Simplified Force Field by Warren L. DeLano" print("CSFF: Chemical Python Simplified Force Field by Warren L. DeLano")
load(tmp,'tmp6.dat') load(tmp,'tmp6.dat')
kees = tmp.mw.keys() kees = list(tmp.mw.keys())
kees.sort() kees.sort()
for a in kees: for a in kees:
c = '' c = ''
lst = '' lst = ''
for b in tmp.mw[a]: for b in tmp.mw[a]:
if lst!=b[0][0:8]: if lst!=b[0][0:8]:
print "%s%-2s %s" %(c,a,b[0]) print("%s%-2s %s" %(c,a,b[0]))
c = ' ' c = ' '
lst = b[0][0:8] lst = b[0][0:8]
l = [ l = [
'QA 16.00 0.434 delocalized, cationic oxygen', 'QA 16.00 0.434 delocalized, cationic oxygen',
'T1 32.06 2.900 Thiocarbonyl', 'T1 32.06 2.900 Thiocarbonyl',
] ]
for a in l: for a in l:
print a print(a)
print print()
print "A J1 J2 J3 J4 JN Q1 Q2 QN" print("A J1 J2 J3 J4 JN Q1 Q2 QN")
kees = tmp.bond.keys() kees = list(tmp.bond.keys())
kees.sort() kees.sort()
for a in kees: for a in kees:
if len(tmp.bond[a])==1: if len(tmp.bond[a])==1:
print "%-1s%s" %(a,tmp.bond[a][0][0]) print("%-1s%s" %(a,tmp.bond[a][0][0]))
else: else:
f1 = 0.0 f1 = 0.0
f2 = 0.0 f2 = 0.0
c = 0 c = 0
for b in tmp.bond[a]: for b in tmp.bond[a]:
f1 = f1 + float(b[0][0:9]) f1 = f1 + float(b[0][0:9])
f2 = f2 + float(b[0][9:18]) f2 = f2 + float(b[0][9:18])
c = c + 1 c = c + 1
f1 = f1 / c f1 = f1 / c
f2 = f2 / c f2 = f2 / c
print "%-1s%7.1f%9.3f combination of %d"%(a,f1,f2,c) print("%-1s%7.1f%9.3f combination of %d"%(a,f1,f2,c))
# missing bond terms # missing bond terms
l = [ l = [
'A -QN 434.0 1.010 INCORRECT HYDROGEN', 'A -QN 434.0 1.010 INCORRECT HYDROGEN',
'A -JN 434.0 1.010 INCORRECT HYDROGEN', 'A -JN 434.0 1.010 INCORRECT HYDROGEN',
'A -JA 434.0 1.010 WLD from A -J3', 'A -JA 434.0 1.010 WLD from A -J3',
'D2-DJ 428.0 1.425 WLD from CA-D2', 'D2-DJ 428.0 1.425 WLD from CA-D2',
'D2-D3 450.0 1.331 WLD gross estimate', 'D2-D3 450.0 1.331 WLD gross estimate',
'D2-Q2 480.0 1.240 WLD from D3-Q2', 'D2-Q2 480.0 1.240 WLD from D3-Q2',
skipping to change at line 287 skipping to change at line 289
'Q2-Q2 453.7 1.370 WLD gross estimate', 'Q2-Q2 453.7 1.370 WLD gross estimate',
'Q2-T4 525.0 1.500 WLD gross estimate', 'Q2-T4 525.0 1.500 WLD gross estimate',
'TA-TA 166.0 2.038 WLD from T2-T2', 'TA-TA 166.0 2.038 WLD from T2-T2',
'TA-T4 166.0 2.038 WLD from T2-T2', 'TA-T4 166.0 2.038 WLD from T2-T2',
'T2-T4 166.0 2.038 WLD from T2-T2', 'T2-T4 166.0 2.038 WLD from T2-T2',
] ]
for a in l: for a in l:
if tmp.bond.has_key(a[0:5]): if a[0:5] in tmp.bond:
sys.stderr.write("Duplicate bond: %s\n"%a) sys.stderr.write("Duplicate bond: %s\n"%a)
print a print(a)
print print()
kees = tmp.angle.keys() kees = list(tmp.angle.keys())
kees.sort() kees.sort()
for a in kees: for a in kees:
if len(tmp.angle[a])==1: if len(tmp.angle[a])==1:
print "%-1s%s" %(a,tmp.angle[a][0][0]) print("%-1s%s" %(a,tmp.angle[a][0][0]))
else: else:
f1 = 0.0 f1 = 0.0
f2 = 0.0 f2 = 0.0
c = 0 c = 0
for b in tmp.angle[a]: for b in tmp.angle[a]:
f1 = f1 + float(b[0][0:10]) f1 = f1 + float(b[0][0:10])
f2 = f2 + float(b[0][10:22]) f2 = f2 + float(b[0][10:22])
c = c + 1 c = c + 1
f1 = f1 / c f1 = f1 / c
f2 = f2 / c f2 = f2 / c
print "%-1s%8.1f%12.2f combination of %d"%(a,f1,f2,c) print("%-1s%8.1f%12.2f combination of %d"%(a,f1,f2,c))
# missing angle terms # missing angle terms
l = [ l = [
'A -QN-J3 50.0 109.50 INCORRECT HYDROGEN', 'A -QN-J3 50.0 109.50 INCORRECT HYDROGEN',
'A -JN-J3 50.0 109.50 INCORRECT HYDROGEN', 'A -JN-J3 50.0 109.50 INCORRECT HYDROGEN',
'A -D3-D2 50.0 119.10 WLD from A -D3-J3', 'A -D3-D2 50.0 119.10 WLD from A -D3-J3',
'A -D3-J1 50.0 119.10 WLD from A -D3-J3', 'A -D3-J1 50.0 119.10 WLD from A -D3-J3',
'A -D3-JA 50.0 119.10 WLD from A -D3-J3', 'A -D3-JA 50.0 119.10 WLD from A -D3-J3',
'A -D3-R1 50.0 119.10 WLD from A -D3-J3', 'A -D3-R1 50.0 119.10 WLD from A -D3-J3',
'A -D3-R2 50.0 119.10 WLD from A -D3-J3', 'A -D3-R2 50.0 119.10 WLD from A -D3-J3',
'A -D3-R3 50.0 119.10 WLD from A -D3-J3', 'A -D3-R3 50.0 119.10 WLD from A -D3-J3',
skipping to change at line 979 skipping to change at line 981
'TA-D3-TA 70.0 118.00 WLD gross estimate', 'TA-D3-TA 70.0 118.00 WLD gross estimate',
'TA-DA-TA 70.0 120.00 WLD from DA-DA-TA', 'TA-DA-TA 70.0 120.00 WLD from DA-DA-TA',
'TA-D4-TA 70.0 109.00 WLD gross estimate', 'TA-D4-TA 70.0 109.00 WLD gross estimate',
'TA-DJ-TA 70.0 120.00 WLD from DA-DA-TA', 'TA-DJ-TA 70.0 120.00 WLD from DA-DA-TA',
] ]
for a in l: for a in l:
if tmp.angle.has_key(a[0:8]): if a[0:8] in tmp.angle:
sys.stderr.write("Duplicate angle: %s\n"%a) sys.stderr.write("Duplicate angle: %s\n"%a)
print a print(a)
print print()
# missing generalized torsions (divisors/forces need to be checked...) # missing generalized torsions (divisors/forces need to be checked...)
l = [ l = [
'X -D2-DJ-X 2 0.00 0.0 2. WLD null', 'X -D2-DJ-X 2 0.00 0.0 2. WLD null',
'X -D2-D3-X 2 0.00 0.0 2. WLD null', 'X -D2-D3-X 2 0.00 0.0 2. WLD null',
'X -D2-J3-X 2 0.00 0.0 2. WLD null', 'X -D2-J3-X 2 0.00 0.0 2. WLD null',
'X -D2-JA-X 2 0.00 0.0 2. WLD null', 'X -D2-JA-X 2 0.00 0.0 2. WLD null',
'X -D2-T2-X 2 0.00 0.0 2. WLD null', 'X -D2-T2-X 2 0.00 0.0 2. WLD null',
'X -D2-Q2-X 2 0.00 0.0 2. WLD null', 'X -D2-Q2-X 2 0.00 0.0 2. WLD null',
'X -D3-JA-X 4 8.70 180.0 2. WLD from X -DJ-D3-X ', 'X -D3-JA-X 4 8.70 180.0 2. WLD from X -DJ-D3-X ',
'X -D3-J1-X 1 0.0 0.0 2. WLD null', 'X -D3-J1-X 1 0.0 0.0 2. WLD null',
skipping to change at line 1033 skipping to change at line 1035
'X -Q2-T4-X 4 2.40 0.0 3. WLD from X -J4-T4-X ', 'X -Q2-T4-X 4 2.40 0.0 3. WLD from X -J4-T4-X ',
'X -Q2-Q2-X 9 1.40 0.0 3. WLD from X -D4-D4-X ', 'X -Q2-Q2-X 9 1.40 0.0 3. WLD from X -D4-D4-X ',
'X -T2-T2-X 1 3.50 0.0 -2. WLD from D4-T2-T2-D 4', 'X -T2-T2-X 1 3.50 0.0 -2. WLD from D4-T2-T2-D 4',
'X -T2-T2-X 1 0.60 0.0 3. WLD from D4-T2-T2-D 4', 'X -T2-T2-X 1 0.60 0.0 3. WLD from D4-T2-T2-D 4',
'X -T2-T4-X 1 0.0 0.0 2. WLD null', 'X -T2-T4-X 1 0.0 0.0 2. WLD null',
'X -TA-TA-X 1 0.0 0.0 2. WLD null', 'X -TA-TA-X 1 0.0 0.0 2. WLD null',
'X -TA-T4-X 1 0.0 0.0 2. WLD null', 'X -TA-T4-X 1 0.0 0.0 2. WLD null',
] ]
for a in l: for a in l:
if tmp.torsion.has_key(a[0:11]): if a[0:11] in tmp.torsion:
sys.stderr.write("Duplicate torsion: %s\n"%a) sys.stderr.write("Duplicate torsion: %s\n"%a)
print a print(a)
kees = tmp.torsion.keys() kees = list(tmp.torsion.keys())
kees.sort() kees.sort()
kees.reverse() kees.reverse()
for a in kees: for a in kees:
if len(tmp.torsion[a])==1: if len(tmp.torsion[a])==1:
print "%-1s%s" %(a,tmp.torsion[a][0][0]) print("%-1s%s" %(a,tmp.torsion[a][0][0]))
else: else:
b = tmp.torsion[a][0] b = tmp.torsion[a][0]
f1 = float(b[0][0:6]) f1 = float(b[0][0:6])
f2 = float(b[0][6:14]) f2 = float(b[0][6:14])
f3 = float(b[0][14:27]) f3 = float(b[0][14:27])
f4 = float(b[0][27:42]) f4 = float(b[0][27:42])
c = 1 c = 1
flag = 0 flag = 0
for b in tmp.torsion[a][1:]: for b in tmp.torsion[a][1:]:
if ((f1 != float(b[0][0:6])) or if ((f1 != float(b[0][0:6])) or
(f3 != float(b[0][14:27])) or (f3 != float(b[0][14:27])) or
(f4 != float(b[0][27:42]))): (f4 != float(b[0][27:42]))):
flag=1 flag=1
break break
f2 = f2 + float(b[0][6:14]) f2 = f2 + float(b[0][6:14])
c = c + 1 c = c + 1
if not flag: if not flag:
f2 = f2 / c f2 = f2 / c
print "%-1s%4d%8.2f%13.1f%14d. combination of %d"%(a,f1,f2,f3,f 4,c) print("%-1s%4d%8.2f%13.1f%14d. combination of %d"%(a,f1,f2,f3,f 4,c))
else: else:
flag = 0 flag = 0
ck = {} ck = {}
for b in tmp.torsion[a]: for b in tmp.torsion[a]:
f4 = float(b[0][27:42]) f4 = float(b[0][27:42])
if ck.has_key(f4): if f4 in ck:
flag=1 flag=1
break break
ck[f4] = 1 ck[f4] = 1
if not flag: if not flag:
for b in tmp.torsion[a]: for b in tmp.torsion[a]:
print "%-1s%s" %(a,b[0]) print("%-1s%s" %(a,b[0]))
else: # known special cases else: # known special cases
if a == 'X -D4-J4-X ': if a == 'X -D4-J4-X ':
print "%-1s%s" %(a,tmp.torsion[a][1][0]) print("%-1s%s" %(a,tmp.torsion[a][1][0]))
elif a == 'X -D4-J3-X ': elif a == 'X -D4-J3-X ':
print "%-1s%s" %(a,tmp.torsion[a][1][0]) print("%-1s%s" %(a,tmp.torsion[a][1][0]))
elif a == 'Q2-D4-D4-Q2': elif a == 'Q2-D4-D4-Q2':
print "%-1s%s" %(a,tmp.torsion[a][1][0]) print("%-1s%s" %(a,tmp.torsion[a][1][0]))
print "%-1s%s" %(a,tmp.torsion[a][2][0]) print("%-1s%s" %(a,tmp.torsion[a][2][0]))
elif a == 'A -D4-DJ-Q1': elif a == 'A -D4-DJ-Q1':
print "%-1s%s" %(a,tmp.torsion[a][1][0]) print("%-1s%s" %(a,tmp.torsion[a][1][0]))
print "%-1s%s" %(a,tmp.torsion[a][2][0]) print("%-1s%s" %(a,tmp.torsion[a][2][0]))
else: else:
for b in tmp.torsion[a]: for b in tmp.torsion[a]:
print " %-1s%s" %(a,b[0]) print(" %-1s%s" %(a,b[0]))
# missing specific torsions # missing specific torsions
l = [ l = [
'A -T2-T2-D4 1 3.50 0.0 -2. WLD from D4-T2-T2-D 4', 'A -T2-T2-D4 1 3.50 0.0 -2. WLD from D4-T2-T2-D 4',
'A -T2-T2-D4 1 0.60 0.0 3. WLD from D4-T2-T2-D 4', 'A -T2-T2-D4 1 0.60 0.0 3. WLD from D4-T2-T2-D 4',
] ]
for a in l: for a in l:
if tmp.torsion.has_key(a[0:11]): if a[0:11] in tmp.torsion:
sys.stderr.write("Duplicate torsion: %s\n"%a) sys.stderr.write("Duplicate torsion: %s\n"%a)
print a print(a)
print print()
# missing general impropers # missing general impropers
l = [ l = [
'X -X -DJ-JA 10.5 180. 2. WLD from X -X -DJ-Q 1', 'X -X -DJ-JA 10.5 180. 2. WLD from X -X -DJ-Q 1',
'X -X -DJ-QN 10.5 180. 2. WLD from X -X -DJ-Q 1', 'X -X -DJ-QN 10.5 180. 2. WLD from X -X -DJ-Q 1',
] ]
for a in l: for a in l:
if tmp.improper.has_key(a[0:11]): if a[0:11] in tmp.improper:
sys.stderr.write("Duplicate improper: %s\n"%a) sys.stderr.write("Duplicate improper: %s\n"%a)
print a print(a)
print print()
kees = tmp.improper.keys() kees = list(tmp.improper.keys())
kees.sort() kees.sort()
kees.reverse() kees.reverse()
for a in kees: # no major redundancy, just print the first record for a in kees: # no major redundancy, just print the first record
print "%-1s%s" %(a,tmp.improper[a][0][0]) print("%-1s%s" %(a,tmp.improper[a][0][0]))
print ''' print('''
A Q2 0000. 0000. 4. flag for fast water A Q2 0000. 0000. 4. flag for fast water
J1 J1 J2 J3 J4 J1 J1 J2 J3 J4
D2 D2 D3 D4 D2 D2 D3 D4
MOD4 RE MOD4 RE
A 1.3870 0.0157 A Venstra et al JCC,8,(1992),963 A 1.3870 0.0157 A Venstra et al JCC,8,(1992),963
QN 1.6612 0.2100 O OPLS QN 1.6612 0.2100 O OPLS
QA 1.6612 0.2100 O OPLS QA 1.6612 0.2100 O OPLS
Q2 1.6612 0.2100 O OPLS Q2 1.6612 0.2100 O OPLS
skipping to change at line 1182 skipping to change at line 1184
# oxygen # oxygen
TINKER QA 8 3 TINKER QA 8 3
TINKER Q2 8 2 TINKER Q2 8 2
TINKER Q1 8 1 TINKER Q1 8 1
TINKER QN 8 1 TINKER QN 8 1
# sulfer # sulfer
TINKER T4 16 4 TINKER T4 16 4
TINKER TA 16 2 TINKER TA 16 2
TINKER T2 16 2 TINKER T2 16 2
TINKER T1 16 1 TINKER T1 16 1
''' ''')
os.unlink('tmp1.dat') os.unlink('tmp1.dat')
os.unlink('tmp2.dat') os.unlink('tmp2.dat')
os.unlink('tmp3.dat') os.unlink('tmp3.dat')
os.unlink('tmp4.dat') os.unlink('tmp4.dat')
os.unlink('tmp5.dat') os.unlink('tmp5.dat')
os.unlink('tmp6.dat') os.unlink('tmp6.dat')
 End of changes. 37 change blocks. 
47 lines changed or deleted 49 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)