Esempio n. 1
0
def get_origin_translation(asu_prmtop_file_name, asu_rst7_file_name):
  rst7 = raf.rst7(asu_rst7_file_name)
  coords = rst7.Get_Coords()
  UCbox = rst7.Get_Box()
  u,invu = raf.CompXfrm(UCbox)
  masses = raf.prmtop(asu_prmtop_file_name).Get_Masses()
  com = raf.COM(coords,masses)
  frac_com = dot(u, com)
  origin_translation = array([0.5, 0.5, 0.5]) - frac_com
  return u, origin_translation
Esempio n. 2
0
def get_origin_translation(asu_prmtop_file_name, asu_rst7_file_name):
    rst7 = raf.rst7(asu_rst7_file_name)
    coords = rst7.Get_Coords()
    UCbox = rst7.Get_Box()
    u, invu = raf.CompXfrm(UCbox)
    masses = raf.prmtop(asu_prmtop_file_name).Get_Masses()
    com = raf.COM(coords, masses)
    frac_com = dot(u, com)
    origin_translation = array([0.5, 0.5, 0.5]) - frac_com
    return u, origin_translation
Esempio n. 3
0
def center_frac_coords(frac_crds, parm, s, e):
    coords = frac_crds[s:e, :]
    masses = parm.parm_data['MASS'][s:e]
    com = raf.COM(coords, masses)
    shift = array([0.5, 0.5, 0.5]) - com
    cntred_frac_crds = frac_crds + shift
    return cntred_frac_crds
Esempio n. 4
0
def run(nmodes, ipdb_name, ievecs_name, ofile_name):
	#Get info from pdb
	ipdb=raf.pdb(ipdb_name)
	name=ipdb_name.rstrip('.pdb')
	atomnames=ipdb.Get_AtomNames()
	resnames=ipdb.Get_ResidueNames()
	resids=ipdb.Get_ResidueNumbers()
	bfactors=ipdb.Get_Bfactors()
	coordinates=ipdb.Get_Coords()
	
	#Write info from pdb to nmd file
	ofile=open(ofile_name, 'w')
	ofile.write('nmwiz_load %s\n' %ofile_name)
	print('name %s' %name, file=ofile)
	print('atomnames ', end="",file=ofile)
	print (*atomnames, file=ofile)
	print('resnames ', end="",file=ofile)
	print (*resnames, file=ofile)
	print('resids ', end="",file=ofile)
	print (*resids, file=ofile)
	print('bfactors ', end="",file=ofile)
	print (*bfactors, file=ofile)
	print('coordinates ', end="", file=ofile)
	print(*["%8.3f " %xyz for atom in coordinates for xyz in atom], end="", file=ofile)
	#This would've been the python2.x way of doing it:
	#~ for atom in coordinates:
		#~ for coordinate in atom:
			#~ ofile.write("%8.3f " %coordinate)
	print ('', file=ofile)
	
	#Get modes from evecs file and write to nmd file
	vecfile=open(ievecs_name, 'r')
	line=''
	while line[0:5]!=' ****':
		line=vecfile.readline()
	for i in range(nmodes):	
		mode_number, freq=vecfile.readline().strip().split()
		assert int(mode_number)== i+1
		mode=[]
		line=vecfile.readline()
		while line[0:5]!=' ****':
			for i in line.strip().split():
				mode.append(float(i))
			line=vecfile.readline()
		amplitude=(1/float(freq))	
		print('mode %2d %12.10f ' %(int(mode_number), amplitude), end="", file=ofile)
		print(*["%12.5f " %fluc for fluc in mode], end="", file=ofile)
		print ('', file=ofile)
	vecfile.close()
Esempio n. 5
0
#! /usr/bin/python
import ReadAmberFiles as raf

apdb=raf.pdb('vAla3_minimized.pdb')
box=apdb.Get_Box()
coords=apdb.Get_Coords()
natoms=natoms= len(apdb.ATOMlines)
raf.printrst7(coords, box, natoms, 'vAla3_minimized.rst7', comment='rst7 written by pawel')



Esempio n. 6
0
Rf = zeros((numops, 3, 3))
Tf = zeros((numops, 3))
op = 0
for line in symops.splitlines():
    line = line.split('\'')[-1].split()
    for i in range(3):
        for j in range(3):
            Rf[op][i][j] = line[i * 3 + j + 1]
        try:
            Tf[op][i] = float(line[((i * 2) - 1 + 11)]) / float(line[(
                (i * 2) + 11)])
        except ZeroDivisionError:
            Tf[op][i] = 0.0
    op += 1

pdbf = raf.pdb(pdbfile)
box = pdbf.Get_Box()
u, invu = raf.CompXfrm(box)

print "================================"
Tc = zeros(shape(Tf))
for i in range(numops):
    Tc[i] = dot(invu, Tf[i]).astype(float32)
#~ print Tc
print "================================"

Rc = zeros(shape(Rf))
for i in range(numops):
    Rc[i] = dot(dot(invu, Rf[i]), u)
#~ print Rc
print "================================"
Esempio n. 7
0
#! /usr/bin/env python
import ReadAmberFiles as raf

iprmtop=raf.prmtop('/net/casegroup2/u2/pjanowsk/Case/4lzt/4lzt_ff12SB/4lztSh_new.prmtop')
masses=iprmtop.Get_Masses()
totalmass=sum(masses)
irst7=raf.rst7('/net/casegroup2/u2/pjanowsk/Case/4lzt/4lzt_ff12SB/4lztSh.rst7')
box=irst7.Get_Box()
volume=raf.Get_volume(box)
density= totalmass/volume*10/6.022
print "density: %8.3f g/cm^3" %density
Esempio n. 8
0
numops=len(symops.splitlines())
Rf=zeros((numops,3,3))
Tf=zeros((numops,3))
op=0
for line in symops.splitlines():
	line=line.split('\'')[-1].split()
	for i in range(3):
		for j in range(3):
			Rf[op][i][j]=line[i*3+j+1]
		try:
			Tf[op][i]=float(line[((i*2)-1+11)])/float(line[((i*2)+11)])
		except ZeroDivisionError:
			Tf[op][i]=0.0
	op+=1

pdbf=raf.pdb(pdbfile)
box=pdbf.Get_Box()
print box, type(box)
u,invu=raf.CompXfrm(box)


print "================================"
Tc=zeros(shape(Tf))
for i in range(numops):
	Tc[i]=dot(invu,Tf[i]).astype(float32)
#~ print Tc
print "================================"

Rc=zeros(shape(Rf))
for i in range(numops):
	Rc[i]=dot(dot(invu,Rf[i]),u)
Esempio n. 9
0
def NAsu(pdbfile_name):
    pdbfile = RAF.pdb(pdbfile_name)
    smtry, tr = pdbfile.Get_SMTRY()
    n_asu = len(smtry)
    return n_asu
#mass-weighted covariance matrix is already calculated
cv=genfromtxt('mwcvmat.dat')
l,v=linalg.eig(cv)
s=argsort(l)[::-1]

#convert eigenvalues to frequencies in cm-1
f=zeros((nmodes))
for i in range(len(l)):
	if l[i]<0: f[i]= -108.587*sqrt(-0.6/l[i])
	elif l[i]>0: f[i]= 108.587*sqrt(0.6/l[i])
	else: f[i]=0
l[s]
v[:,s]   #sort columns

#get masses and un-mass weigh the modes
m=raf.prmtop("na.prmtop").Get_Masses()
m=[[i]*3 for i in m]
m=[item for sublist in m for item in sublist] 


for vec in range(v.shape[1]):
	v[:,vec]=v[:,vec]/sqrt(m)



#calculate rmsf fluctuations along modes
CNST=2.776904e-11  #tkbc2*avogadro's  
CONT=1.591549e+07  #(ang/cm / 2pi)
for atom in range(natoms):
	sum, sumx, sumy, sumz=0,0,0,0
	for mode in range(nmodes):
  #~ if line.strip():
    #~ fails.append( line.strip().split('/')[0] )

fails=['1a21', '1a8v', '1ba7', '1c03', '1dvm', '1ezs', '1f3u', '1fc3', 
       '1fh5', '1jxo', '1ofp', '1oy3', '1q32', '1q4o', '1r19', '1r1z', 
      '1r52', '1rzi', '1t0j', '1tee', '1tks', '1tw9', '1tzo', '1vh0', 
      '1vr4', '1w3b', '1wp7', '1wp8', '1x13']


dirs=[ name for name in os.listdir('.') if os.path.isdir(name) and name[0]=='1' ]
bad=[]
good=[]
for dir in dirs:
  if dir in fails:
    print dir
    trst=raf.rst7('%s/%s.rst7' %(dir,dir))
    box=trst.Get_Box()
    bad.append( raf.Get_volume(box) )
  else:
    print dir
    trst=raf.rst7('%s/%s.rst7' %(dir,dir))
    box=trst.Get_Box()
    good.append( raf.Get_volume(box) )

print "BAD: mean %1.0f\n" %(np.mean(bad))
for v in bad:
  print "%d\n" %v

print "\n"

print "GOOD: mean %1.0f\n" %(np.mean(good))
Esempio n. 12
0
#! /usr/bin/python
import ReadAmberFiles as raf
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("pdbfile", help="name of pdb file")
args = parser.parse_args()
pdb = raf.pdb(args.pdbfile)
box = pdb.Get_Box()
print(" %7.3f %7.3f %7.3f %7.3f %7.3f %7.3f " % (box[0], box[1], box[2], box[3], box[4], box[5]))
Esempio n. 13
0
# mass aligns with the experimental center of mass.                    #
#                                                                      #
#======================================================================#


parser = argparse.ArgumentParser()
parser.add_argument("-p", "--AsuTopology", help="Amber single ASU topology file")
parser.add_argument("-pdb", "--AsuPDB", help="Single ASU PDB file")
parser.add_argument("-pdbs", "--PdbWithSymmetry", help="PDB file containing SMTRY and CRYST1 records")
parser.add_argument("-prop", help="Propagation used to create the supercell. Format: \"x y z\"")
args = parser.parse_args()

############################################
#  SETUP                                   #
############################################
topo = raf.prmtop(args.AsuTopology)
pdb = raf.pdb(args.AsuPDB)
masses=topo.Get_Masses()
xtal_com=raf.COM(pdb.Get_Coords(),masses)
ix=int(args.prop.split()[0])
iy=int(args.prop.split()[1])
iz=int(args.prop.split()[2])
pdbs = raf.pdb(args.PdbWithSymmetry)
smtry,tr =pdbs.Get_SMTRY()
asymunits=len(smtry)

###########################################
#  MAIN                                   #
###########################################

i=1 #counter for the names of the unitcell trajectories
fails = [
    '1a21', '1a8v', '1ba7', '1c03', '1dvm', '1ezs', '1f3u', '1fc3', '1fh5',
    '1jxo', '1ofp', '1oy3', '1q32', '1q4o', '1r19', '1r1z', '1r52', '1rzi',
    '1t0j', '1tee', '1tks', '1tw9', '1tzo', '1vh0', '1vr4', '1w3b', '1wp7',
    '1wp8', '1x13'
]

dirs = [
    name for name in os.listdir('.') if os.path.isdir(name) and name[0] == '1'
]
bad = []
good = []
for dir in dirs:
    if dir in fails:
        print dir
        trst = raf.rst7('%s/%s.rst7' % (dir, dir))
        box = trst.Get_Box()
        bad.append(raf.Get_volume(box))
    else:
        print dir
        trst = raf.rst7('%s/%s.rst7' % (dir, dir))
        box = trst.Get_Box()
        good.append(raf.Get_volume(box))

print "BAD: mean %1.0f\n" % (np.mean(bad))
for v in bad:
    print "%d\n" % v

print "\n"

print "GOOD: mean %1.0f\n" % (np.mean(good))
Esempio n. 15
0
def GenNM(obj, nmids, mode, inp=None, amp=50., nframes=20, dump_file=False, \
          prmtop=None):
  nmids=[int(i) for i in nmids.split()]
  amp = float(amp)
  nframes=int(nframes)
  mode=int(mode)
  stored.NMA =  {}
  stored.NMA[obj] = {}
 
  if mode==1:
    if not inp:
      print "Please specify cpptraj covariance matrix file"
      return 0
    if (not prmtop):
      print "Please specify prmtop file for proper mass reweighing of vectors."
      return 0  
    print "Attempting to read mwcov matrix %s" %inp
    mwcvmat=genfromtxt(inp)
    print "Diagonalizing covariance matrix."
    w,v = linalg.eig(mwcvmat)
    #sort from largest eigenvvalue to smallest
    si=argsort(w)[::-1]
    w=w[si]
    v=v[:,si]
    #convert to cm-1
    for i in range(len(w)):
		if w[i]<0: w[i]= -108.587*sqrt(-0.6/w[i])
		elif w[i]>0: w[i]= 108.587*sqrt(0.6/w[i])
		else: w[i]=0
	#get masses and un-mass weigh the modes
    m=raf.prmtop(prmtop).Get_Masses()
    m=[[i]*3 for i in m]
    m=[item for sublist in m for item in sublist] 
    for vec in range(v.shape[1]):
      v[:,vec]=v[:,vec]/sqrt(m)  
    #store
    stored.NMA[obj]['w'] = w
    stored.NMA[obj]['v'] = v
  elif mode==2:
    if not inp:
      print "Please specify evecs frequency/eigenvector file"
      return 0 
    print "Attempting to read evecs file %s" %inp
    stored.NMA[obj]['w'], stored.NMA[obj]['v'] = ReadEvecs(inp)
  elif mode==3:
    if not inp:
      print "Please specify pickled normal mode object"
      return 0
    print "Attempting to read pickle file %s" %inp  
    stored.NMA[obj]=pickle.load( open(inp,"rb"))
    
  if dump_file:
    print "Dumping eigenvalues and modes to pickle file."	  
    pickle.dump(stored.NMA[obj], open(dump_file,"wb") )

 
  w = stored.NMA[obj]['w']
  v = stored.NMA[obj]['v']
  print "%7s%20s%20s" % ('NMID', 'f Hz', 'f cm^-1')
  for i in range(min(w.size,20)):
    print "%7d%20.5e\t%20.5f" % (i, w[i]*2.99792458e10, w[i]),
    if i in nmids:
      print "*"
    else:
      print ""
  for nmid in nmids:
    newobj = "%s-nm_%d" % (obj, nmid)
    cmd.delete(newobj)    
    nm = real(v[:,nmid])
    nm *= amp/sqrt((nm**2).sum())
    for ifr in range(nframes):
      cmd.create(newobj, obj, 1, ifr+1)
      stored.nm = nm*sin(2.*pi*ifr/nframes)
      cmd.alter_state(ifr+1, newobj, "x,y,z = x+stored.nm[(ID-1)*3], y+stored.nm[(ID-1)*3+1], z+stored.nm[(ID-1)*3+2]")
Esempio n. 16
0
def get_U_invU(asu_rst7_file_name):
    rst7 = Rst7.open(asu_rst7_file_name)
    UCbox = rst7.box
    U, invU = raf.CompXfrm(UCbox)
    return U, invU, UCbox