diff --git a/modules/bindings/pymod/clustalw.py b/modules/bindings/pymod/clustalw.py
index 6f0434da5b79c00cc02f45d01ceeeab4ceab8b52..2c2fd6ebac5cf580dd1a259cb087a0ada9a127c4 100644
--- a/modules/bindings/pymod/clustalw.py
+++ b/modules/bindings/pymod/clustalw.py
@@ -3,7 +3,8 @@ from ost import settings, io, seq, LogError
 import os
 import subprocess
 
-def ClustalW(seq1, seq2=None, clustalw=None, keep_files=False, nopgap=False):
+def ClustalW(seq1, seq2=None, clustalw=None, keep_files=False, nopgap=False, 
+             clustalw_option_string=False):
   clustalw_path=settings.Locate(('clustalw', 'clustalw2'), 
                                 explicit_file_name=clustalw)
   
@@ -34,6 +35,9 @@ def ClustalW(seq1, seq2=None, clustalw=None, keep_files=False, nopgap=False):
                                                            out)
   if nopgap:
     command+=" -nopgap"
+  if clustalw_option_string!=False:
+    command=command+" "+clustalw_option_string  #see useful flags: http://toolkit.tuebingen.mpg.de/clustalw/help_params
+
   ps=subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
   ps.stdout.readlines()
   aln=io.LoadAlignment(out)
diff --git a/modules/bindings/tests/test_clustalw.py b/modules/bindings/tests/test_clustalw.py
index 010b636eb7bc249a86e84516dad81ca27c00b646..0536df8f77f868c27b93edbf92fd37a5f9a3d31d 100644
--- a/modules/bindings/tests/test_clustalw.py
+++ b/modules/bindings/tests/test_clustalw.py
@@ -15,9 +15,15 @@ class TestClustalWBindings(unittest.TestCase):
     self.pw_alignment = io.LoadAlignment("testfiles/pairwise_aln.fasta")
     self.nopgap_pw_alignment = io.LoadAlignment("testfiles/nopgap_pairwise_aln.fasta")
     self.mult_alignment = io.LoadAlignment("testfiles/multiple_aln.fasta")
+
     self.strseq1 = self.targetseq.GetGaplessString()
     self.strseq2 = self.templseq.GetGaplessString()
-    
+
+    self.seq1 = io.LoadSequence("testfiles/seq1.fasta")
+    self.seq2 = io.LoadSequence("testfiles/seq2.fasta")
+    self.seq1_seq2_alignment = io.LoadAlignment("testfiles/seq1_seq2_aln.fasta")
+    self.seq1_seq2_alignment_options_changed = io.LoadAlignment("testfiles/seq1_seq2_aln_options_changed.fasta")
+
   def testPairwiseClustalW(self):
     aln=clustalw.ClustalW(self.targetseq, self.templseq)
     assert self.pw_alignment.ToString(80) == aln.ToString(80), \
@@ -46,6 +52,15 @@ class TestClustalWBindings(unittest.TestCase):
            "Pairwise alignment using two strings differs from precomputed one \n%s \n%s" \
            %(self.pw_alignment.ToString(80),aln.ToString(80))
 
+  def testPairwiseClustalWChangedOptions(self):
+    # five residues removed two positions before the end of seq2
+    aln=clustalw.ClustalW(self.seq1,self.seq2)
+    assert self.seq1_seq2_alignment.ToString(80) == aln.ToString(80), \
+           "Pairwise alignment with default gap penalties differs from precomputed one"
+    aln=clustalw.ClustalW(self.seq1,self.seq2,clustalw_option_string="-GAPOPEN=2 -GAPEXT=0")
+    assert self.seq1_seq2_alignment_options_changed.ToString(80) == aln.ToString(80), \
+           "Pairwise alignment with modified gap penalties differs from precomputed one"
+
 if __name__ == "__main__":
   # test if clustalw package is available on system, otherwise ignore tests
   try:
diff --git a/modules/bindings/tests/testfiles/seq1.fasta b/modules/bindings/tests/testfiles/seq1.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..7aa326305015b25f0416e416fe14afe19984e29a
--- /dev/null
+++ b/modules/bindings/tests/testfiles/seq1.fasta
@@ -0,0 +1,2 @@
+>target
+MAETLIKVDLNQSPYDNPQVHNRWHPDIPMAVWVEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVHMKVSLIKGGMAKYGIKNPIFKPSPMTPNYKDYLIFEGISVDEKGKQHYLDVTVAYRQACLNAIEYLKKFGYSGAQAYSLLGTAPVQGHISGVVDVPNACATLWLPTEIFDFDINPTAEGPQKIITGGVDLPIAQDK
\ No newline at end of file
diff --git a/modules/bindings/tests/testfiles/seq1_seq2_aln.fasta b/modules/bindings/tests/testfiles/seq1_seq2_aln.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..e735762a95916b563ad735f89eaa3c22376fd505
--- /dev/null
+++ b/modules/bindings/tests/testfiles/seq1_seq2_aln.fasta
@@ -0,0 +1,4 @@
+>target
+MAETLIKVDLNQSPYDNPQVHNRWHPDIPMAVWVEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVHMKVSLIKGGMAKYGIKNPIFKPSPMTPNYKDYLIFEGISVDEKGKQHYLDVTVAYRQACLNAIEYLKKFGYSGAQAYSLLGTAPVQGHISGVVDVPNACATLWLPTEIFDFDINPTAEGPQKIITGGVDLPIAQDK
+>model
+---------------------------------VEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVIK---------------------------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/modules/bindings/tests/testfiles/seq1_seq2_aln_options_changed.fasta b/modules/bindings/tests/testfiles/seq1_seq2_aln_options_changed.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..3efdc6cd889b07a900a1f63e6d5e8f1d13552af9
--- /dev/null
+++ b/modules/bindings/tests/testfiles/seq1_seq2_aln_options_changed.fasta
@@ -0,0 +1,4 @@
+>target
+MAETLIKVDLNQSPYDNPQVHNRWHPDIPMAVWVEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVHMKVSLIKGGMAKYGIKNPIFKPSPMTPNYKDYLIFEGISVDEKGKQHYLDVTVAYRQACLNAIEYLKKFGYSGAQAYSLLGTAPVQGHISGVVDVPNACATLWLPTEIFDFDINPTAEGPQKIITGGVDLPIAQDK
+>model
+---------------------------------VEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWV------IK---------------------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/modules/bindings/tests/testfiles/seq2.fasta b/modules/bindings/tests/testfiles/seq2.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..72a58bd2acab10c6be354a59e75b28eea045a906
--- /dev/null
+++ b/modules/bindings/tests/testfiles/seq2.fasta
@@ -0,0 +1,2 @@
+>model
+VEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVIK
\ No newline at end of file
diff --git a/modules/seq/alg/pymod/renumber.py b/modules/seq/alg/pymod/renumber.py
index f6d7d128f115dc499d2ded3ad2f265114227a9ad..39f34ba7b0dc68b4c84421e6b14ac606a9ddc107 100644
--- a/modules/seq/alg/pymod/renumber.py
+++ b/modules/seq/alg/pymod/renumber.py
@@ -1,11 +1,11 @@
 from ost import io, seq, mol, conop
-import ost
+from ost import *
 
-def Renumber(seq_handle):
+def Renumber(seq_handle, sequence_number_with_attached_view=1):
   """
   Function to renumber an entity according to an alignment between the model sequence 
-  and the full-length target sequence. The aligned model sequence with an attached 
-  view needs to be provided. Upon succcess, the renumbered entity is returned.
+  and the full-length target sequence. The aligned model sequence or the alignment itself
+  with an attached view needs to be provided. Upon succcess, the renumbered entity is returned.
 
   .. code-block:: python
 
@@ -16,35 +16,70 @@ def Renumber(seq_handle):
     pdb_seq=seq.SequenceFromChain("model", ent.chains[0])
     aln=ClustalW(s,pdb_seq)
     aln.AttachView(1,ent.chains[0].Select(""))
-    e=Renumber(aln.GetSequence(1))
+    e=Renumber(aln.GetSequence(sequence_number_with_attached_view))
     io.SavePDB(e, "renum.pdb")
    
   """
-  if seq_handle.HasAttachedView()==False:
-    raise RuntimeError, "Sequence Handle has no attached view"
-  changed_residue_count=0
-  renumberingFlag = False
-  ent_n=mol.CreateEntity()
-  ed=ent_n.EditXCS()
-  c=ed.InsertChain(" ")
-  for pos in range(len(seq_handle)):
-    if seq_handle[pos]!='-':
-      r=seq_handle.GetResidue(pos)
-      if r.IsValid():
-          #print seq_handle[pos],r.number.num,pos+1
-          if r.number.num!=pos+1:
-            changed_residue_count+=1
-            renumberingFlag = True
-          r_n=ed.AppendResidue(c,r.name, mol.ResNum(pos+1))
-          for atom in r.atoms:
-            ed.InsertAtom(r_n,atom.name,atom.pos,atom.prop)
-      else:
-        err='Error: renumbering failed at position %s' %pos
-        raise RuntimeError, err
-  if renumberingFlag == True:
-    err = 'Warning: %s residues have been renumbered!' %changed_residue_count
-    ost.LogMessage(err)
-  conop.ConnectAll(ent_n)
-  return ent_n
+  if isinstance(seq_handle, seq.SequenceHandle):
+    if seq_handle.HasAttachedView()==False:
+      raise RuntimeError, "Sequence Handle has no attached view"
+    changed_residue_count=0
+    renumberingFlag = False
+    ent_n=mol.CreateEntity()
+    ed=ent_n.EditXCS()
+    c=ed.InsertChain(" ")
+    for pos in range(len(seq_handle)):
+      if seq_handle[pos]!='-':
+        r=seq_handle.GetResidue(pos)
+        if r.IsValid():
+            #print seq_handle[pos],r.number.num,pos+1
+            if r.number.num!=pos+1:
+              changed_residue_count+=1
+              renumberingFlag = True
+            r_n=ed.AppendResidue(c,r.name, mol.ResNum(pos+1))
+            for atom in r.atoms:
+              ed.InsertAtom(r_n,atom.name,atom.pos,atom.prop)
+        else:
+          err='Error: renumbering failed at position %s' %pos
+          raise RuntimeError, err
+    if renumberingFlag == True:
+      err = 'Warning: %s residues have been renumbered!' %changed_residue_count
+      LogInfo(err)
+    conop.ConnectAll(ent_n)
+    return ent_n
 
+  elif isinstance(seq_handle, seq.AlignmentHandle):
+    if seq_handle.GetSequence(sequence_number_with_attached_view).HasAttachedView()==False:
+      raise RuntimeError, "Sequence Handle has no attached view"
+    dir(seq_handle)
+    counter=0
+    changed_residue_count=0
+    renumberingFlag = False
+    ent_n=mol.CreateEntity()
+    ed=ent_n.EditXCS()
+    c=ed.InsertChain(seq_handle.GetSequence(sequence_number_with_attached_view).GetAttachedView().chains[0].name)
+    for col in seq_handle:
+      if col[0]!='-' and col[1]!='-':
+        if col[0]==col[1]:
+          rnum=seq_handle.GetSequence(sequence_number_with_attached_view).GetResidueIndex(counter)
+          r=seq_handle.GetSequence(sequence_number_with_attached_view).GetResidue(counter)
+          if r.IsValid():
+            if r.number.num!=counter+1:
+              changed_residue_count+=1
+              renumberingFlag = True
+            r_n=ed.AppendResidue(c,r.name, mol.ResNum(counter+1))
+            for atom in r.atoms:
+              ed.InsertAtom(r_n,atom.name,atom.pos,atom.element, atom.b_factor, 
+                            atom.occupancy, atom.is_hetatom)
+
+          else:
+            raise RuntimeError("invalide residue at postion %s (renumbering failed)" %(counter))
+        else:
+          raise RuntimeError("residue mismatch at position %d (%s vs %s) (renumbering failed)"%(counter, col[0],col[1]))
+      counter+=1
+    if renumberingFlag == True:
+      err = 'Warning: %s residues have been renumbered!' %changed_residue_count
+      LogInfo(err)
+    conop.ConnectAll(ent_n)
+    return ent_n
 
diff --git a/modules/seq/alg/tests/CMakeLists.txt b/modules/seq/alg/tests/CMakeLists.txt
index 37969a869b14c0f740f2b8e221509120f1cd1a6e..aafdabc4b723b7ee0ac6b978eb28cf34f95b5c23 100644
--- a/modules/seq/alg/tests/CMakeLists.txt
+++ b/modules/seq/alg/tests/CMakeLists.txt
@@ -2,6 +2,7 @@ set(OST_SEQ_ALG_UNIT_TESTS
   test_merge_pairwise_alignments.cc
   test_sequence_identity.cc
   tests.cc
+  test_renumber.py
 )
 
 ost_unittest(seq_alg "${OST_SEQ_ALG_UNIT_TESTS}")
diff --git a/modules/seq/alg/tests/test_renumber.py b/modules/seq/alg/tests/test_renumber.py
new file mode 100644
index 0000000000000000000000000000000000000000..498c42c863f5fc564af954adb3ea4cd8c5319459
--- /dev/null
+++ b/modules/seq/alg/tests/test_renumber.py
@@ -0,0 +1,118 @@
+import unittest
+from ost import *
+from ost import settings
+from ost import seq
+from ost.bindings.clustalw import *
+from ost.seq.alg import renumber
+
+class TestRenumber(unittest.TestCase):
+  
+  def setUp(self):
+    self.target_seq = io.LoadSequence("testfiles/peptide.fasta")
+    self.peptide_original = io.LoadEntity("testfiles/peptide_original.pdb")
+    self.peptide_plus_5 = io.LoadEntity("testfiles/peptide_plus_5.pdb")
+    self.peptide_random = io.LoadEntity("testfiles/peptide_random.pdb")
+    self.peptide_del_1_2 = io.LoadEntity("testfiles/peptide_del_1_2.pdb")
+    self.peptide_del_4 = io.LoadEntity("testfiles/peptide_del_4.pdb")
+    self.peptide_mutation_3 = io.LoadEntity("testfiles/peptide_mutation_3.pdb")
+    
+
+  def testPeptidePlusFive(self):
+    """
+    All residue numbers shifted by 5.
+    Check whether internal atom order changes while renumbering
+    (a new entity is generated in the edit_mode)
+    TODO: add more basic tests: are all properties preserved?
+    """
+    model_seq=seq.SequenceFromChain(" ", self.peptide_plus_5.chains[0]) 
+    model_seq.name="model"
+    aln=ClustalW(self.target_seq,model_seq)
+    aln.AttachView(1,self.peptide_plus_5.Select(""))
+    ent_n=renumber.Renumber(aln)
+
+    for r_counter in range(len(self.peptide_original.residues)):
+      assert self.peptide_original.residues[r_counter].qualified_name == ent_n.residues[r_counter].qualified_name, \
+              "Renumbering failed on residue level: restoring from ResNum+5"
+      for atom_nr in range(len(self.peptide_original.residues[r_counter].atoms)):
+        assert self.peptide_original.residues[r_counter].atoms[atom_nr].name==ent_n.residues[r_counter].atoms[atom_nr].name, \
+                "Renumbering failed on atom level: restoring from ResNum+5"
+  
+
+  def testPeptideRandom(self):
+    """
+    Change residue names in random order
+    """
+    model_seq=seq.SequenceFromChain(" ", self.peptide_random.chains[0]) 
+    model_seq.name="model"
+    aln=ClustalW(self.target_seq,model_seq)
+    aln.AttachView(1,self.peptide_random.Select(""))
+    ent_n=renumber.Renumber(aln)
+
+    for r_counter in range(len(self.peptide_original.residues)):
+      assert self.peptide_original.residues[r_counter].qualified_name == ent_n.residues[r_counter].qualified_name, \
+             "Renumbering failed on residue level: restoring from random residue numbers"
+      for atom_nr in range(len(self.peptide_original.residues[r_counter].atoms)):
+        assert self.peptide_original.residues[r_counter].atoms[atom_nr].name==ent_n.residues[r_counter].atoms[atom_nr].name, \
+               "Renumbering failed on atom level: restoring from random residue numbers"
+
+
+  def testPeptideDel_1_2(self):
+    """
+    First two residues were removed
+    """
+    model_seq=seq.SequenceFromChain(" ", self.peptide_del_1_2.chains[0]) 
+    model_seq.name="model"
+    aln=ClustalW(self.target_seq,model_seq)
+    aln.AttachView(1,self.peptide_del_1_2.Select(""))
+    ent_n=renumber.Renumber(aln)
+
+    for r_counter in range(len(self.peptide_original.residues)):
+      if r_counter==0 or r_counter==1:
+        continue
+      assert self.peptide_original.residues[r_counter].qualified_name == ent_n.residues[r_counter-2].qualified_name, \
+             "Renumbering failed on residue level: restoring from random residue numbers"
+      for atom_nr in range(len(self.peptide_original.residues[r_counter].atoms)):
+        assert self.peptide_original.residues[r_counter].atoms[atom_nr].name==ent_n.residues[r_counter-2].atoms[atom_nr].name, \
+               "Renumbering failed on atom level: restoring from random residue numbers"
+
+
+  def testPeptideDel_4(self):
+    """
+    Residues in the middle (position 4) was removed
+    """
+    model_seq=seq.SequenceFromChain(" ", self.peptide_del_4.chains[0]) 
+    model_seq.name="model"
+    aln=ClustalW(self.target_seq,model_seq)
+    aln.AttachView(1,self.peptide_del_4.Select(""))
+    ent_n=renumber.Renumber(aln)
+
+    flag=0
+    for r_counter in range(len(self.peptide_original.residues)):
+      if r_counter==3:
+        flag=1
+        continue
+      assert self.peptide_original.residues[r_counter].qualified_name == ent_n.residues[r_counter-flag].qualified_name, \
+             "Renumbering failed on residue level: restoring from random residue numbers"
+      for atom_nr in range(len(self.peptide_original.residues[r_counter].atoms)):
+        assert self.peptide_original.residues[r_counter].atoms[atom_nr].name==ent_n.residues[r_counter-flag].atoms[atom_nr].name, \
+               "Renumbering failed on atom level: restoring from random residue numbers"
+
+
+  def testPeptideMutation_3(self):
+    """
+    Mutation to GLY at postion 3
+    """
+    model_seq=seq.SequenceFromChain(" ", self.peptide_mutation_3.chains[0]) 
+    model_seq.name="model"
+    aln=ClustalW(self.target_seq,model_seq)
+    aln.AttachView(1,self.peptide_mutation_3.Select(""))
+    self.assertRaises(RuntimeError, renumber.Renumber, aln)
+
+
+
+if __name__ == "__main__":
+  # test renumbering
+  try:
+    unittest.main()
+  except Exception, e:
+    print e
\ No newline at end of file
diff --git a/modules/seq/alg/tests/testfiles/peptide.fasta b/modules/seq/alg/tests/testfiles/peptide.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..8366b04ca04fb059f3d15348e964b9bdf8f4490e
--- /dev/null
+++ b/modules/seq/alg/tests/testfiles/peptide.fasta
@@ -0,0 +1,2 @@
+>peptide
+MPTNA
\ No newline at end of file
diff --git a/modules/seq/alg/tests/testfiles/peptide_del_1_2.pdb b/modules/seq/alg/tests/testfiles/peptide_del_1_2.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..06fc7e30a5bd50f197a3db75a8cda18ba1b5361f
--- /dev/null
+++ b/modules/seq/alg/tests/testfiles/peptide_del_1_2.pdb
@@ -0,0 +1,20 @@
+ATOM     16  N   THR     1     -26.565  -9.309  10.007  1.00  0.00           N
+ATOM     17  CA  THR     1     -26.102  -8.194   9.247  1.00  0.00           C
+ATOM     18  C   THR     1     -25.296  -7.372  10.186  1.00  0.00           C
+ATOM     19  O   THR     1     -24.295  -6.768   9.810  1.00  0.00           O
+ATOM     20  CB  THR     1     -27.274  -7.369   8.683  1.00  0.00           C
+ATOM     21  OG1 THR     1     -28.080  -6.880   9.762  1.00  0.00           O
+ATOM     22  CG2 THR     1     -28.139  -8.227   7.772  1.00  0.00           C
+ATOM     23  N   ASN     2     -25.736  -7.349  11.452  1.00  0.00           N
+ATOM     24  CA  ASN     2     -25.104  -6.609  12.495  1.00  0.00           C
+ATOM     25  C   ASN     2     -23.742  -7.171  12.684  1.00  0.00           C
+ATOM     26  O   ASN     2     -22.806  -6.454  13.030  1.00  0.00           O
+ATOM     27  CB  ASN     2     -25.901  -6.728  13.795  1.00  0.00           C
+ATOM     28  CG  ASN     2     -27.189  -5.929  13.764  1.00  0.00           C
+ATOM     29  OD1 ASN     2     -27.340  -5.007  12.963  1.00  0.00           O
+ATOM     30  ND2 ASN     2     -28.124  -6.282  14.639  1.00  0.00           N
+ATOM     31  N   ALA     3     -16.677  -4.828  10.806  1.00  0.00           N
+ATOM     32  CA  ALA     3     -15.984  -3.708  10.241  1.00  0.00           C
+ATOM     33  C   ALA     3     -15.498  -2.863  11.363  1.00  0.00           C
+ATOM     34  O   ALA     3     -14.369  -2.378  11.344  1.00  0.00           O
+ATOM     35  CB  ALA     3     -16.917  -2.901   9.352  1.00  0.00           C
\ No newline at end of file
diff --git a/modules/seq/alg/tests/testfiles/peptide_del_4.pdb b/modules/seq/alg/tests/testfiles/peptide_del_4.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..183ce9c57a125cc1bd0a16c7125b1fb13154de5d
--- /dev/null
+++ b/modules/seq/alg/tests/testfiles/peptide_del_4.pdb
@@ -0,0 +1,27 @@
+ATOM      1  N   MET     1     -29.037  -8.783  14.347  1.00  0.00           N
+ATOM      2  CA  MET     1     -28.985  -9.502  13.056  1.00  0.00           C
+ATOM      3  C   MET     1     -27.597  -9.852  12.665  1.00  0.00           C
+ATOM      4  O   MET     1     -26.614  -9.275  13.129  1.00  0.00           O
+ATOM      5  CB  MET     1     -29.575  -8.640  11.938  1.00  0.00           C
+ATOM      6  CG  MET     1     -31.084  -8.470  12.016  1.00  0.00           C
+ATOM      7  SD  MET     1     -31.752  -7.534  10.628  1.00  0.00           S
+ATOM      8  CE  MET     1     -33.497  -7.530  11.030  1.00  0.00           C
+ATOM      9  N   PRO     2     -27.533 -10.838  11.828  1.00  0.00           N
+ATOM     10  CA  PRO     2     -26.273 -11.293  11.337  1.00  0.00           C
+ATOM     11  C   PRO     2     -25.709 -10.233  10.478  1.00  0.00           C
+ATOM     12  O   PRO     2     -24.518 -10.265  10.186  1.00  0.00           O
+ATOM     13  CB  PRO     2     -26.616 -12.565  10.559  1.00  0.00           C
+ATOM     14  CG  PRO     2     -28.043 -12.386  10.161  1.00  0.00           C
+ATOM     15  CD  PRO     2     -28.699 -11.637  11.286  1.00  0.00           C
+ATOM     16  N   THR     3     -26.565  -9.309  10.007  1.00  0.00           N
+ATOM     17  CA  THR     3     -26.102  -8.194   9.247  1.00  0.00           C
+ATOM     18  C   THR     3     -25.296  -7.372  10.186  1.00  0.00           C
+ATOM     19  O   THR     3     -24.295  -6.768   9.810  1.00  0.00           O
+ATOM     20  CB  THR     3     -27.274  -7.369   8.683  1.00  0.00           C
+ATOM     21  OG1 THR     3     -28.080  -6.880   9.762  1.00  0.00           O
+ATOM     22  CG2 THR     3     -28.139  -8.227   7.772  1.00  0.00           C
+ATOM     31  N   ALA     4     -16.677  -4.828  10.806  1.00  0.00           N
+ATOM     32  CA  ALA     4     -15.984  -3.708  10.241  1.00  0.00           C
+ATOM     33  C   ALA     4     -15.498  -2.863  11.363  1.00  0.00           C
+ATOM     34  O   ALA     4     -14.369  -2.378  11.344  1.00  0.00           O
+ATOM     35  CB  ALA     4     -16.917  -2.901   9.352  1.00  0.00           C
\ No newline at end of file
diff --git a/modules/seq/alg/tests/testfiles/peptide_mutation_3.pdb b/modules/seq/alg/tests/testfiles/peptide_mutation_3.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..be9fa82c7d15a43b2a9d906466c33c74d0293fca
--- /dev/null
+++ b/modules/seq/alg/tests/testfiles/peptide_mutation_3.pdb
@@ -0,0 +1,32 @@
+ATOM      1  N   MET     1     -29.037  -8.783  14.347  1.00  0.00           N
+ATOM      2  CA  MET     1     -28.985  -9.502  13.056  1.00  0.00           C
+ATOM      3  C   MET     1     -27.597  -9.852  12.665  1.00  0.00           C
+ATOM      4  O   MET     1     -26.614  -9.275  13.129  1.00  0.00           O
+ATOM      5  CB  MET     1     -29.575  -8.640  11.938  1.00  0.00           C
+ATOM      6  CG  MET     1     -31.084  -8.470  12.016  1.00  0.00           C
+ATOM      7  SD  MET     1     -31.752  -7.534  10.628  1.00  0.00           S
+ATOM      8  CE  MET     1     -33.497  -7.530  11.030  1.00  0.00           C
+ATOM      9  N   PRO     2     -27.533 -10.838  11.828  1.00  0.00           N
+ATOM     10  CA  PRO     2     -26.273 -11.293  11.337  1.00  0.00           C
+ATOM     11  C   PRO     2     -25.709 -10.233  10.478  1.00  0.00           C
+ATOM     12  O   PRO     2     -24.518 -10.265  10.186  1.00  0.00           O
+ATOM     13  CB  PRO     2     -26.616 -12.565  10.559  1.00  0.00           C
+ATOM     14  CG  PRO     2     -28.043 -12.386  10.161  1.00  0.00           C
+ATOM     15  CD  PRO     2     -28.699 -11.637  11.286  1.00  0.00           C
+ATOM     16  N   GLY     3     -26.565  -9.309  10.007  1.00  0.00           N
+ATOM     17  CA  GLY     3     -26.102  -8.194   9.247  1.00  0.00           C
+ATOM     18  C   GLY     3     -25.296  -7.372  10.186  1.00  0.00           C
+ATOM     19  O   GLY     3     -24.295  -6.768   9.810  1.00  0.00           O
+ATOM     23  N   ASN     4     -25.736  -7.349  11.452  1.00  0.00           N
+ATOM     24  CA  ASN     4     -25.104  -6.609  12.495  1.00  0.00           C
+ATOM     25  C   ASN     4     -23.742  -7.171  12.684  1.00  0.00           C
+ATOM     26  O   ASN     4     -22.806  -6.454  13.030  1.00  0.00           O
+ATOM     27  CB  ASN     4     -25.901  -6.728  13.795  1.00  0.00           C
+ATOM     28  CG  ASN     4     -27.189  -5.929  13.764  1.00  0.00           C
+ATOM     29  OD1 ASN     4     -27.340  -5.007  12.963  1.00  0.00           O
+ATOM     30  ND2 ASN     4     -28.124  -6.282  14.639  1.00  0.00           N
+ATOM     31  N   ALA     5     -16.677  -4.828  10.806  1.00  0.00           N
+ATOM     32  CA  ALA     5     -15.984  -3.708  10.241  1.00  0.00           C
+ATOM     33  C   ALA     5     -15.498  -2.863  11.363  1.00  0.00           C
+ATOM     34  O   ALA     5     -14.369  -2.378  11.344  1.00  0.00           O
+ATOM     35  CB  ALA     5     -16.917  -2.901   9.352  1.00  0.00           C
\ No newline at end of file
diff --git a/modules/seq/alg/tests/testfiles/peptide_original.pdb b/modules/seq/alg/tests/testfiles/peptide_original.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..8068ae46b1353f2c52556919ef5cf89c2d5e5a1f
--- /dev/null
+++ b/modules/seq/alg/tests/testfiles/peptide_original.pdb
@@ -0,0 +1,35 @@
+ATOM      1  N   MET     1     -29.037  -8.783  14.347  1.00  0.00           N
+ATOM      2  CA  MET     1     -28.985  -9.502  13.056  1.00  0.00           C
+ATOM      3  C   MET     1     -27.597  -9.852  12.665  1.00  0.00           C
+ATOM      4  O   MET     1     -26.614  -9.275  13.129  1.00  0.00           O
+ATOM      5  CB  MET     1     -29.575  -8.640  11.938  1.00  0.00           C
+ATOM      6  CG  MET     1     -31.084  -8.470  12.016  1.00  0.00           C
+ATOM      7  SD  MET     1     -31.752  -7.534  10.628  1.00  0.00           S
+ATOM      8  CE  MET     1     -33.497  -7.530  11.030  1.00  0.00           C
+ATOM      9  N   PRO     2     -27.533 -10.838  11.828  1.00  0.00           N
+ATOM     10  CA  PRO     2     -26.273 -11.293  11.337  1.00  0.00           C
+ATOM     11  C   PRO     2     -25.709 -10.233  10.478  1.00  0.00           C
+ATOM     12  O   PRO     2     -24.518 -10.265  10.186  1.00  0.00           O
+ATOM     13  CB  PRO     2     -26.616 -12.565  10.559  1.00  0.00           C
+ATOM     14  CG  PRO     2     -28.043 -12.386  10.161  1.00  0.00           C
+ATOM     15  CD  PRO     2     -28.699 -11.637  11.286  1.00  0.00           C
+ATOM     16  N   THR     3     -26.565  -9.309  10.007  1.00  0.00           N
+ATOM     17  CA  THR     3     -26.102  -8.194   9.247  1.00  0.00           C
+ATOM     18  C   THR     3     -25.296  -7.372  10.186  1.00  0.00           C
+ATOM     19  O   THR     3     -24.295  -6.768   9.810  1.00  0.00           O
+ATOM     20  CB  THR     3     -27.274  -7.369   8.683  1.00  0.00           C
+ATOM     21  OG1 THR     3     -28.080  -6.880   9.762  1.00  0.00           O
+ATOM     22  CG2 THR     3     -28.139  -8.227   7.772  1.00  0.00           C
+ATOM     23  N   ASN     4     -25.736  -7.349  11.452  1.00  0.00           N
+ATOM     24  CA  ASN     4     -25.104  -6.609  12.495  1.00  0.00           C
+ATOM     25  C   ASN     4     -23.742  -7.171  12.684  1.00  0.00           C
+ATOM     26  O   ASN     4     -22.806  -6.454  13.030  1.00  0.00           O
+ATOM     27  CB  ASN     4     -25.901  -6.728  13.795  1.00  0.00           C
+ATOM     28  CG  ASN     4     -27.189  -5.929  13.764  1.00  0.00           C
+ATOM     29  OD1 ASN     4     -27.340  -5.007  12.963  1.00  0.00           O
+ATOM     30  ND2 ASN     4     -28.124  -6.282  14.639  1.00  0.00           N
+ATOM     31  N   ALA     5     -16.677  -4.828  10.806  1.00  0.00           N
+ATOM     32  CA  ALA     5     -15.984  -3.708  10.241  1.00  0.00           C
+ATOM     33  C   ALA     5     -15.498  -2.863  11.363  1.00  0.00           C
+ATOM     34  O   ALA     5     -14.369  -2.378  11.344  1.00  0.00           O
+ATOM     35  CB  ALA     5     -16.917  -2.901   9.352  1.00  0.00           C
\ No newline at end of file
diff --git a/modules/seq/alg/tests/testfiles/peptide_plus_5.pdb b/modules/seq/alg/tests/testfiles/peptide_plus_5.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..c64a572640047c0f784ecf3ccd733b4756f39f92
--- /dev/null
+++ b/modules/seq/alg/tests/testfiles/peptide_plus_5.pdb
@@ -0,0 +1,35 @@
+ATOM      1  N   MET     6     -29.037  -8.783  14.347  1.00  0.00           N
+ATOM      2  CA  MET     6     -28.985  -9.502  13.056  1.00  0.00           C
+ATOM      3  C   MET     6     -27.597  -9.852  12.665  1.00  0.00           C
+ATOM      4  O   MET     6     -26.614  -9.275  13.129  1.00  0.00           O
+ATOM      5  CB  MET     6     -29.575  -8.640  11.938  1.00  0.00           C
+ATOM      6  CG  MET     6     -31.084  -8.470  12.016  1.00  0.00           C
+ATOM      7  SD  MET     6     -31.752  -7.534  10.628  1.00  0.00           S
+ATOM      8  CE  MET     6     -33.497  -7.530  11.030  1.00  0.00           C
+ATOM      9  N   PRO     7     -27.533 -10.838  11.828  1.00  0.00           N
+ATOM     10  CA  PRO     7     -26.273 -11.293  11.337  1.00  0.00           C
+ATOM     11  C   PRO     7     -25.709 -10.233  10.478  1.00  0.00           C
+ATOM     12  O   PRO     7     -24.518 -10.265  10.186  1.00  0.00           O
+ATOM     13  CB  PRO     7     -26.616 -12.565  10.559  1.00  0.00           C
+ATOM     14  CG  PRO     7     -28.043 -12.386  10.161  1.00  0.00           C
+ATOM     15  CD  PRO     7     -28.699 -11.637  11.286  1.00  0.00           C
+ATOM     16  N   THR     8     -26.565  -9.309  10.007  1.00  0.00           N
+ATOM     17  CA  THR     8     -26.102  -8.194   9.247  1.00  0.00           C
+ATOM     18  C   THR     8     -25.296  -7.372  10.186  1.00  0.00           C
+ATOM     19  O   THR     8     -24.295  -6.768   9.810  1.00  0.00           O
+ATOM     20  CB  THR     8     -27.274  -7.369   8.683  1.00  0.00           C
+ATOM     21  OG1 THR     8     -28.080  -6.880   9.762  1.00  0.00           O
+ATOM     22  CG2 THR     8     -28.139  -8.227   7.772  1.00  0.00           C
+ATOM     23  N   ASN     9     -25.736  -7.349  11.452  1.00  0.00           N
+ATOM     24  CA  ASN     9     -25.104  -6.609  12.495  1.00  0.00           C
+ATOM     25  C   ASN     9     -23.742  -7.171  12.684  1.00  0.00           C
+ATOM     26  O   ASN     9     -22.806  -6.454  13.030  1.00  0.00           O
+ATOM     27  CB  ASN     9     -25.901  -6.728  13.795  1.00  0.00           C
+ATOM     28  CG  ASN     9     -27.189  -5.929  13.764  1.00  0.00           C
+ATOM     29  OD1 ASN     9     -27.340  -5.007  12.963  1.00  0.00           O
+ATOM     30  ND2 ASN     9     -28.124  -6.282  14.639  1.00  0.00           N
+ATOM     31  N   ALA    10     -16.677  -4.828  10.806  1.00  0.00           N
+ATOM     32  CA  ALA    10     -15.984  -3.708  10.241  1.00  0.00           C
+ATOM     33  C   ALA    10     -15.498  -2.863  11.363  1.00  0.00           C
+ATOM     34  O   ALA    10     -14.369  -2.378  11.344  1.00  0.00           O
+ATOM     35  CB  ALA    10     -16.917  -2.901   9.352  1.00  0.00           C
\ No newline at end of file
diff --git a/modules/seq/alg/tests/testfiles/peptide_random.pdb b/modules/seq/alg/tests/testfiles/peptide_random.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..74597e72bf51d7f8f0f6fcacb198dd14d16f7e3f
--- /dev/null
+++ b/modules/seq/alg/tests/testfiles/peptide_random.pdb
@@ -0,0 +1,35 @@
+ATOM      1  N   MET     6     -29.037  -8.783  14.347  1.00  0.00           N
+ATOM      2  CA  MET     6     -28.985  -9.502  13.056  1.00  0.00           C
+ATOM      3  C   MET     6     -27.597  -9.852  12.665  1.00  0.00           C
+ATOM      4  O   MET     6     -26.614  -9.275  13.129  1.00  0.00           O
+ATOM      5  CB  MET     6     -29.575  -8.640  11.938  1.00  0.00           C
+ATOM      6  CG  MET     6     -31.084  -8.470  12.016  1.00  0.00           C
+ATOM      7  SD  MET     6     -31.752  -7.534  10.628  1.00  0.00           S
+ATOM      8  CE  MET     6     -33.497  -7.530  11.030  1.00  0.00           C
+ATOM      9  N   PRO     1     -27.533 -10.838  11.828  1.00  0.00           N
+ATOM     10  CA  PRO     1     -26.273 -11.293  11.337  1.00  0.00           C
+ATOM     11  C   PRO     1     -25.709 -10.233  10.478  1.00  0.00           C
+ATOM     12  O   PRO     1     -24.518 -10.265  10.186  1.00  0.00           O
+ATOM     13  CB  PRO     1     -26.616 -12.565  10.559  1.00  0.00           C
+ATOM     14  CG  PRO     1     -28.043 -12.386  10.161  1.00  0.00           C
+ATOM     15  CD  PRO     1     -28.699 -11.637  11.286  1.00  0.00           C
+ATOM     16  N   THR     7     -26.565  -9.309  10.007  1.00  0.00           N
+ATOM     17  CA  THR     7     -26.102  -8.194   9.247  1.00  0.00           C
+ATOM     18  C   THR     7     -25.296  -7.372  10.186  1.00  0.00           C
+ATOM     19  O   THR     7     -24.295  -6.768   9.810  1.00  0.00           O
+ATOM     20  CB  THR     7     -27.274  -7.369   8.683  1.00  0.00           C
+ATOM     21  OG1 THR     7     -28.080  -6.880   9.762  1.00  0.00           O
+ATOM     22  CG2 THR     7     -28.139  -8.227   7.772  1.00  0.00           C
+ATOM     23  N   ASN     4     -25.736  -7.349  11.452  1.00  0.00           N
+ATOM     24  CA  ASN     4     -25.104  -6.609  12.495  1.00  0.00           C
+ATOM     25  C   ASN     4     -23.742  -7.171  12.684  1.00  0.00           C
+ATOM     26  O   ASN     4     -22.806  -6.454  13.030  1.00  0.00           O
+ATOM     27  CB  ASN     4     -25.901  -6.728  13.795  1.00  0.00           C
+ATOM     28  CG  ASN     4     -27.189  -5.929  13.764  1.00  0.00           C
+ATOM     29  OD1 ASN     4     -27.340  -5.007  12.963  1.00  0.00           O
+ATOM     30  ND2 ASN     4     -28.124  -6.282  14.639  1.00  0.00           N
+ATOM     31  N   ALA     2     -16.677  -4.828  10.806  1.00  0.00           N
+ATOM     32  CA  ALA     2     -15.984  -3.708  10.241  1.00  0.00           C
+ATOM     33  C   ALA     2     -15.498  -2.863  11.363  1.00  0.00           C
+ATOM     34  O   ALA     2     -14.369  -2.378  11.344  1.00  0.00           O
+ATOM     35  CB  ALA     2     -16.917  -2.901   9.352  1.00  0.00           C
\ No newline at end of file