seq="ALA HYP ALA"

import protocol
protocol.initTopology('protein')

xplor.command("""

topology

autogen
   angles=true
end

residue HYP
  group
    atom N   type=N  charge=-0.36 end
 group
    atom CA  type=CT charge= 0.00 end
    atom HA  type=HA charge= 0.10 end
 group
    atom CB  type=CT charge=-0.20 end
    atom HB1 type=HA charge= 0.10 end
    atom HB2 type=HA charge= 0.10 end
 group
    atom CG  type=CP charge=-0.20 end
    atom HG1 type=HA charge= 0.10 end
    atom OG2 type=OH charge= 0.10 end
    atom HG2 type=H charge= 0.10 end
 group
    atom CD  type=CP charge= 0.06 end
    atom HD2 type=HA charge= 0.10 end   ! the order of the two h's
    atom HD1 type=HA charge= 0.10 end   ! is inverted for the sake of
 group
    atom C   type=C  charge= 0.48 end   ! hbuild
    atom O   type=O  charge=-0.48 end

  bond N  CA     bond CA HA
  bond CA CB     bond CB HB1     bond CB HB2
  bond CB CG     bond CG HG1     bond CG OG2 bond OG2 HG2
  bond CG CD     bond CD HD1     bond CD HD2
  bond CD N
  bond CA C
  bond C  O

  improper HA N C CB      !stereo CA
  improper HB1 HB2 CA CG  !stereo CB
!  improper HG1 OG2 CB CD  !stereo CG
  improper HD1 HD2 CG N   !stereo CD

end
  
end
""")

# FIX this:
#
#import psfGen
#psfGen.addResidueName('HYP')
#
#psfGen.seqToPSF(seq)


seq="ALA HYP ALA"
segName="" # segid
startResid=1


ntermPatch="NTER"
ctermPatch="CTER"

nterm = r"""
FIRSt %s                TAIL + *       END
""" % ntermPatch
cterm = "LAST  %s   HEAD - *                    END" % ctermPatch


xplor.command('''
REMARKS  autogenerated by psfGen.py
segment
name="%s"
SETUP=TRUE
number=%d
''' % (segName, startResid) + '''
chain
LINK PEPP  HEAD - *   TAIL + PRO   END
LINK PEPP  HEAD - *   TAIL + HYP   END
LINK PEPT    HEAD - *     TAIL + *       END

%s


%s


sequence %s
end
end
end
''' % (nterm,cterm,seq))

protocol.initParams('protein')
xplor.command('''
param
  bond      CP   OH                 $kbon     1.42
  angle     OH   CP   CT            $kang     109.5 !
 angle     HA   CP   OH            $kang     109.5 ! CP
 improper  HA   OH   CT  CP       $kchi    0   -67 !FIX
  angle     H    OH   CP            $kang     108.0
 angle     CP   CP   OH            $kang     109.5
end
''')



protocol.genExtendedStructure()

xplor.command("write psf output=new.psf end")
protocol.writePDB('new.pdb')
