diff --git a/modules/mol/alg/pymod/CMakeLists.txt b/modules/mol/alg/pymod/CMakeLists.txt
index 000e754817bce15b4e118a6ad65de253d9af8763..6be6ca39d57e39c2b9d01ed951fb9a4b20cf6d17 100644
--- a/modules/mol/alg/pymod/CMakeLists.txt
+++ b/modules/mol/alg/pymod/CMakeLists.txt
@@ -13,6 +13,7 @@ set(OST_MOL_ALG_PYMOD_MODULES
   trajectory_analysis.py
   structure_analysis.py
   helix_kinks.py
+  hbond.py
 )
 
 if (ENABLE_IMG)
diff --git a/modules/mol/alg/pymod/__init__.py b/modules/mol/alg/pymod/__init__.py
index b8c09d51d67b99b606ddc9c99af55afe37823dd4..73d5bd802ce28765d309e65b7eed4f65374abdfb 100644
--- a/modules/mol/alg/pymod/__init__.py
+++ b/modules/mol/alg/pymod/__init__.py
@@ -4,6 +4,7 @@ from ost.mol.alg.superpose import *
 import ost.mol.alg.trajectory_analysis
 import ost.mol.alg.structure_analysis
 import ost.mol.alg.helix_kinks
+import ost.mol.alg.hbond
 
 # Fills a list of reference clashing distances from a file (requires a path to the file)
 def FillClashingDistancesFromFile(filename):
diff --git a/modules/mol/alg/pymod/hbond.py b/modules/mol/alg/pymod/hbond.py
new file mode 100644
index 0000000000000000000000000000000000000000..33545bd2f5430aac82e65cbb9023bece29608634
--- /dev/null
+++ b/modules/mol/alg/pymod/hbond.py
@@ -0,0 +1,443 @@
+import ost as _ost
+import ost.geom as _geom
+
+"""
+Module written by Niklaus Johner (niklaus.johner@a3.epfl.ch) 2012
+
+This module is a flexible rewrite of HBPlus, allowing to calculate hbond
+conservation between different structures or over a trajectory. 
+It uses customizable dictionaries to define donors and acceptors and can
+account for equivalent HBonds such as involving for example either oxygen atom
+of an Aspartic Acid.
+"""
+__all__=('HBondDonor','HBondAcceptor','BuildCHARMMHBondDonorAcceptorDict','AreHBonded','GetHbondDonorAcceptorList',\
+         'GetHbondListFromDonorAcceptorLists','GetHbondListFromView','GetHbondListFromTraj','GetHbondListBetweenViews'\
+         'CalculateHBondScore','AnalyzeHBondScore')
+         
+         
+class HBondableAtoms:
+	def __init__(self,donors=[],acceptors=[]):
+		self.donors=donors
+		self.acceptors=acceptors
+    
+def BuildCHARMMHBondDonorAcceptorDict():
+  hb_da_dict={}
+  bb_donors=[['N','HN']]
+  bb_acceptors=[['O',['C']]]
+  
+  #hydrophobic
+  hb_da_dict['ALA']=HBondableAtoms(bb_donors,bb_acceptors)
+  hb_da_dict['GLY']=HBondableAtoms(bb_donors,bb_acceptors)
+  hb_da_dict['ILE']=HBondableAtoms(bb_donors,bb_acceptors)
+  hb_da_dict['LEU']=HBondableAtoms(bb_donors,bb_acceptors)
+  hb_da_dict['PHE']=HBondableAtoms(bb_donors,bb_acceptors)
+  hb_da_dict['MET']=HBondableAtoms(bb_donors,bb_acceptors)
+  hb_da_dict['VAL']=HBondableAtoms(bb_donors,bb_acceptors)
+  #special case
+  hb_da_dict['PRO']=HBondableAtoms([],bb_acceptors)
+  
+  #sidechain donors
+  ne=[['NE','HE']]
+  cz=[['NH1','HH11'],['NH1','HH12'],['NH2','HH21'],['NH2','HH22']]
+  hb_da_dict['ARG']=HBondableAtoms(bb_donors+ne+cz,bb_acceptors)
+  nz=[['NZ','HZ1'],['NZ','HZ2'],['NZ','HZ3']]
+  hb_da_dict['LYS']=HBondableAtoms(bb_donors+nz,bb_acceptors)
+  ne1=[['NE1','HE1']]
+  hb_da_dict['TRP']=HBondableAtoms(bb_donors+ne1,bb_acceptors)
+  sg=[['SG','HG1']]
+  hb_da_dict['CYS']=HBondableAtoms(bb_donors+sg,bb_acceptors)
+  
+  #sidechain acceptors
+  od12=[['OD1',['CG']],['OD2',['CG']]]
+  hb_da_dict['ASP']=HBondableAtoms(bb_donors,bb_acceptors+od12)
+  oe12=[['OE1',['CD']],['OE2',['CD']]]
+  hb_da_dict['GLU']=HBondableAtoms(bb_donors,bb_acceptors+oe12)
+  
+  #sidechain donor and acceptor
+  od1=[['OD1',['CG']]]
+  nd2=[['ND2','HD21'],['ND2','HD22']]
+  hb_da_dict['ASN']=HBondableAtoms(bb_donors+nd2,bb_acceptors+od1)
+  ne2=[['NE2','HE21'],['NE2','HE22']]
+  oe1=[['OE1',['CD']]]
+  hb_da_dict['GLN']=HBondableAtoms(bb_donors+ne2,bb_acceptors+oe1)
+  og_d=[['OG','HG1']]
+  og_a=[['OG',['CB']]]
+  hb_da_dict['SER']=HBondableAtoms(bb_donors+og_d,bb_acceptors+og_a)
+  og1_d=[['OG1','HG1']]
+  og1_a=[['OG1',['CB']]]
+  hb_da_dict['THR']=HBondableAtoms(bb_donors+og1_d,bb_acceptors+og1_a)
+  oh_d=[['OH','HH']]
+  oh_a=[['OH',['CZ']]]
+  hb_da_dict['TYR']=HBondableAtoms(bb_donors+oh_d,bb_acceptors+oh_a)
+  #histidine
+  nd1_d=[['ND1','HD1']]
+  ne2_a=[['NE2',['CD2','CE1']]]
+  hb_da_dict['HSD']=HBondableAtoms(bb_donors+nd1_d,bb_acceptors+ne2_a)
+  ne2_d=[['NE2','HE2']]
+  nd1_a=[['ND1',['CG','CE1']]]
+  hb_da_dict['HSE']=HBondableAtoms(bb_donors+ne2_d,bb_acceptors+nd1_a)
+  hb_da_dict['HSP']=HBondableAtoms(bb_donors+nd1_d+ne2_d,bb_acceptors)
+  #non-standard protonation state:
+  oe12=[['OE1',['CD']],['OE2',['CD']]]
+  oe2=[['OE2','HE2']]
+  hb_da_dict['GLUP']=HBondableAtoms(bb_donors+oe2,bb_acceptors+oe12)
+  od12=[['OD1',['CG']],['OD2',['CG']]]
+  od2=[['OD2','HD2']]
+  hb_da_dict['ASPP']=HBondableAtoms(bb_donors+od2,bb_acceptors+od12)
+  return hb_da_dict
+
+def BuildCHARMMHBondDonorEquivalenceDict():
+  donor_swap_dict={}
+  donor_swap_dict['ARG']=[[['NH1','HH11'],['NH1','HH12'],['NH2','HH21'],['NH2','HH22']]]
+  donor_swap_dict['ASN']=[[['ND2','HD21'],['ND2','HD22']]]
+  donor_swap_dict['GLN']=[[['NE2','HE21'],['NE2','HE22']]]
+  donor_swap_dict['LYS']=[[['NZ','HZ1'],['NZ','HZ2'],['NZ','HZ3']]]
+  return donor_swap_dict
+
+def BuildCHARMMHBondAcceptorEquivalenceDict():
+  acceptor_swap_dict={}
+  acceptor_swap_dict['ASP']=[[['OD1',['CG']],['OD2',['CG']]]]
+  acceptor_swap_dict['GLU']=[[['OE1',['CD']],['OE2',['CD']]]]
+  return acceptor_swap_dict
+
+def ListEquivalentDonors(donor,donor_swap_dict):
+  if not donor.heavy_atom.residue.name in donor_swap_dict:return [donor]
+  donor_list=[donor]
+  donor_atom_names=[donor.heavy_atom.name,donor.hydrogen.name]
+  res=donor.heavy_atom.residue
+  for equivalence_list in donor_swap_dict[donor.heavy_atom.residue.name]:
+    if not donor_atom_names in equivalence_list:continue
+    for atom_names in equivalence_list:
+      if atom_names==donor_atom_names:continue
+      else:donor_list.append(HBondDonor.FromResidue(res,atom_names[0],atom_names[1]))
+  return donor_list
+
+def ListEquivalentAcceptors(acceptor,acceptor_swap_dict):
+  if not acceptor.atom.residue.name in acceptor_swap_dict:return [acceptor]
+  acceptor_list=[acceptor]
+  acceptor_atom_names=[acceptor.atom.name,[a.name for a in acceptor.antecedent_list]]
+  res=acceptor.atom.residue
+  for equivalence_list in acceptor_swap_dict[acceptor.atom.residue.name]:
+    if not acceptor_atom_names in equivalence_list:continue
+    for atom_names in equivalence_list:
+      if atom_names==acceptor_atom_names:continue
+      else:acceptor_list.append(HBondAcceptor.FromResidue(res,atom_names[0],atom_names[1]))
+  return acceptor_list
+
+  
+class HBondDonor:
+  def __init__(self,donor,hydrogen):
+    self.heavy_atom=donor
+    self.hydrogen=hydrogen
+  def __eq__(self,hbd):
+    if not isinstance(hbd,HBondDonor):return False
+    else:return self.heavy_atom==hbd.heavy_atom and self.hydrogen==hbd.hydrogen
+  def __hash__(self):
+    return hash((self.heavy_atom,self.hydrogen))
+  @classmethod
+  def FromResidue(cls,res,donor_name,hydrogen_name,verbose=True):
+    _donor=res.FindAtom(donor_name).handle
+    _hydrogen=res.FindAtom(hydrogen_name).handle
+    if not _donor.IsValid():
+      if verbose:print 'Could not find '+donor_name+' in residue '+str(res)
+      return
+    if not _hydrogen.IsValid():
+      if verbose:print 'Could not find '+hydrogen_name+' in residue '+str(res)
+      return
+    return cls(_donor,_hydrogen)
+  
+  def IsHBondedTo(self,acceptor):
+    return AreHBonded(self,acceptor)
+
+
+class HBondAcceptor:
+  def __init__(self,acceptor,antecedent_list):
+    self.atom=acceptor
+    self.antecedent_list=antecedent_list
+  def __eq__(self,hba):
+    if not isinstance(hba,HBondAcceptor):return False
+    else:return self.atom==hba.atom
+  def __hash__(self):
+    return hash(self.atom)
+  @classmethod
+  def FromResidue(cls,res,acceptor_name,antecedent_name_list,verbose=True):
+    _acceptor=res.FindAtom(acceptor_name).handle
+    _antecedent_list=_ost.mol.AtomHandleList([res.FindAtom(name).handle for name in antecedent_name_list])
+    if not _acceptor.IsValid():
+      if verbose:print 'Could not find '+acceptor_name+' in residue '+str(res)
+      return
+    for i,a in enumerate(_antecedent_list):
+      if not a.IsValid():
+        if verbose:print 'Could not find '+antecedent_name_list[i]+' in residue '+str(res)
+        return
+    return cls(_acceptor,_antecedent_list)
+  
+  def IsHBondedTo(self,donor):
+    return AreHBonded(donor,self)
+
+class HBond:
+  def __init__(self,donor,acceptor):
+    self.donor=donor
+    self.acceptor=acceptor
+  def __eq__(self,hb):
+    if not isinstance(hb,HBond):return False
+    else:return self.acceptor==hb.acceptor and self.donor==hb.donor
+  def __hash__(self):
+    return hash((self.donor,self.acceptor))
+  def IsFormed(self):return AreHBonded(self.donor,self.acceptor)
+  def DonorAcceptorDistance(self):return _geom.Distance(self.donor.heavy_atom.pos,self.acceptor.atom.pos)
+  def HydrogenAcceptorDistance(self):return _geom.Distance(self.donor.hydrogen.pos,self.acceptor.atom.pos)
+  def DonorHydrogenAcceptorAngle(self):
+    dp=self.donor.heavy_atom.pos;ap=self.acceptor.atom.pos;hp=self.donor.hydrogen.pos
+    return _geom.Angle(dp-hp,ap-hp)
+  def DonorAcceptorAcceptorAntecedentAngle(self):
+    dp=self.donor.heavy_atom.pos;ap=self.acceptor.atom.pos
+    a=min([_geom.Angle(aa.pos-ap,dp-ap) for aa in self.acceptor.antecedent_list])
+    return a
+  def HydrogenAcceptorAcceptorAntecedentAngle(self):
+    hp=self.donor.hydrogen.pos;ap=self.acceptor.atom.pos
+    a=min([_geom.Angle(aa.pos-ap,hp-ap) for aa in acceptor.antecedent_list])
+    return a
+
+    
+def AreHBonded(donor,acceptor,da_dist=3.9,ha_dist=2.5,dha_angle=1.57,daaa_angle=1.57,haaa_angle=1.57):
+  """
+  determines if a donor/acceptor pair is hydrogen bonded or not
+  """
+  dp=donor.heavy_atom.pos
+  ap=acceptor.atom.pos
+  if _geom.Distance(dp,ap)>da_dist:return False
+  hp=donor.hydrogen.pos
+  if _geom.Distance(hp,ap)>ha_dist:return False
+  if _geom.Angle(dp-hp,ap-hp)<dha_angle:return False
+  a=min([_geom.Angle(aa.pos-ap,dp-ap) for aa in acceptor.antecedent_list])
+  if a<daaa_angle:return False
+  a=min([_geom.Angle(aa.pos-ap,hp-ap) for aa in acceptor.antecedent_list])
+  if a<haaa_angle:return False
+  return True
+
+def GetHbondDonorAcceptorList(eh,hbond_donor_acceptor_dict={},verbose=True):
+  """
+  returns a list of hydrogen-bond donors and acceptors from an Entity or EntityView.
+  It relies on atom names to determine the list of H-bond donors and acceptors.
+  These names are given in a dictionary, which defaults to CHARMM.
+  """
+  if not hbond_donor_acceptor_dict:
+    print 'Using default CHARMM atom namings'
+    hbond_donor_acceptor_dict=BuildCHARMMHBondDonorAcceptorDict()
+  donor_list=[]
+  acceptor_list=[]
+  for r in eh.residues:
+    if not r.name in hbond_donor_acceptor_dict:
+      print 'donors and acceptors for',r,'are not defined in the dictionary and will not be included'
+      continue
+    res_da_dict=hbond_donor_acceptor_dict[r.name]
+    for acceptor in res_da_dict.acceptors:
+      a=HBondAcceptor.FromResidue(r,acceptor[0],acceptor[1],verbose)
+      if not a==None:acceptor_list.append(a)
+    for donor in res_da_dict.donors:
+      d=HBondDonor.FromResidue(r,donor[0],donor[1],verbose)
+      if not d==None:donor_list.append(d)
+  return [donor_list,acceptor_list]  
+  
+  
+def GetHbondListFromDonorAcceptorLists(donor_list,acceptor_list):
+  """
+  return a list of hydrogen bonds between donors and acceptors from
+  a list of donors and a list of acceptors.
+  """
+  hbond_list=[]
+  for donor in donor_list:
+    for acceptor in acceptor_list:
+      if AreHBonded(donor,acceptor):hbond_list.append(HBond(donor,acceptor))
+  return hbond_list
+
+def GetHbondListFromView(eh,hbond_donor_acceptor_dict={},verbose=True):
+  """
+  return a list of hydrogen bonds from an Entity or EntityView.
+  if no dictionary for the hbond donors and acceptors is specified
+  it will use the standard CHARMM names to determine them
+  """
+  [donor_list,acceptor_list]=GetHbondDonorAcceptorList(eh,hbond_donor_acceptor_dict,verbose)
+  hbond_list=[]
+  for donor in donor_list:
+    for acceptor in acceptor_list:
+      if AreHBonded(donor,acceptor):hbond_list.append(HBond(donor,acceptor))
+  return hbond_list
+
+def GetHbondListFromTraj(t,eh,cutoff=0.7,stride=1,swap=False,donor_swap_dict={},acceptor_swap_dict={},hbond_donor_acceptor_dict={},verbose=True):
+  """
+  return a list of hydrogen bonds from an Entity or EntityView that are
+  present in a fraction of the frames larger than *cutoff*.
+  if no dictionary for the hbond donors and acceptors is specified
+  it will use the standard CHARMM names to determine them
+  """
+  if swap:
+    if not donor_swap_dict:
+      print 'use of standard CHARMM HBond donor swap dictionary'
+      donor_swap_dict=BuildCHARMMHBondDonorEquivalenceDict()
+    if not acceptor_swap_dict:
+      print 'use of standard CHARMM HBond acceptor swap dictionary'  
+      acceptor_swap_dict=BuildCHARMMHBondAcceptorEquivalenceDict()
+  [donor_list,acceptor_list]=GetHbondDonorAcceptorList(eh,hbond_donor_acceptor_dict,verbose)
+  hb_list=[]
+  hb_score=[]
+  nframes=0
+  for i in range(0,t.GetFrameCount(),stride):
+    t.CopyFrame(i)
+    nframes+=1
+    hbond_list=GetHbondListFromDonorAcceptorLists(donor_list,acceptor_list)
+    if swap:
+      hbond_list=GetEquivalentHBonds(hbond_list,eh,swap,donor_swap_dict,acceptor_swap_dict,verbose)
+      for hb in hbond_list:
+        if hb in hbond_list[hbond_list.index(hb)+1:]:hbond_list.pop(hbond_list.index(hb))
+    for hb in hbond_list:
+      if hb in hb_list:hb_score[hb_list.index(hb)]+=1
+      else:
+        hb_score.append(1)
+        hb_list.append(hb)
+  hbond_list=[]
+  hbond_score=[]
+  for hb,s in zip(hb_list,hb_score):
+    if s/float(nframes)>=cutoff:
+      if swap:hbond_list.append(list(hb)[0])
+      else:hbond_list.append(hb)
+      hbond_score.append(s/float(nframes))
+  return (hbond_list,hbond_score)
+
+def GetHbondListBetweenViews(eh1,eh2,hbond_donor_acceptor_dict={},verbose=True):
+  """
+  return the list of hydrogen bonds formed between two Entity or EntityView.
+  if no dictionary for the hbond donors and acceptors is specified
+  it will use the standard CHARMM names to determine them
+  """
+  [donor_list1,acceptor_list1]=GetHbondDonorAcceptorList(eh1,hbond_donor_acceptor_dict,verbose)
+  [donor_list2,acceptor_list2]=GetHbondDonorAcceptorList(eh2,hbond_donor_acceptor_dict,verbose)
+  hbond_list=[]
+  for donor in donor_list1:
+    for acceptor in acceptor_list2:
+      if AreHBonded(donor,acceptor):
+        hb=HBond(donor,acceptor)
+        if hb in hbond_list:continue
+        hbond_list.append(hb)
+  for donor in donor_list2:
+    for acceptor in acceptor_list1:
+      if AreHBonded(donor,acceptor):
+        hb=HBond(donor,acceptor)
+        if hb in hbond_list:continue
+        hbond_list.append(hb)
+  return hbond_list
+
+def GetEquivalentHBonds(ref_hbond_list,eh,swap=False,donor_swap_dict={},acceptor_swap_dict={},verbose=True):
+  hbond_list=[]
+  if not swap:
+    for hbond in ref_hbond_list:
+      res1=eh.FindResidue(hbond.donor.heavy_atom.chain.name,hbond.donor.heavy_atom.residue.number.num)
+      res2=eh.FindResidue(hbond.acceptor.atom.chain.name,hbond.acceptor.atom.residue.number.num)
+      donor=HBondDonor.FromResidue(res1,hbond.donor.heavy_atom.name,hbond.donor.hydrogen.name,verbose)
+      acceptor=HBondAcceptor.FromResidue(res2,hbond.acceptor.atom.name,[a.name for a in hbond.acceptor.antecedent_list],verbose)
+      hbond_list.append(set([HBond(donor,acceptor)]))
+  else:
+    if not donor_swap_dict:
+      print 'use of standard CHARMM HBond donor swap dictionary'
+      donor_swap_dict=BuildCHARMMHBondDonorEquivalenceDict()
+    if not acceptor_swap_dict:
+      print 'use of standard CHARMM HBond acceptor swap dictionary'  
+      acceptor_swap_dict=BuildCHARMMHBondAcceptorEquivalenceDict()
+    for hbond in ref_hbond_list:
+      res1=eh.FindResidue(hbond.donor.heavy_atom.chain.name,hbond.donor.heavy_atom.residue.number.num)
+      res2=eh.FindResidue(hbond.acceptor.atom.chain.name,hbond.acceptor.atom.residue.number.num)
+      donor=HBondDonor.FromResidue(res1,hbond.donor.heavy_atom.name,hbond.donor.hydrogen.name,verbose)
+      acceptor=HBondAcceptor.FromResidue(res2,hbond.acceptor.atom.name,[a.name for a in hbond.acceptor.antecedent_list],verbose)
+      donor_list=ListEquivalentDonors(donor,donor_swap_dict)
+      acceptor_list=ListEquivalentAcceptors(acceptor,acceptor_swap_dict)
+      hbond_list.append(set([HBond(d,a) for d in donor_list for a in acceptor_list]))
+  return hbond_list
+    
+    
+def CalculateHBondScore(ref_eh,eh2,ref_eh2=None,hbond_donor_acceptor_dict={},swap=False,donor_swap_dict={},acceptor_swap_dict={},verbose=True):
+  """
+  Returns the fraction of H-bonds from ref_eh that are also present in eh2.
+  If ref_eh2 is specified, it uses as reference the Hbonds between ref_eh and ref_eh2. 
+  This allows to look at H-bonds between specific parts of proteins or so.
+  Alternatively ref_eh can be a list of H-bonds.
+  This function relies on atom names to determine the list of H-bond donors and acceptors.
+  These names are given in a dictionary, which defaults to CHARMM.
+  If swap is set to True, a dictionary for equivalent donors and one for equivalent acceptors
+  (defaults to CHARMM) is used to check for equivalent HBonds in eh2.
+  If swap is set to True, if two equivalent hydrogen bonds are present in the reference entity 
+  (for example both oxygens of ASP H-bonding the same atom), it suffices that on of these bonds is
+  present in eh2 for both of them to be counted as present in eh2.
+  """
+  if ref_eh2:hbond_list1=GetHbondListBetweenViews(ref_eh,ref_eh2,hbond_donor_acceptor_dict,verbose)
+  elif type(ref_eh)==list:hbond_list1=ref_eh
+  else:hbond_list1=GetHbondListFromView(ref_eh,hbond_donor_acceptor_dict,verbose)
+  nbonds=float(len(hbond_list1))
+  if nbonds==0:
+    print 'No HBonds in reference view'
+    return None
+  hbond_list2=GetEquivalentHBonds(hbond_list1,eh2,swap,donor_swap_dict,acceptor_swap_dict,verbose)
+  c=0
+  for hl in hbond_list2:
+    for hbond in hl:
+      if HBond(hbond.donor,hbond.acceptor).IsFormed():
+        c+=1
+        break
+  return c/float(len(hbond_list1))
+
+
+def AnalyzeHBondScore(ref_eh,t,eh2,ref_eh2=None,hbond_donor_acceptor_dict={},swap=False,donor_swap_dict={},acceptor_swap_dict={},first=0,last=-1,stride=1,verbose=True):
+  """
+  Returns the same score as CalculateHBondScore, but for a trajectory.
+  """
+  if swap:
+    if not donor_swap_dict:
+      print 'use of standard CHARMM HBond donor swap dictionary'
+      donor_swap_dict=BuildCHARMMHBondDonorEquivalenceDict()
+    if not acceptor_swap_dict:
+      print 'use of standard CHARMM HBond acceptor swap dictionary'  
+      acceptor_swap_dict=BuildCHARMMHBondAcceptorEquivalenceDict()
+  if ref_eh2:hbond_list1=GetHbondListBetweenViews(ref_eh,ref_eh2,hbond_donor_acceptor_dict,verbose)
+  elif type(ref_eh)==list:hbond_list1=ref_eh
+  else:hbond_list1=GetHbondListFromView(ref_eh,hbond_donor_acceptor_dict,verbose)
+  nbonds=float(len(hbond_list1))
+  if nbonds==0:
+    print 'No HBonds in reference view'
+    return None
+  print 'number of hbonds in ref_eh:',nbonds
+  hbond_list2=GetEquivalentHBonds(hbond_list1,eh2,swap,donor_swap_dict,acceptor_swap_dict,verbose)
+  if last==-1:last=t.GetFrameCount()
+  score=FloatList()
+  for f in range(first,last,stride):
+    t.CopyFrame(f)
+    c=0
+    for hl in hbond_list2:
+      for hbond in hl:
+        if hbond.IsFormed():
+          c+=1
+          break
+    score.append(c/nbonds)
+  return score
+
+
+def GetHBondListIntersection(ref_hbond_list,ref_eh,hbond_list,swap=False,donor_swap_dict={},acceptor_swap_dict={}):
+  if swap:
+    if not donor_swap_dict:
+      print 'use of standard CHARMM HBond donor swap dictionary'
+      donor_swap_dict=BuildCHARMMHBondDonorEquivalenceDict()
+    if not acceptor_swap_dict:
+      print 'use of standard CHARMM HBond acceptor swap dictionary'  
+      acceptor_swap_dict=BuildCHARMMHBondAcceptorEquivalenceDict()
+  hbond_list=GetEquivalentHBonds(hbond_list,ref_eh,swap,donor_swap_dict,acceptor_swap_dict)
+  ref_hbond_list=GetEquivalentHBonds(ref_hbond_list,ref_eh,swap,donor_swap_dict,acceptor_swap_dict)
+  out_hbond_list=[]
+  for hb in ref_hbond_list:
+    if hb in hbond_list:
+      out_hbond_list.append(hb)
+  return out_hbond_list
+
+  
+  
+  
+  
+  
diff --git a/modules/mol/alg/tests/CMakeLists.txt b/modules/mol/alg/tests/CMakeLists.txt
index 758bbbe10df71687391cac11a0425a253b94dc27..5db23c240db732ba6b00fc72da4b9581a2cf9af1 100644
--- a/modules/mol/alg/tests/CMakeLists.txt
+++ b/modules/mol/alg/tests/CMakeLists.txt
@@ -3,6 +3,7 @@ set(OST_MOL_ALG_UNIT_TESTS
   tests.cc
   test_consistency_checks.cc
   test_convenient_superpose.py
+  test_hbond.py
 )
 
 ost_unittest(MODULE mol_alg SOURCES "${OST_MOL_ALG_UNIT_TESTS}")
diff --git a/modules/mol/alg/tests/test_hbond.py b/modules/mol/alg/tests/test_hbond.py
new file mode 100644
index 0000000000000000000000000000000000000000..dfef424412c5557c34c5f1b9202616076b4ccd86
--- /dev/null
+++ b/modules/mol/alg/tests/test_hbond.py
@@ -0,0 +1,25 @@
+from ost import io,mol
+import unittest
+import os
+
+class TestHBond(unittest.TestCase):
+  
+  def setUp(self):
+    p=io.IOProfile(dialect='CHARMM')
+    self.eh1=io.LoadPDB(os.path.join("testfiles","hbond1.pdb"),profile=p)
+    self.eh2=io.LoadPDB(os.path.join("testfiles","hbond2.pdb"),profile=p)
+    self.hb_da_dict=mol.alg.hbond.BuildCHARMMHBondDonorAcceptorDict()
+  
+  def testHBondList(self):
+    hbl1=mol.alg.hbond.GetHbondListFromView(self.eh1.Select('cname=PROA'),self.hb_da_dict)
+    for hb in hbl1:self.assertTrue(hb.IsFormed())
+    hbl=mol.alg.hbond.GetHbondListBetweenViews(self.eh1,self.eh2,self.hb_da_dict)
+    self.assertEqual(len(hbl),1)
+    
+  def testHBondScore(self):
+    self.assertEqual(mol.alg.hbond.CalculateHBondScore(self.eh1,self.eh2,hbond_donor_acceptor_dict=self.hb_da_dict),0.8)
+  
+
+if __name__ == "__main__":
+  from ost import testutils
+  testutils.RunTests()
diff --git a/modules/mol/alg/tests/testfiles/hbond1.pdb b/modules/mol/alg/tests/testfiles/hbond1.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..657a7721657b735840bc71ccebfec1302dad8ae6
--- /dev/null
+++ b/modules/mol/alg/tests/testfiles/hbond1.pdb
@@ -0,0 +1,153 @@
+CRYST1    0.000    0.000    0.000  90.00  90.00  90.00 P 1           1
+ATOM      1  N   VAL X 365      11.618   5.729   5.041  1.00  0.00      PROA  
+ATOM      2  HN  VAL X 365      12.357   5.874   5.695  1.00  0.00      PROA  
+ATOM      3  CA  VAL X 365      11.817   4.614   4.057  1.00  0.00      PROA  
+ATOM      4  HA  VAL X 365      12.120   5.063   3.123  1.00  0.00      PROA  
+ATOM      5  CB  VAL X 365      12.880   3.638   4.555  1.00  0.00      PROA  
+ATOM      6  HB  VAL X 365      12.758   3.271   5.597  1.00  0.00      PROA  
+ATOM      7  CG1 VAL X 365      12.923   2.493   3.581  1.00  0.00      PROA  
+ATOM      8 HG11 VAL X 365      13.769   1.825   3.851  1.00  0.00      PROA  
+ATOM      9 HG12 VAL X 365      13.253   2.820   2.572  1.00  0.00      PROA  
+ATOM     10 HG13 VAL X 365      11.981   1.905   3.547  1.00  0.00      PROA  
+ATOM     11  CG2 VAL X 365      14.252   4.368   4.370  1.00  0.00      PROA  
+ATOM     12 HG21 VAL X 365      15.034   3.769   4.883  1.00  0.00      PROA  
+ATOM     13 HG22 VAL X 365      14.264   5.327   4.931  1.00  0.00      PROA  
+ATOM     14 HG23 VAL X 365      14.509   4.512   3.299  1.00  0.00      PROA  
+ATOM     15  C   VAL X 365      10.530   3.823   3.977  1.00  0.00      PROA  
+ATOM     16  O   VAL X 365       9.878   3.644   2.985  1.00  0.00      PROA  
+ATOM     17  N   VAL X 366      10.051   3.478   5.122  1.00  0.00      PROA  
+ATOM     18  HN  VAL X 366      10.696   3.723   5.842  1.00  0.00      PROA  
+ATOM     19  CA  VAL X 366       8.835   2.700   5.461  1.00  0.00      PROA  
+ATOM     20  HA  VAL X 366       8.796   1.776   4.904  1.00  0.00      PROA  
+ATOM     21  CB  VAL X 366       8.746   2.433   7.004  1.00  0.00      PROA  
+ATOM     22  HB  VAL X 366       9.106   3.359   7.502  1.00  0.00      PROA  
+ATOM     23  CG1 VAL X 366       7.329   1.969   7.489  1.00  0.00      PROA  
+ATOM     24 HG11 VAL X 366       7.144   0.966   7.048  1.00  0.00      PROA  
+ATOM     25 HG12 VAL X 366       6.516   2.720   7.398  1.00  0.00      PROA  
+ATOM     26 HG13 VAL X 366       7.439   1.826   8.585  1.00  0.00      PROA  
+ATOM     27  CG2 VAL X 366       9.782   1.385   7.527  1.00  0.00      PROA  
+ATOM     28 HG21 VAL X 366      10.802   1.644   7.170  1.00  0.00      PROA  
+ATOM     29 HG22 VAL X 366       9.494   0.418   7.061  1.00  0.00      PROA  
+ATOM     30 HG23 VAL X 366       9.859   1.344   8.635  1.00  0.00      PROA  
+ATOM     31  C   VAL X 366       7.586   3.380   4.923  1.00  0.00      PROA  
+ATOM     32  O   VAL X 366       6.625   2.754   4.429  1.00  0.00      PROA  
+ATOM     33  N   SER X 367       7.487   4.721   5.110  1.00  0.00      PROA  
+ATOM     34  HN  SER X 367       8.179   5.195   5.649  1.00  0.00      PROA  
+ATOM     35  CA  SER X 367       6.337   5.546   4.756  1.00  0.00      PROA  
+ATOM     36  HA  SER X 367       5.563   4.863   5.073  1.00  0.00      PROA  
+ATOM     37  CB  SER X 367       6.182   6.894   5.600  1.00  0.00      PROA  
+ATOM     38  HB1 SER X 367       5.344   7.513   5.212  1.00  0.00      PROA  
+ATOM     39  HB2 SER X 367       7.029   7.611   5.544  1.00  0.00      PROA  
+ATOM     40  OG  SER X 367       5.775   6.479   6.922  1.00  0.00      PROA  
+ATOM     41  HG1 SER X 367       6.559   6.323   7.455  1.00  0.00      PROA  
+ATOM     42  C   SER X 367       6.198   5.925   3.285  1.00  0.00      PROA  
+ATOM     43  O   SER X 367       5.073   5.984   2.834  1.00  0.00      PROA  
+ATOM     44  N   MET X 368       7.342   6.011   2.516  1.00  0.00      PROA  
+ATOM     45  HN  MET X 368       8.222   5.956   2.983  1.00  0.00      PROA  
+ATOM     46  CA  MET X 368       7.428   6.146   1.069  1.00  0.00      PROA  
+ATOM     47  HA  MET X 368       6.557   6.750   0.862  1.00  0.00      PROA  
+ATOM     48  CB  MET X 368       8.820   6.736   0.716  1.00  0.00      PROA  
+ATOM     49  HB1 MET X 368       8.940   6.324  -0.309  1.00  0.00      PROA  
+ATOM     50  HB2 MET X 368       9.600   6.202   1.300  1.00  0.00      PROA  
+ATOM     51  CG  MET X 368       9.114   8.160   0.683  1.00  0.00      PROA  
+ATOM     52  HG1 MET X 368       8.970   8.637   1.676  1.00  0.00      PROA  
+ATOM     53  HG2 MET X 368       8.370   8.708   0.066  1.00  0.00      PROA  
+ATOM     54  SD  MET X 368      10.854   8.414   0.112  1.00  0.00      PROA  
+ATOM     55  CE  MET X 368      10.429   8.518  -1.623  1.00  0.00      PROA  
+ATOM     56  HE1 MET X 368       9.988   7.542  -1.920  1.00  0.00      PROA  
+ATOM     57  HE2 MET X 368      11.252   8.736  -2.337  1.00  0.00      PROA  
+ATOM     58  HE3 MET X 368       9.589   9.226  -1.790  1.00  0.00      PROA  
+ATOM     59  C   MET X 368       7.275   4.776   0.395  1.00  0.00      PROA  
+ATOM     60  O   MET X 368       7.019   4.790  -0.788  1.00  0.00      PROA  
+ATOM     61  N   THR X 369       7.214   3.623   1.096  1.00  0.00      PROA  
+ATOM     62  HN  THR X 369       7.600   3.536   2.011  1.00  0.00      PROA  
+ATOM     63  CA  THR X 369       6.846   2.309   0.543  1.00  0.00      PROA  
+ATOM     64  HA  THR X 369       6.730   2.329  -0.531  1.00  0.00      PROA  
+ATOM     65  CB  THR X 369       7.907   1.155   0.795  1.00  0.00      PROA  
+ATOM     66  HB  THR X 369       7.533   0.164   0.462  1.00  0.00      PROA  
+ATOM     67  OG1 THR X 369       8.262   1.067   2.193  1.00  0.00      PROA  
+ATOM     68  HG1 THR X 369       9.002   1.674   2.272  1.00  0.00      PROA  
+ATOM     69  CG2 THR X 369       9.178   1.518   0.004  1.00  0.00      PROA  
+ATOM     70 HG21 THR X 369       9.671   2.472   0.289  1.00  0.00      PROA  
+ATOM     71 HG22 THR X 369       8.889   1.546  -1.069  1.00  0.00      PROA  
+ATOM     72 HG23 THR X 369       9.937   0.734   0.209  1.00  0.00      PROA  
+ATOM     73  C   THR X 369       5.462   1.772   0.950  1.00  0.00      PROA  
+ATOM     74  O   THR X 369       4.930   0.735   0.605  1.00  0.00      PROA  
+ATOM     75  N   THR X 370       4.854   2.524   1.837  1.00  0.00      PROA  
+ATOM     76  HN  THR X 370       5.428   3.274   2.153  1.00  0.00      PROA  
+ATOM     77  CA  THR X 370       3.475   2.307   2.319  1.00  0.00      PROA  
+ATOM     78  HA  THR X 370       3.360   3.216   2.891  1.00  0.00      PROA  
+ATOM     79  CB  THR X 370       2.240   2.301   1.374  1.00  0.00      PROA  
+ATOM     80  HB  THR X 370       1.254   2.317   1.885  1.00  0.00      PROA  
+ATOM     81  OG1 THR X 370       2.242   1.131   0.613  1.00  0.00      PROA  
+ATOM     82  HG1 THR X 370       3.158   1.140   0.326  1.00  0.00      PROA  
+ATOM     83  CG2 THR X 370       2.369   3.574   0.385  1.00  0.00      PROA  
+ATOM     84 HG21 THR X 370       3.203   3.523  -0.347  1.00  0.00      PROA  
+ATOM     85 HG22 THR X 370       2.338   4.553   0.910  1.00  0.00      PROA  
+ATOM     86 HG23 THR X 370       1.474   3.574  -0.273  1.00  0.00      PROA  
+ATOM     87  C   THR X 370       3.265   1.190   3.381  1.00  0.00      PROA  
+ATOM     88  O   THR X 370       2.139   0.782   3.712  1.00  0.00      PROA  
+ATOM     89  N   VAL X 371       4.303   0.659   4.032  1.00  0.00      PROA  
+ATOM     90  HN  VAL X 371       5.248   0.913   3.842  1.00  0.00      PROA  
+ATOM     91  CA  VAL X 371       4.174  -0.341   5.080  1.00  0.00      PROA  
+ATOM     92  HA  VAL X 371       3.441  -1.080   4.793  1.00  0.00      PROA  
+ATOM     93  CB  VAL X 371       5.481  -1.050   5.302  1.00  0.00      PROA  
+ATOM     94  HB  VAL X 371       6.237  -0.236   5.308  1.00  0.00      PROA  
+ATOM     95  CG1 VAL X 371       5.466  -1.885   6.550  1.00  0.00      PROA  
+ATOM     96 HG11 VAL X 371       6.411  -2.466   6.596  1.00  0.00      PROA  
+ATOM     97 HG12 VAL X 371       4.716  -2.694   6.420  1.00  0.00      PROA  
+ATOM     98 HG13 VAL X 371       5.106  -1.485   7.523  1.00  0.00      PROA  
+ATOM     99  CG2 VAL X 371       5.853  -2.056   4.210  1.00  0.00      PROA  
+ATOM    100 HG21 VAL X 371       6.761  -2.619   4.515  1.00  0.00      PROA  
+ATOM    101 HG22 VAL X 371       6.035  -1.600   3.213  1.00  0.00      PROA  
+ATOM    102 HG23 VAL X 371       5.121  -2.885   4.106  1.00  0.00      PROA  
+ATOM    103  C   VAL X 371       3.496   0.214   6.320  1.00  0.00      PROA  
+ATOM    104  O   VAL X 371       2.650  -0.424   6.942  1.00  0.00      PROA  
+ATOM    105  N   GLY X 372       3.947   1.347   6.802  1.00  0.00      PROA  
+ATOM    106  HN  GLY X 372       4.595   1.901   6.287  1.00  0.00      PROA  
+ATOM    107  CA  GLY X 372       3.520   1.972   8.032  1.00  0.00      PROA  
+ATOM    108  HA1 GLY X 372       2.723   2.649   7.763  1.00  0.00      PROA  
+ATOM    109  HA2 GLY X 372       4.361   2.574   8.344  1.00  0.00      PROA  
+ATOM    110  C   GLY X 372       3.136   1.234   9.276  1.00  0.00      PROA  
+ATOM    111  O   GLY X 372       1.970   1.231   9.629  1.00  0.00      PROA  
+ATOM    112  N   TYR X 373       4.173   0.790   9.993  1.00  0.00      PROA  
+ATOM    113  HN  TYR X 373       5.105   0.907   9.660  1.00  0.00      PROA  
+ATOM    114  CA  TYR X 373       4.103   0.124  11.289  1.00  0.00      PROA  
+ATOM    115  HA  TYR X 373       3.395  -0.690  11.244  1.00  0.00      PROA  
+ATOM    116  CB  TYR X 373       5.483  -0.396  11.768  1.00  0.00      PROA  
+ATOM    117  HB1 TYR X 373       5.336  -1.033  12.666  1.00  0.00      PROA  
+ATOM    118  HB2 TYR X 373       6.131   0.393  12.207  1.00  0.00      PROA  
+ATOM    119  CG  TYR X 373       6.167  -1.214  10.741  1.00  0.00      PROA  
+ATOM    120  CD1 TYR X 373       7.308  -0.793  10.077  1.00  0.00      PROA  
+ATOM    121  HD1 TYR X 373       7.643   0.203  10.326  1.00  0.00      PROA  
+ATOM    122  CE1 TYR X 373       8.073  -1.689   9.309  1.00  0.00      PROA  
+ATOM    123  HE1 TYR X 373       8.917  -1.335   8.734  1.00  0.00      PROA  
+ATOM    124  CZ  TYR X 373       7.697  -2.975   9.180  1.00  0.00      PROA  
+ATOM    125  OH  TYR X 373       8.377  -3.851   8.259  1.00  0.00      PROA  
+ATOM    126  HH  TYR X 373       7.688  -4.382   7.853  1.00  0.00      PROA  
+ATOM    127  CD2 TYR X 373       5.680  -2.561  10.477  1.00  0.00      PROA  
+ATOM    128  HD2 TYR X 373       4.788  -3.024  10.874  1.00  0.00      PROA  
+ATOM    129  CE2 TYR X 373       6.480  -3.382   9.648  1.00  0.00      PROA  
+ATOM    130  HE2 TYR X 373       6.226  -4.418   9.483  1.00  0.00      PROA  
+ATOM    131  C   TYR X 373       3.617   1.013  12.496  1.00  0.00      PROA  
+ATOM    132  O   TYR X 373       3.034   0.496  13.423  1.00  0.00      PROA  
+ATOM    133  N   GLY X 374       3.825   2.267  12.445  1.00  0.00      PROA  
+ATOM    134  HN  GLY X 374       4.376   2.631  11.698  1.00  0.00      PROA  
+ATOM    135  CA  GLY X 374       3.328   3.182  13.462  1.00  0.00      PROA  
+ATOM    136  HA1 GLY X 374       2.305   2.898  13.661  1.00  0.00      PROA  
+ATOM    137  HA2 GLY X 374       3.435   4.173  13.045  1.00  0.00      PROA  
+ATOM    138  C   GLY X 374       3.994   3.245  14.868  1.00  0.00      PROA  
+ATOM    139  O   GLY X 374       3.441   3.506  15.895  1.00  0.00      PROA  
+ATOM    140  N   ASP X 375       5.321   2.894  14.810  1.00  0.00      PROA  
+ATOM    141  HN  ASP X 375       5.795   2.561  13.998  1.00  0.00      PROA  
+ATOM    142  CA  ASP X 375       6.199   2.731  15.953  1.00  0.00      PROA  
+ATOM    143  HA  ASP X 375       5.607   2.484  16.822  1.00  0.00      PROA  
+ATOM    144  CB  ASP X 375       7.318   1.659  15.729  1.00  0.00      PROA  
+ATOM    145  HB1 ASP X 375       6.916   0.639  15.553  1.00  0.00      PROA  
+ATOM    146  HB2 ASP X 375       7.905   1.600  16.671  1.00  0.00      PROA  
+ATOM    147  CG  ASP X 375       8.095   1.992  14.492  1.00  0.00      PROA  
+ATOM    148  OD1 ASP X 375       7.527   2.389  13.446  1.00  0.00      PROA  
+ATOM    149  OD2 ASP X 375       9.333   1.825  14.541  1.00  0.00      PROA  
+ATOM    150  C   ASP X 375       6.890   4.164  16.143  1.00  0.00      PROA  
+ATOM    151  O   ASP X 375       7.375   4.508  17.268  1.00  0.00      PROA  
+END
diff --git a/modules/mol/alg/tests/testfiles/hbond2.pdb b/modules/mol/alg/tests/testfiles/hbond2.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..2f1f7395b6721639c3137b8f54497e95ca636448
--- /dev/null
+++ b/modules/mol/alg/tests/testfiles/hbond2.pdb
@@ -0,0 +1,153 @@
+CRYST1    0.000    0.000    0.000  90.00  90.00  90.00 P 1           1
+ATOM    152  N   VAL X 365      -5.554  10.917   5.263  1.00  0.00      PROA  
+ATOM    153  HN  VAL X 365      -5.487  11.435   6.112  1.00  0.00      PROA  
+ATOM    154  CA  VAL X 365      -4.443  11.069   4.295  1.00  0.00      PROA  
+ATOM    155  HA  VAL X 365      -4.843  10.903   3.305  1.00  0.00      PROA  
+ATOM    156  CB  VAL X 365      -3.524  12.340   4.423  1.00  0.00      PROA  
+ATOM    157  HB  VAL X 365      -3.253  12.456   5.494  1.00  0.00      PROA  
+ATOM    158  CG1 VAL X 365      -2.216  12.278   3.596  1.00  0.00      PROA  
+ATOM    159 HG11 VAL X 365      -1.525  11.626   4.173  1.00  0.00      PROA  
+ATOM    160 HG12 VAL X 365      -1.831  13.320   3.602  1.00  0.00      PROA  
+ATOM    161 HG13 VAL X 365      -2.437  11.945   2.559  1.00  0.00      PROA  
+ATOM    162  CG2 VAL X 365      -4.425  13.546   3.950  1.00  0.00      PROA  
+ATOM    163 HG21 VAL X 365      -5.359  13.460   4.546  1.00  0.00      PROA  
+ATOM    164 HG22 VAL X 365      -4.691  13.416   2.879  1.00  0.00      PROA  
+ATOM    165 HG23 VAL X 365      -3.990  14.518   4.268  1.00  0.00      PROA  
+ATOM    166  C   VAL X 365      -3.585   9.847   4.444  1.00  0.00      PROA  
+ATOM    167  O   VAL X 365      -3.242   9.204   3.452  1.00  0.00      PROA  
+ATOM    168  N   VAL X 366      -3.285   9.472   5.670  1.00  0.00      PROA  
+ATOM    169  HN  VAL X 366      -3.775   9.952   6.394  1.00  0.00      PROA  
+ATOM    170  CA  VAL X 366      -2.467   8.371   5.951  1.00  0.00      PROA  
+ATOM    171  HA  VAL X 366      -1.507   8.470   5.466  1.00  0.00      PROA  
+ATOM    172  CB  VAL X 366      -2.075   8.398   7.434  1.00  0.00      PROA  
+ATOM    173  HB  VAL X 366      -3.000   8.654   7.994  1.00  0.00      PROA  
+ATOM    174  CG1 VAL X 366      -1.681   7.006   7.930  1.00  0.00      PROA  
+ATOM    175 HG11 VAL X 366      -1.042   6.384   7.268  1.00  0.00      PROA  
+ATOM    176 HG12 VAL X 366      -2.625   6.443   8.094  1.00  0.00      PROA  
+ATOM    177 HG13 VAL X 366      -1.257   7.106   8.952  1.00  0.00      PROA  
+ATOM    178  CG2 VAL X 366      -0.899   9.358   7.612  1.00  0.00      PROA  
+ATOM    179 HG21 VAL X 366      -1.114  10.376   7.223  1.00  0.00      PROA  
+ATOM    180 HG22 VAL X 366      -0.054   8.930   7.031  1.00  0.00      PROA  
+ATOM    181 HG23 VAL X 366      -0.616   9.392   8.686  1.00  0.00      PROA  
+ATOM    182  C   VAL X 366      -3.008   6.988   5.448  1.00  0.00      PROA  
+ATOM    183  O   VAL X 366      -2.313   6.111   4.893  1.00  0.00      PROA  
+ATOM    184  N   SER X 367      -4.332   6.886   5.581  1.00  0.00      PROA  
+ATOM    185  HN  SER X 367      -4.703   7.664   6.082  1.00  0.00      PROA  
+ATOM    186  CA  SER X 367      -5.141   5.772   5.060  1.00  0.00      PROA  
+ATOM    187  HA  SER X 367      -4.643   4.849   5.316  1.00  0.00      PROA  
+ATOM    188  CB  SER X 367      -6.518   5.685   5.729  1.00  0.00      PROA  
+ATOM    189  HB1 SER X 367      -7.163   4.883   5.311  1.00  0.00      PROA  
+ATOM    190  HB2 SER X 367      -7.072   6.633   5.560  1.00  0.00      PROA  
+ATOM    191  OG  SER X 367      -6.416   5.557   7.171  1.00  0.00      PROA  
+ATOM    192  HG1 SER X 367      -5.984   6.307   7.585  1.00  0.00      PROA  
+ATOM    193  C   SER X 367      -5.415   5.859   3.562  1.00  0.00      PROA  
+ATOM    194  O   SER X 367      -5.270   4.884   2.894  1.00  0.00      PROA  
+ATOM    195  N   MET X 368      -5.730   7.029   2.940  1.00  0.00      PROA  
+ATOM    196  HN  MET X 368      -5.866   7.929   3.348  1.00  0.00      PROA  
+ATOM    197  CA  MET X 368      -5.795   7.114   1.519  1.00  0.00      PROA  
+ATOM    198  HA  MET X 368      -6.548   6.394   1.235  1.00  0.00      PROA  
+ATOM    199  CB  MET X 368      -6.380   8.511   1.170  1.00  0.00      PROA  
+ATOM    200  HB1 MET X 368      -6.326   8.686   0.074  1.00  0.00      PROA  
+ATOM    201  HB2 MET X 368      -5.876   9.300   1.768  1.00  0.00      PROA  
+ATOM    202  CG  MET X 368      -7.924   8.541   1.385  1.00  0.00      PROA  
+ATOM    203  HG1 MET X 368      -8.032   8.383   2.479  1.00  0.00      PROA  
+ATOM    204  HG2 MET X 368      -8.330   7.620   0.915  1.00  0.00      PROA  
+ATOM    205  SD  MET X 368      -8.865   9.874   0.776  1.00  0.00      PROA  
+ATOM    206  CE  MET X 368      -9.036   9.409  -0.929  1.00  0.00      PROA  
+ATOM    207  HE1 MET X 368      -9.695   8.515  -0.956  1.00  0.00      PROA  
+ATOM    208  HE2 MET X 368      -8.087   9.204  -1.470  1.00  0.00      PROA  
+ATOM    209  HE3 MET X 368      -9.547  10.168  -1.559  1.00  0.00      PROA  
+ATOM    210  C   MET X 368      -4.566   6.781   0.700  1.00  0.00      PROA  
+ATOM    211  O   MET X 368      -4.593   6.129  -0.321  1.00  0.00      PROA  
+ATOM    212  N   THR X 369      -3.408   7.154   1.181  1.00  0.00      PROA  
+ATOM    213  HN  THR X 369      -3.323   7.498   2.112  1.00  0.00      PROA  
+ATOM    214  CA  THR X 369      -2.039   6.822   0.741  1.00  0.00      PROA  
+ATOM    215  HA  THR X 369      -2.031   7.105  -0.301  1.00  0.00      PROA  
+ATOM    216  CB  THR X 369      -0.913   7.602   1.451  1.00  0.00      PROA  
+ATOM    217  HB  THR X 369       0.129   7.288   1.229  1.00  0.00      PROA  
+ATOM    218  OG1 THR X 369      -1.048   7.538   2.896  1.00  0.00      PROA  
+ATOM    219  HG1 THR X 369      -1.786   8.110   3.119  1.00  0.00      PROA  
+ATOM    220  CG2 THR X 369      -0.882   9.067   0.993  1.00  0.00      PROA  
+ATOM    221 HG21 THR X 369      -0.022   9.636   1.405  1.00  0.00      PROA  
+ATOM    222 HG22 THR X 369      -1.903   9.483   1.130  1.00  0.00      PROA  
+ATOM    223 HG23 THR X 369      -0.623   9.074  -0.087  1.00  0.00      PROA  
+ATOM    224  C   THR X 369      -1.678   5.341   0.902  1.00  0.00      PROA  
+ATOM    225  O   THR X 369      -1.000   4.641   0.135  1.00  0.00      PROA  
+ATOM    226  N   THR X 370      -2.257   4.809   2.001  1.00  0.00      PROA  
+ATOM    227  HN  THR X 370      -2.900   5.255   2.619  1.00  0.00      PROA  
+ATOM    228  CA  THR X 370      -2.193   3.436   2.374  1.00  0.00      PROA  
+ATOM    229  HA  THR X 370      -3.085   3.344   2.976  1.00  0.00      PROA  
+ATOM    230  CB  THR X 370      -2.419   2.272   1.319  1.00  0.00      PROA  
+ATOM    231  HB  THR X 370      -2.680   1.365   1.904  1.00  0.00      PROA  
+ATOM    232  OG1 THR X 370      -1.216   2.089   0.500  1.00  0.00      PROA  
+ATOM    233  HG1 THR X 370      -1.051   3.016   0.312  1.00  0.00      PROA  
+ATOM    234  CG2 THR X 370      -3.679   2.581   0.484  1.00  0.00      PROA  
+ATOM    235 HG21 THR X 370      -3.498   3.399  -0.246  1.00  0.00      PROA  
+ATOM    236 HG22 THR X 370      -4.289   3.016   1.304  1.00  0.00      PROA  
+ATOM    237 HG23 THR X 370      -4.118   1.612   0.164  1.00  0.00      PROA  
+ATOM    238  C   THR X 370      -1.029   3.093   3.264  1.00  0.00      PROA  
+ATOM    239  O   THR X 370      -0.716   1.894   3.397  1.00  0.00      PROA  
+ATOM    240  N   VAL X 371      -0.363   4.083   3.837  1.00  0.00      PROA  
+ATOM    241  HN  VAL X 371      -0.669   4.976   3.515  1.00  0.00      PROA  
+ATOM    242  CA  VAL X 371       0.627   3.921   4.891  1.00  0.00      PROA  
+ATOM    243  HA  VAL X 371       1.450   3.259   4.667  1.00  0.00      PROA  
+ATOM    244  CB  VAL X 371       1.338   5.277   5.130  1.00  0.00      PROA  
+ATOM    245  HB  VAL X 371       0.594   6.103   5.108  1.00  0.00      PROA  
+ATOM    246  CG1 VAL X 371       2.304   5.414   6.306  1.00  0.00      PROA  
+ATOM    247 HG11 VAL X 371       3.003   4.559   6.434  1.00  0.00      PROA  
+ATOM    248 HG12 VAL X 371       1.759   5.579   7.260  1.00  0.00      PROA  
+ATOM    249 HG13 VAL X 371       2.814   6.399   6.357  1.00  0.00      PROA  
+ATOM    250  CG2 VAL X 371       2.294   5.484   3.901  1.00  0.00      PROA  
+ATOM    251 HG21 VAL X 371       3.148   4.775   3.948  1.00  0.00      PROA  
+ATOM    252 HG22 VAL X 371       2.613   6.548   3.904  1.00  0.00      PROA  
+ATOM    253 HG23 VAL X 371       1.822   5.394   2.899  1.00  0.00      PROA  
+ATOM    254  C   VAL X 371       0.037   3.426   6.191  1.00  0.00      PROA  
+ATOM    255  O   VAL X 371       0.538   2.690   7.003  1.00  0.00      PROA  
+ATOM    256  N   GLY X 372      -1.232   3.937   6.416  1.00  0.00      PROA  
+ATOM    257  HN  GLY X 372      -1.498   4.659   5.782  1.00  0.00      PROA  
+ATOM    258  CA  GLY X 372      -2.162   3.544   7.487  1.00  0.00      PROA  
+ATOM    259  HA1 GLY X 372      -2.714   2.680   7.149  1.00  0.00      PROA  
+ATOM    260  HA2 GLY X 372      -2.750   4.408   7.761  1.00  0.00      PROA  
+ATOM    261  C   GLY X 372      -1.600   3.218   8.845  1.00  0.00      PROA  
+ATOM    262  O   GLY X 372      -1.643   2.102   9.319  1.00  0.00      PROA  
+ATOM    263  N   TYR X 373      -1.031   4.202   9.564  1.00  0.00      PROA  
+ATOM    264  HN  TYR X 373      -1.181   5.155   9.311  1.00  0.00      PROA  
+ATOM    265  CA  TYR X 373      -0.306   3.990  10.850  1.00  0.00      PROA  
+ATOM    266  HA  TYR X 373       0.450   3.300  10.505  1.00  0.00      PROA  
+ATOM    267  CB  TYR X 373       0.222   5.228  11.603  1.00  0.00      PROA  
+ATOM    268  HB1 TYR X 373       0.710   4.995  12.573  1.00  0.00      PROA  
+ATOM    269  HB2 TYR X 373      -0.581   5.976  11.773  1.00  0.00      PROA  
+ATOM    270  CG  TYR X 373       1.290   5.928  10.866  1.00  0.00      PROA  
+ATOM    271  CD1 TYR X 373       1.293   7.331  10.766  1.00  0.00      PROA  
+ATOM    272  HD1 TYR X 373       0.456   7.864  11.191  1.00  0.00      PROA  
+ATOM    273  CE1 TYR X 373       2.140   8.027   9.936  1.00  0.00      PROA  
+ATOM    274  HE1 TYR X 373       1.928   9.084   9.870  1.00  0.00      PROA  
+ATOM    275  CZ  TYR X 373       3.187   7.395   9.338  1.00  0.00      PROA  
+ATOM    276  OH  TYR X 373       4.021   8.140   8.369  1.00  0.00      PROA  
+ATOM    277  HH  TYR X 373       4.637   7.538   7.945  1.00  0.00      PROA  
+ATOM    278  CD2 TYR X 373       2.341   5.259  10.196  1.00  0.00      PROA  
+ATOM    279  HD2 TYR X 373       2.410   4.189  10.323  1.00  0.00      PROA  
+ATOM    280  CE2 TYR X 373       3.305   5.961   9.450  1.00  0.00      PROA  
+ATOM    281  HE2 TYR X 373       4.168   5.521   8.972  1.00  0.00      PROA  
+ATOM    282  C   TYR X 373      -1.188   3.298  11.900  1.00  0.00      PROA  
+ATOM    283  O   TYR X 373      -0.739   2.394  12.589  1.00  0.00      PROA  
+ATOM    284  N   GLY X 374      -2.486   3.742  12.054  1.00  0.00      PROA  
+ATOM    285  HN  GLY X 374      -2.925   4.399  11.446  1.00  0.00      PROA  
+ATOM    286  CA  GLY X 374      -3.364   3.172  13.072  1.00  0.00      PROA  
+ATOM    287  HA1 GLY X 374      -3.231   2.117  13.263  1.00  0.00      PROA  
+ATOM    288  HA2 GLY X 374      -4.362   3.397  12.726  1.00  0.00      PROA  
+ATOM    289  C   GLY X 374      -3.137   3.860  14.374  1.00  0.00      PROA  
+ATOM    290  O   GLY X 374      -3.327   3.323  15.446  1.00  0.00      PROA  
+ATOM    291  N   ASP X 375      -2.716   5.132  14.258  1.00  0.00      PROA  
+ATOM    292  HN  ASP X 375      -2.592   5.517  13.347  1.00  0.00      PROA  
+ATOM    293  CA  ASP X 375      -2.706   6.055  15.382  1.00  0.00      PROA  
+ATOM    294  HA  ASP X 375      -2.052   5.529  16.061  1.00  0.00      PROA  
+ATOM    295  CB  ASP X 375      -1.922   7.358  15.033  1.00  0.00      PROA  
+ATOM    296  HB1 ASP X 375      -0.878   7.053  14.806  1.00  0.00      PROA  
+ATOM    297  HB2 ASP X 375      -1.902   8.008  15.933  1.00  0.00      PROA  
+ATOM    298  CG  ASP X 375      -2.464   8.125  13.886  1.00  0.00      PROA  
+ATOM    299  OD1 ASP X 375      -3.290   7.631  13.085  1.00  0.00      PROA  
+ATOM    300  OD2 ASP X 375      -1.993   9.254  13.689  1.00  0.00      PROA  
+ATOM    301  C   ASP X 375      -4.051   6.331  16.038  1.00  0.00      PROA  
+ATOM    302  O   ASP X 375      -4.171   6.341  17.271  1.00  0.00      PROA  
+END