diff --git a/docs/enzymes.rst b/docs/enzymes.rst
index 1951950c67c882826cd11e9450c62f7bc16c5964..1c5c6e8c209e9ffcb16e94445944271b77e649db 100644
--- a/docs/enzymes.rst
+++ b/docs/enzymes.rst
@@ -26,10 +26,12 @@ Available enzymes
 9: :ref:`casp7`     10: :ref:`casp8`    11: :ref:`casp9`
 12: :ref:`casp10`   13: :ref:`chymh`    14: :ref:`chyml`
 15: :ref:`clost`    16: :ref:`cnbr`     17: :ref:`enter`
-18: :ref:`fxa`      19: :ref:`gluc`     20: :ref:`lysc`
-21: :ref:`lysn`     22: :ref:`ntcb`     23: :ref:`peps13`
-24: :ref:`peps2`    25: :ref:`throm`    26: :ref:`thromsg`
-27: :ref:`tryps`
+18: :ref:`fxa`      19: :ref:`form`     20: :ref:`gluc`
+21: :ref:`glue`     22: :ref:`gran`     23: :ref:`hydro`
+24: :ref:`iodo`     25: :ref:`lysc`     26: :ref:`lysn`
+27: :ref:`neut`     28: :ref:`ntcb`     29: :ref:`peps13`
+30: :ref:`peps2`    31: :ref:`prol`     32: :ref:`throm`
+33: :ref:`thromsg`  34: :ref:`tryps`
 ==================  ==================  ==================
 
 .. _arg-c:
@@ -420,6 +422,24 @@ https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Xa
 
 
 
+.. _form:
+
+Formic acid
+...........
+
+Formic acid preferentially cleaves after D (`P1`).
+
+**RPG definition:**
+
+cleaving rule:
+
+* ``(D,)``
+
+More informations:
+https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#HCOOH
+
+
+
 .. _gluc:
 
 Glu-C
@@ -438,6 +458,78 @@ https://france.promega.com/resources/pubhub/using-endoproteinases-asp-n-and-glu-
 
 
 
+.. _glue:
+
+Glutamyl endopeptidase
+......................
+
+Glutamyl endopeptidase preferentially cleaves after E (`P1`).
+
+**RPG definition:**
+
+cleaving rule:
+
+* ``(E,)``
+
+More informations:
+https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Glu
+
+
+
+.. _gran:
+
+Granzyme B
+..........
+
+Granzyme B preferentially cleaves after D (`P1`) preceded by IEP.
+
+**RPG definition:**
+
+cleaving rule:
+
+* ``(I)(E)(P)(D,)``
+
+More informations:
+https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#GranB
+
+
+
+.. _hydro:
+
+Hydroxylamine
+.............
+
+Hydroxylamine (NH2OH) preferentially cleaves after N (`P1`) followed by G in `P1'`.
+
+**RPG definition:**
+
+cleaving rule:
+
+* ``(N,)(G)``
+
+More informations:
+https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Hydro
+
+
+
+.. _iodo:
+
+Iodosobenzoic acid
+..................
+
+Iodosobenzoic acid preferentially cleaves after W (`P1`).
+
+**RPG definition:**
+
+cleaving rule:
+
+* ``(W,)``
+
+More informations:
+https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Iodo
+
+
+
 .. _lysc:
 
 Lys-C
@@ -472,6 +564,23 @@ More informations: https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.h
 
 
 
+.. _neut:
+
+Neutrophil elastase
+...................
+
+Neutrophil elastase preferentially cleaves after A or V (`P1`).
+
+**RPG definition:**
+
+cleaving rule:
+
+* ``(A or V,)``
+
+More informations: https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Elast
+
+
+
 .. _ntcb:
 
 NTCB
@@ -543,6 +652,27 @@ More informations: https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.h
 
 
 
+.. _prol:
+
+Proline-endopeptidase
+.....................
+
+Proline-endopeptidase preferentially cleaves after P (`P1`) preceded by H, K or R in `P2` but will not cleaves if followed by P in `P1'`.
+
+**RPG definition:**
+
+cleaving rule:
+
+* ``(H or K or R)(P,)``
+
+exception rule:
+
+* ``(H or K or R)(P,)(P)``
+
+More informations: https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Pro
+
+
+
 .. _throm:
 
 Thrombin (PeptideCutter)
diff --git a/rpg/enzymes_definition.py b/rpg/enzymes_definition.py
index 190fcc7158e7091a7faed3df53fa0aacc543c370..1b2aacf170c1a796e58c25ab52a21ba46984aff4 100644
--- a/rpg/enzymes_definition.py
+++ b/rpg/enzymes_definition.py
@@ -71,29 +71,29 @@ CPT_ENZ += 1
 
 # Caspase 1
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp1
-# RULES: cut after D if prev1 is H, A or T and prev3 F, W, Y or L.
-# Do not cut if followed by P, E, D, Q, K or R
+# RULES: cleaves after D if prev1 is H, A or T and prev3 F, W, Y or L.
+# Do not cleaves if followed by P, E, D, Q, K or R
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cut after D, preceded by H
-EXECPT_AD = rule.Rule(-1, "A", False, -1) # Never cut after D, preceded by A
-EXECPT_TD = rule.Rule(-1, "T", False, -1) # Never cut after D, preceded by T
-
-EXECPT_HATD__F = rule.Rule(-3, "F", True, -1) # Always cut after D, preceded by H, A or T, preceded by F
-EXECPT_HATD__L = rule.Rule(-3, "L", True, -1) # Always cut after D, preceded by H, A or T, preceded by L
-EXECPT_HATD__W = rule.Rule(-3, "W", True, -1) # Always cut after D, preceded by H, A or T, preceded by W
-EXECPT_HATD__Y = rule.Rule(-3, "Y", True, -1) # Always cut after D, preceded by H, A or T, preceded by Y
-
-EXECPT_HATD__FLWY_P = rule.Rule(1, "P", False, -1) # Never cut after D, preceded by H, A or T, preceded by F, l, W, Y and followed by P
-EXECPT_HATD__FLWY_E = rule.Rule(1, "E", False, -1) # Never cut after D, preceded by H, A or T, preceded by F, l, W, Y and followed by E
-EXECPT_HATD__FLWY_D = rule.Rule(1, "D", False, -1) # Never cut after D, preceded by H, A or T, preceded by F, l, W, Y and followed by D
-EXECPT_HATD__FLWY_Q = rule.Rule(1, "Q", False, -1) # Never cut after D, preceded by H, A or T, preceded by F, l, W, Y and followed by Q
-EXECPT_HATD__FLWY_K = rule.Rule(1, "K", False, -1) # Never cut after D, preceded by H, A or T, preceded by F, l, W, Y and followed by K
-EXECPT_HATD__FLWY_R = rule.Rule(1, "R", False, -1) # Never cut after D, preceded by H, A or T, preceded by F, l, W, Y and followed by R
+EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cleaves after D, preceded by H
+EXECPT_AD = rule.Rule(-1, "A", False, -1) # Never cleaves after D, preceded by A
+EXECPT_TD = rule.Rule(-1, "T", False, -1) # Never cleaves after D, preceded by T
+
+EXECPT_HATD__F = rule.Rule(-3, "F", True, -1) # Always cleaves after D, preceded by H, A or T, preceded by F
+EXECPT_HATD__L = rule.Rule(-3, "L", True, -1) # Always cleaves after D, preceded by H, A or T, preceded by L
+EXECPT_HATD__W = rule.Rule(-3, "W", True, -1) # Always cleaves after D, preceded by H, A or T, preceded by W
+EXECPT_HATD__Y = rule.Rule(-3, "Y", True, -1) # Always cleaves after D, preceded by H, A or T, preceded by Y
+
+EXECPT_HATD__FLWY_P = rule.Rule(1, "P", False, -1) # Never cleaves after D, preceded by H, A or T, preceded by F, l, W, Y and followed by P
+EXECPT_HATD__FLWY_E = rule.Rule(1, "E", False, -1) # Never cleaves after D, preceded by H, A or T, preceded by F, l, W, Y and followed by E
+EXECPT_HATD__FLWY_D = rule.Rule(1, "D", False, -1) # Never cleaves after D, preceded by H, A or T, preceded by F, l, W, Y and followed by D
+EXECPT_HATD__FLWY_Q = rule.Rule(1, "Q", False, -1) # Never cleaves after D, preceded by H, A or T, preceded by F, l, W, Y and followed by Q
+EXECPT_HATD__FLWY_K = rule.Rule(1, "K", False, -1) # Never cleaves after D, preceded by H, A or T, preceded by F, l, W, Y and followed by K
+EXECPT_HATD__FLWY_R = rule.Rule(1, "R", False, -1) # Never cleaves after D, preceded by H, A or T, preceded by F, l, W, Y and followed by R
 
 # Add exception to cutting rules: ...followed by PEDQKR
 EXECPT_HATD__F.rules.append(EXECPT_HATD__FLWY_P)
@@ -160,28 +160,28 @@ CPT_ENZ += 1
 
 # Caspase 2
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp2
-# RULES: cut after DVAD, or DEHD,.
-# Do not cut if followed by P, E, D, Q, K or R
+# RULES: cleaves after DVAD, or DEHD,.
+# Do not cleaves if followed by P, E, D, Q, K or R
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cut after D, preceded by H
-EXECPT_AD = rule.Rule(-1, "A", False, -1) # Never cut after D, preceded by A
+EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cleaves after D, preceded by H
+EXECPT_AD = rule.Rule(-1, "A", False, -1) # Never cleaves after D, preceded by A
 
-EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by H, preceded by E
-EXECPT_VAD = rule.Rule(-2, "V", False, -1) # Never cut after D, preceded by A, preceded by V
+EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by H, preceded by E
+EXECPT_VAD = rule.Rule(-2, "V", False, -1) # Never cleaves after D, preceded by A, preceded by V
 
-EXECPT_DXXD = rule.Rule(-3, "D", True, -1) # Always cut after D, preceded by H (A), preceded by E (V), preceded by D
+EXECPT_DXXD = rule.Rule(-3, "D", True, -1) # Always cleaves after D, preceded by H (A), preceded by E (V), preceded by D
 
-EXECPT_P = rule.Rule(1, "P", False, -1) # Never cut after D followed by P
-EXECPT_E = rule.Rule(1, "E", False, -1) # Never cut after D followed by E
-EXECPT_D = rule.Rule(1, "D", False, -1) # Never cut after D followed by D
-EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cut after D followed by Q
-EXECPT_K = rule.Rule(1, "K", False, -1) # Never cut after D followed by K
-EXECPT_R = rule.Rule(1, "R", False, -1) # Never cut after D followed by R
+EXECPT_P = rule.Rule(1, "P", False, -1) # Never cleaves after D followed by P
+EXECPT_E = rule.Rule(1, "E", False, -1) # Never cleaves after D followed by E
+EXECPT_D = rule.Rule(1, "D", False, -1) # Never cleaves after D followed by D
+EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cleaves after D followed by Q
+EXECPT_K = rule.Rule(1, "K", False, -1) # Never cleaves after D followed by K
+EXECPT_R = rule.Rule(1, "R", False, -1) # Never cleaves after D followed by R
 
 # Add exception to cutting rules: ...followed by PEDQKR
 EXECPT_DXXD.rules.append(EXECPT_P)
@@ -215,28 +215,28 @@ CPT_ENZ += 1
 
 # Caspase 3
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp3
-# RULES: cut after DMQD, or DEVD,.
-# Do not cut if followed by P, E, D, Q, K or R
+# RULES: cleaves after DMQD, or DEVD,.
+# Do not cleaves if followed by P, E, D, Q, K or R
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_VD = rule.Rule(-1, "V", False, -1) # Never cut after D, preceded by V
-EXECPT_QD = rule.Rule(-1, "Q", False, -1) # Never cut after D, preceded by Q
+EXECPT_VD = rule.Rule(-1, "V", False, -1) # Never cleaves after D, preceded by V
+EXECPT_QD = rule.Rule(-1, "Q", False, -1) # Never cleaves after D, preceded by Q
 
-EXECPT_EVD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by V, preceded by E
-EXECPT_MQD = rule.Rule(-2, "M", False, -1) # Never cut after D, preceded by Q, preceded by M
+EXECPT_EVD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by V, preceded by E
+EXECPT_MQD = rule.Rule(-2, "M", False, -1) # Never cleaves after D, preceded by Q, preceded by M
 
-EXECPT_DXXD = rule.Rule(-3, "D", True, -1) # Always cut after D, preceded by H (A), preceded by E (V), preceded by D
+EXECPT_DXXD = rule.Rule(-3, "D", True, -1) # Always cleaves after D, preceded by H (A), preceded by E (V), preceded by D
 
-EXECPT_P = rule.Rule(1, "P", False, -1) # Never cut after D followed by P
-EXECPT_E = rule.Rule(1, "E", False, -1) # Never cut after D followed by E
-EXECPT_D = rule.Rule(1, "D", False, -1) # Never cut after D followed by D
-EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cut after D followed by Q
-EXECPT_K = rule.Rule(1, "K", False, -1) # Never cut after D followed by K
-EXECPT_R = rule.Rule(1, "R", False, -1) # Never cut after D followed by R
+EXECPT_P = rule.Rule(1, "P", False, -1) # Never cleaves after D followed by P
+EXECPT_E = rule.Rule(1, "E", False, -1) # Never cleaves after D followed by E
+EXECPT_D = rule.Rule(1, "D", False, -1) # Never cleaves after D followed by D
+EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cleaves after D followed by Q
+EXECPT_K = rule.Rule(1, "K", False, -1) # Never cleaves after D followed by K
+EXECPT_R = rule.Rule(1, "R", False, -1) # Never cleaves after D followed by R
 
 # Add exception to cutting rules: ...followed by PEDQKR
 EXECPT_DXXD.rules.append(EXECPT_P)
@@ -270,29 +270,29 @@ CPT_ENZ += 1
 
 # Caspase 4
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp4
-# RULES: cut after LEVD, or (W/L)EHD,.
-# Do not cut if followed by P, E, D, Q, K or R
+# RULES: cleaves after LEVD, or (W/L)EHD,.
+# Do not cleaves if followed by P, E, D, Q, K or R
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_VD = rule.Rule(-1, "V", False, -1) # Never cut after D, preceded by V
-EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cut after D, preceded by H
+EXECPT_VD = rule.Rule(-1, "V", False, -1) # Never cleaves after D, preceded by V
+EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cleaves after D, preceded by H
 
-EXECPT_EVD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by V, preceded by E
-EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by H, preceded by E
+EXECPT_EVD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by V, preceded by E
+EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by H, preceded by E
 
-EXECPT_LEVD = rule.Rule(-3, "L", True, -1) # Always cut after D, preceded by V/H, preceded by E, preceded by L
-EXECPT_WEHD = rule.Rule(-3, "W", True, -1) # Always cut after D, preceded by H, preceded by E, preceded by W
+EXECPT_LEVD = rule.Rule(-3, "L", True, -1) # Always cleaves after D, preceded by V/H, preceded by E, preceded by L
+EXECPT_WEHD = rule.Rule(-3, "W", True, -1) # Always cleaves after D, preceded by H, preceded by E, preceded by W
 
-EXECPT_P = rule.Rule(1, "P", False, -1) # Never cut after D followed by P
-EXECPT_E = rule.Rule(1, "E", False, -1) # Never cut after D followed by E
-EXECPT_D = rule.Rule(1, "D", False, -1) # Never cut after D followed by D
-EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cut after D followed by Q
-EXECPT_K = rule.Rule(1, "K", False, -1) # Never cut after D followed by K
-EXECPT_R = rule.Rule(1, "R", False, -1) # Never cut after D followed by R
+EXECPT_P = rule.Rule(1, "P", False, -1) # Never cleaves after D followed by P
+EXECPT_E = rule.Rule(1, "E", False, -1) # Never cleaves after D followed by E
+EXECPT_D = rule.Rule(1, "D", False, -1) # Never cleaves after D followed by D
+EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cleaves after D followed by Q
+EXECPT_K = rule.Rule(1, "K", False, -1) # Never cleaves after D followed by K
+EXECPT_R = rule.Rule(1, "R", False, -1) # Never cleaves after D followed by R
 
 # Add exception to cutting rules: ...followed by PEDQKR
 EXECPT_LEVD.rules.append(EXECPT_P)
@@ -333,19 +333,19 @@ CPT_ENZ += 1
 
 # Caspase 5
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp5
-# RULES: cut after (W/L)EHD,
+# RULES: cleaves after (W/L)EHD,
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cut after D, preceded by H
+EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cleaves after D, preceded by H
 
-EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by H, preceded by E
+EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by H, preceded by E
 
-EXECPT_LEHD = rule.Rule(-3, "L", True, -1) # Always cut after D, preceded by H, preceded by E, preceded by L
-EXECPT_WEHD = rule.Rule(-3, "W", True, -1) # Always cut after D, preceded by H, preceded by E, preceded by W
+EXECPT_LEHD = rule.Rule(-3, "L", True, -1) # Always cleaves after D, preceded by H, preceded by E, preceded by L
+EXECPT_WEHD = rule.Rule(-3, "W", True, -1) # Always cleaves after D, preceded by H, preceded by E, preceded by W
 
 # Add exception to cutting rules: ...preceded by L/W
 EXECPT_EHD.rules.append(EXECPT_LEHD)
@@ -368,29 +368,29 @@ CPT_ENZ += 1
 
 # Caspase 6
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp6
-# RULES: cut after VEID, or VEHD,.
-# Do not cut if followed by P, E, D, Q, K or R
+# RULES: cleaves after VEID, or VEHD,.
+# Do not cleaves if followed by P, E, D, Q, K or R
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_ID = rule.Rule(-1, "I", False, -1) # Never cut after D, preceded by I
-EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cut after D, preceded by H
+EXECPT_ID = rule.Rule(-1, "I", False, -1) # Never cleaves after D, preceded by I
+EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cleaves after D, preceded by H
 
-EXECPT_EID = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by I, preceded by E
-EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by H, preceded by E
+EXECPT_EID = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by I, preceded by E
+EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by H, preceded by E
 
-EXECPT_VEID = rule.Rule(-3, "V", True, -1) # Always cut after D, preceded by I, preceded by E, preceded by V
-EXECPT_VEHD = rule.Rule(-3, "V", True, -1) # Always cut after D, preceded by H, preceded by E, preceded by V
+EXECPT_VEID = rule.Rule(-3, "V", True, -1) # Always cleaves after D, preceded by I, preceded by E, preceded by V
+EXECPT_VEHD = rule.Rule(-3, "V", True, -1) # Always cleaves after D, preceded by H, preceded by E, preceded by V
 
-EXECPT_P = rule.Rule(1, "P", False, -1) # Never cut after D followed by P
-EXECPT_E = rule.Rule(1, "E", False, -1) # Never cut after D followed by E
-EXECPT_D = rule.Rule(1, "D", False, -1) # Never cut after D followed by D
-EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cut after D followed by Q
-EXECPT_K = rule.Rule(1, "K", False, -1) # Never cut after D followed by K
-EXECPT_R = rule.Rule(1, "R", False, -1) # Never cut after D followed by R
+EXECPT_P = rule.Rule(1, "P", False, -1) # Never cleaves after D followed by P
+EXECPT_E = rule.Rule(1, "E", False, -1) # Never cleaves after D followed by E
+EXECPT_D = rule.Rule(1, "D", False, -1) # Never cleaves after D followed by D
+EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cleaves after D followed by Q
+EXECPT_K = rule.Rule(1, "K", False, -1) # Never cleaves after D followed by K
+EXECPT_R = rule.Rule(1, "R", False, -1) # Never cleaves after D followed by R
 
 # Add exception to cutting rules: ...followed by PEDQKR
 EXECPT_VEID.rules.append(EXECPT_P)
@@ -430,26 +430,26 @@ CPT_ENZ += 1
 
 # Caspase 7
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp7
-# RULES: cut after DEVD,.
-# Do not cut if followed by P, E, D, Q, K or R
+# RULES: cleaves after DEVD,.
+# Do not cleaves if followed by P, E, D, Q, K or R
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_VD = rule.Rule(-1, "V", False, -1) # Never cut after D, preceded by V
+EXECPT_VD = rule.Rule(-1, "V", False, -1) # Never cleaves after D, preceded by V
 
-EXECPT_EVD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by V, preceded by E
+EXECPT_EVD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by V, preceded by E
 
-EXECPT_DEVD = rule.Rule(-3, "D", True, -1) # Always cut after D, preceded by V, preceded by E, preceded by D
+EXECPT_DEVD = rule.Rule(-3, "D", True, -1) # Always cleaves after D, preceded by V, preceded by E, preceded by D
 
-EXECPT_P = rule.Rule(1, "P", False, -1) # Never cut after D followed by P
-EXECPT_E = rule.Rule(1, "E", False, -1) # Never cut after D followed by E
-EXECPT_D = rule.Rule(1, "D", False, -1) # Never cut after D followed by D
-EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cut after D followed by Q
-EXECPT_K = rule.Rule(1, "K", False, -1) # Never cut after D followed by K
-EXECPT_R = rule.Rule(1, "R", False, -1) # Never cut after D followed by R
+EXECPT_P = rule.Rule(1, "P", False, -1) # Never cleaves after D followed by P
+EXECPT_E = rule.Rule(1, "E", False, -1) # Never cleaves after D followed by E
+EXECPT_D = rule.Rule(1, "D", False, -1) # Never cleaves after D followed by D
+EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cleaves after D followed by Q
+EXECPT_K = rule.Rule(1, "K", False, -1) # Never cleaves after D followed by K
+EXECPT_R = rule.Rule(1, "R", False, -1) # Never cleaves after D followed by R
 
 # Add exception to cutting rules: ...followed by PEDQKR
 EXECPT_DEVD.rules.append(EXECPT_P)
@@ -479,27 +479,27 @@ CPT_ENZ += 1
 
 # Caspase 8
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp8
-# RULES: cut after (I/L)ETD,
-# Do not cut if followed by P, E, D, Q, K or R
+# RULES: cleaves after (I/L)ETD,
+# Do not cleaves if followed by P, E, D, Q, K or R
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_TD = rule.Rule(-1, "T", False, -1) # Never cut after D, preceded by T
+EXECPT_TD = rule.Rule(-1, "T", False, -1) # Never cleaves after D, preceded by T
 
-EXECPT_ETD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by T, preceded by E
+EXECPT_ETD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by T, preceded by E
 
-EXECPT_IETD = rule.Rule(-3, "I", True, -1) # Always cut after D, preceded by T, preceded by E, preceded by I
-EXECPT_LETD = rule.Rule(-3, "L", True, -1) # Always cut after D, preceded by T, preceded by E, preceded by L
+EXECPT_IETD = rule.Rule(-3, "I", True, -1) # Always cleaves after D, preceded by T, preceded by E, preceded by I
+EXECPT_LETD = rule.Rule(-3, "L", True, -1) # Always cleaves after D, preceded by T, preceded by E, preceded by L
 
-EXECPT_P = rule.Rule(1, "P", False, -1) # Never cut after D followed by P
-EXECPT_E = rule.Rule(1, "E", False, -1) # Never cut after D followed by E
-EXECPT_D = rule.Rule(1, "D", False, -1) # Never cut after D followed by D
-EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cut after D followed by Q
-EXECPT_K = rule.Rule(1, "K", False, -1) # Never cut after D followed by K
-EXECPT_R = rule.Rule(1, "R", False, -1) # Never cut after D followed by R
+EXECPT_P = rule.Rule(1, "P", False, -1) # Never cleaves after D followed by P
+EXECPT_E = rule.Rule(1, "E", False, -1) # Never cleaves after D followed by E
+EXECPT_D = rule.Rule(1, "D", False, -1) # Never cleaves after D followed by D
+EXECPT_Q = rule.Rule(1, "Q", False, -1) # Never cleaves after D followed by Q
+EXECPT_K = rule.Rule(1, "K", False, -1) # Never cleaves after D followed by K
+EXECPT_R = rule.Rule(1, "R", False, -1) # Never cleaves after D followed by R
 
 # Add exception to cutting rules: ...followed by PEDQKR
 EXECPT_IETD.rules.append(EXECPT_P)
@@ -537,18 +537,18 @@ CPT_ENZ += 1
 
 # Caspase 9
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp9
-# RULES: cut after LEHD,
+# RULES: cleaves after LEHD,
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cut after D, preceded by H
+EXECPT_HD = rule.Rule(-1, "H", False, -1) # Never cleaves after D, preceded by H
 
-EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by H, preceded by E
+EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by H, preceded by E
 
-EXECPT_LEHD = rule.Rule(-3, "L", True, -1) # Always cut after D, preceded by H, preceded by E, preceded by L
+EXECPT_LEHD = rule.Rule(-3, "L", True, -1) # Always cleaves after D, preceded by H, preceded by E, preceded by L
 
 # Add exception to cutting rules: ...preceded by L/W
 EXECPT_EHD.rules.append(EXECPT_LEHD)
@@ -570,23 +570,23 @@ CPT_ENZ += 1
 
 # Caspase 10
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Casp10
-# RULES: cut after IEAD,
+# RULES: cleaves after IEAD,
 ENZ = []
 
 # Cutting rule
-AFTER_D = rule.Rule(0, "D", False, 1) # Never cut after D, except...
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
 
 # Exceptions
-EXECPT_AD = rule.Rule(-1, "A", False, -1) # Never cut after D, preceded by A
+EXECPT_AD = rule.Rule(-1, "A", False, -1) # Never cleaves after D, preceded by A
 
-EXECPT_EHD = rule.Rule(-2, "E", False, -1) # Never cut after D, preceded by H, preceded by E
+EXECPT_EAD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by A, preceded by E
 
-EXECPT_IEHD = rule.Rule(-3, "I", True, -1) # Always cut after D, preceded by H, preceded by E, preceded by I
+EXECPT_IEAD = rule.Rule(-3, "I", True, -1) # Always cleaves after D, preceded by A, preceded by E, preceded by I
 
 # Add exception to cutting rules: ...preceded by L/W
-EXECPT_EHD.rules.append(EXECPT_IEHD)
+EXECPT_EAD.rules.append(EXECPT_IEAD)
 
-EXECPT_AD.rules.append(EXECPT_EHD)
+EXECPT_AD.rules.append(EXECPT_EAD)
 
 # Add exception to cutting rules
 AFTER_D.rules.append(EXECPT_AD)
@@ -714,44 +714,44 @@ CPT_ENZ += 1
 # RULES: after K if preceded by D/E D/E D/E D/E (P5 not in expasy)
 ENZ = []
 # Cutting rule
-AFTER_K = rule.Rule(0, "K", False, 1) # Never cut after K, except...
+AFTER_K = rule.Rule(0, "K", False, 1) # Never cleaves after K, except...
 
 # Exceptions
-EXECPT_DK = rule.Rule(-1, "D", False, -1) # Never cut after K, preceded by D
-EXECPT_EK = rule.Rule(-1, "E", False, -1) # Never cut after K, preceded by E
-
-EXECPT_DDK = rule.Rule(-2, "D", False, -1) # Never cut after K, preceded by D, preceded by D
-EXECPT_DEK = rule.Rule(-2, "D", False, -1) # Never cut after K, preceded by E, preceded by D
-EXECPT_EDK = rule.Rule(-2, "E", False, -1) # Never cut after K, preceded by D, preceded by E
-EXECPT_EEK = rule.Rule(-2, "E", False, -1) # Never cut after K, preceded by E, preceded by E
-
-EXECPT_DDDK = rule.Rule(-3, "D", False, -1) # Never cut after K, preceded by D, preceded by D, preceded by D
-EXECPT_DDEK = rule.Rule(-3, "D", False, -1) # Never cut after K, preceded by E, preceded by D, preceded by D
-EXECPT_DEDK = rule.Rule(-3, "D", False, -1) # Never cut after K, preceded by D, preceded by E, preceded by D
-EXECPT_DEEK = rule.Rule(-3, "D", False, -1) # Never cut after K, preceded by E, preceded by E, preceded by D
-EXECPT_EDDK = rule.Rule(-3, "E", False, -1) # Never cut after K, preceded by D, preceded by D, preceded by E
-EXECPT_EDEK = rule.Rule(-3, "E", False, -1) # Never cut after K, preceded by E, preceded by D, preceded by E
-EXECPT_EEDK = rule.Rule(-3, "E", False, -1) # Never cut after K, preceded by D, preceded by E, preceded by E
-EXECPT_EEEK = rule.Rule(-3, "E", False, -1) # Never cut after K, preceded by E, preceded by E, preceded by E
+EXECPT_DK = rule.Rule(-1, "D", False, -1) # Never cleaves after K, preceded by D
+EXECPT_EK = rule.Rule(-1, "E", False, -1) # Never cleaves after K, preceded by E
+
+EXECPT_DDK = rule.Rule(-2, "D", False, -1) # Never cleaves after K, preceded by D, preceded by D
+EXECPT_DEK = rule.Rule(-2, "D", False, -1) # Never cleaves after K, preceded by E, preceded by D
+EXECPT_EDK = rule.Rule(-2, "E", False, -1) # Never cleaves after K, preceded by D, preceded by E
+EXECPT_EEK = rule.Rule(-2, "E", False, -1) # Never cleaves after K, preceded by E, preceded by E
+
+EXECPT_DDDK = rule.Rule(-3, "D", False, -1) # Never cleaves after K, preceded by D, preceded by D, preceded by D
+EXECPT_DDEK = rule.Rule(-3, "D", False, -1) # Never cleaves after K, preceded by E, preceded by D, preceded by D
+EXECPT_DEDK = rule.Rule(-3, "D", False, -1) # Never cleaves after K, preceded by D, preceded by E, preceded by D
+EXECPT_DEEK = rule.Rule(-3, "D", False, -1) # Never cleaves after K, preceded by E, preceded by E, preceded by D
+EXECPT_EDDK = rule.Rule(-3, "E", False, -1) # Never cleaves after K, preceded by D, preceded by D, preceded by E
+EXECPT_EDEK = rule.Rule(-3, "E", False, -1) # Never cleaves after K, preceded by E, preceded by D, preceded by E
+EXECPT_EEDK = rule.Rule(-3, "E", False, -1) # Never cleaves after K, preceded by D, preceded by E, preceded by E
+EXECPT_EEEK = rule.Rule(-3, "E", False, -1) # Never cleaves after K, preceded by E, preceded by E, preceded by E
 
 # Fifth level
-EXECPT_DDDDK = rule.Rule(-4, "D", True, -1) # Always cut after K, preceded by D, preceded by D, preceded by D, preceded by D
-EXECPT_DDDEK = rule.Rule(-4, "D", True, -1) # Always cut after K, preceded by E, preceded by D, preceded by D, preceded by D
-EXECPT_DDEDK = rule.Rule(-4, "D", True, -1) # Always cut after K, preceded by D, preceded by E, preceded by D, preceded by D
-EXECPT_DDEEK = rule.Rule(-4, "D", True, -1) # Always cut after K, preceded by E, preceded by E, preceded by D, preceded by D
-EXECPT_DEDDK = rule.Rule(-4, "D", True, -1) # Always cut after K, preceded by D, preceded by D, preceded by E, preceded by D
-EXECPT_DEDEK = rule.Rule(-4, "D", True, -1) # Always cut after K, preceded by E, preceded by D, preceded by E, preceded by D
-EXECPT_DEEDK = rule.Rule(-4, "D", True, -1) # Always cut after K, preceded by D, preceded by E, preceded by E, preceded by D
-EXECPT_DEEEK = rule.Rule(-4, "D", True, -1) # Always cut after K, preceded by E, preceded by E, preceded by E, preceded by D
-
-EXECPT_EDDDK = rule.Rule(-4, "E", True, -1) # Always cut after K, preceded by D, preceded by D, preceded by D, preceded by E
-EXECPT_EDDEK = rule.Rule(-4, "E", True, -1) # Always cut after K, preceded by E, preceded by D, preceded by D, preceded by E
-EXECPT_EDEDK = rule.Rule(-4, "E", True, -1) # Always cut after K, preceded by D, preceded by E, preceded by D, preceded by E
-EXECPT_EDEEK = rule.Rule(-4, "E", True, -1) # Always cut after K, preceded by E, preceded by E, preceded by D, preceded by E
-EXECPT_EEDDK = rule.Rule(-4, "E", True, -1) # Always cut after K, preceded by D, preceded by D, preceded by E, preceded by E
-EXECPT_EEDEK = rule.Rule(-4, "E", True, -1) # Always cut after K, preceded by E, preceded by D, preceded by E, preceded by E
-EXECPT_EEEDK = rule.Rule(-4, "E", True, -1) # Always cut after K, preceded by D, preceded by E, preceded by E, preceded by E
-EXECPT_EEEEK = rule.Rule(-4, "E", True, -1) # Always cut after K, preceded by E, preceded by E, preceded by E, preceded by E
+EXECPT_DDDDK = rule.Rule(-4, "D", True, -1) # Always cleaves after K, preceded by D, preceded by D, preceded by D, preceded by D
+EXECPT_DDDEK = rule.Rule(-4, "D", True, -1) # Always cleaves after K, preceded by E, preceded by D, preceded by D, preceded by D
+EXECPT_DDEDK = rule.Rule(-4, "D", True, -1) # Always cleaves after K, preceded by D, preceded by E, preceded by D, preceded by D
+EXECPT_DDEEK = rule.Rule(-4, "D", True, -1) # Always cleaves after K, preceded by E, preceded by E, preceded by D, preceded by D
+EXECPT_DEDDK = rule.Rule(-4, "D", True, -1) # Always cleaves after K, preceded by D, preceded by D, preceded by E, preceded by D
+EXECPT_DEDEK = rule.Rule(-4, "D", True, -1) # Always cleaves after K, preceded by E, preceded by D, preceded by E, preceded by D
+EXECPT_DEEDK = rule.Rule(-4, "D", True, -1) # Always cleaves after K, preceded by D, preceded by E, preceded by E, preceded by D
+EXECPT_DEEEK = rule.Rule(-4, "D", True, -1) # Always cleaves after K, preceded by E, preceded by E, preceded by E, preceded by D
+
+EXECPT_EDDDK = rule.Rule(-4, "E", True, -1) # Always cleaves after K, preceded by D, preceded by D, preceded by D, preceded by E
+EXECPT_EDDEK = rule.Rule(-4, "E", True, -1) # Always cleaves after K, preceded by E, preceded by D, preceded by D, preceded by E
+EXECPT_EDEDK = rule.Rule(-4, "E", True, -1) # Always cleaves after K, preceded by D, preceded by E, preceded by D, preceded by E
+EXECPT_EDEEK = rule.Rule(-4, "E", True, -1) # Always cleaves after K, preceded by E, preceded by E, preceded by D, preceded by E
+EXECPT_EEDDK = rule.Rule(-4, "E", True, -1) # Always cleaves after K, preceded by D, preceded by D, preceded by E, preceded by E
+EXECPT_EEDEK = rule.Rule(-4, "E", True, -1) # Always cleaves after K, preceded by E, preceded by D, preceded by E, preceded by E
+EXECPT_EEEDK = rule.Rule(-4, "E", True, -1) # Always cleaves after K, preceded by D, preceded by E, preceded by E, preceded by E
+EXECPT_EEEEK = rule.Rule(-4, "E", True, -1) # Always cleaves after K, preceded by E, preceded by E, preceded by E, preceded by E
 # Add exception to cutting rules: ...preceded by L/W ICI
 EXECPT_DDDK.rules.append(EXECPT_DDDDK)
 EXECPT_DDDK.rules.append(EXECPT_EDDDK)
@@ -809,22 +809,22 @@ CPT_ENZ += 1
 ENZ = []
 
 # Cutting rules
-AFTER_R = rule.Rule(0, "R", False, 1) # Never cut after R, except...
+AFTER_R = rule.Rule(0, "R", False, 1) # Never cleaves after R, except...
 # Exceptions
-EXCEPT_GR = rule.Rule(-1, "G", False, -1) # Never cut before R preceded by G
+EXCEPT_GR = rule.Rule(-1, "G", False, -1) # Never cleaves before R preceded by G
 
-EXCEPT_DGR = rule.Rule(-2, "D", False, -1) # Never cut before R preceded by G, preceded by D
-EXCEPT_EGR = rule.Rule(-2, "E", False, -1) # Never cut before R preceded by G, preceded by E
+EXCEPT_DGR = rule.Rule(-2, "D", False, -1) # Never cleaves before R preceded by G, preceded by D
+EXCEPT_EGR = rule.Rule(-2, "E", False, -1) # Never cleaves before R preceded by G, preceded by E
 
 #A/F/I/L/V/W/G/T in -3
-EXCEPT_AXGR = rule.Rule(-3, "A", True, -1) # Always cut before R preceded by G, preceded by X, preceded by A
-EXCEPT_FXGR = rule.Rule(-3, "F", True, -1) # Always cut before R preceded by G, preceded by X, preceded by F
-EXCEPT_IXGR = rule.Rule(-3, "I", True, -1) # Always cut before R preceded by G, preceded by X, preceded by I
-EXCEPT_LXGR = rule.Rule(-3, "L", True, -1) # Always cut before R preceded by G, preceded by X, preceded by L
-EXCEPT_VXGR = rule.Rule(-3, "V", True, -1) # Always cut before R preceded by G, preceded by X, preceded by V
-EXCEPT_WXGR = rule.Rule(-3, "W", True, -1) # Always cut before R preceded by G, preceded by X, preceded by W
-EXCEPT_GXGR = rule.Rule(-3, "G", True, -1) # Always cut before R preceded by G, preceded by X, preceded by G
-EXCEPT_TXGR = rule.Rule(-3, "T", True, -1) # Always cut before R preceded by G, preceded by X, preceded by T
+EXCEPT_AXGR = rule.Rule(-3, "A", True, -1) # Always cleaves before R preceded by G, preceded by X, preceded by A
+EXCEPT_FXGR = rule.Rule(-3, "F", True, -1) # Always cleaves before R preceded by G, preceded by X, preceded by F
+EXCEPT_IXGR = rule.Rule(-3, "I", True, -1) # Always cleaves before R preceded by G, preceded by X, preceded by I
+EXCEPT_LXGR = rule.Rule(-3, "L", True, -1) # Always cleaves before R preceded by G, preceded by X, preceded by L
+EXCEPT_VXGR = rule.Rule(-3, "V", True, -1) # Always cleaves before R preceded by G, preceded by X, preceded by V
+EXCEPT_WXGR = rule.Rule(-3, "W", True, -1) # Always cleaves before R preceded by G, preceded by X, preceded by W
+EXCEPT_GXGR = rule.Rule(-3, "G", True, -1) # Always cleaves before R preceded by G, preceded by X, preceded by G
+EXCEPT_TXGR = rule.Rule(-3, "T", True, -1) # Always cleaves before R preceded by G, preceded by X, preceded by T
 
 # Add exception to cutting rules
 EXCEPT_DGR.rules.append(EXCEPT_AXGR)
@@ -858,6 +858,18 @@ CPT_ENZ += 1
 
 
 
+# Formic acid
+# https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#HCOOH
+# RULES: after D
+ENZ = []
+ENZ.append(rule.Rule(0, "D", True, 1))
+ENZYME = enzyme.Enzyme(CPT_ENZ, "Formic-acid", ENZ, 0)
+# Add it to available enzymes
+AVAILABLE_ENZYMES.append(ENZYME)
+CPT_ENZ += 1
+
+
+
 # Glu-C Sequencing Grade
 # https://france.promega.com/resources/pubhub/using-endoproteinases-asp-n-and-glu-c-to-improve-protein-characterization/
 # RULES: after D or E
@@ -871,6 +883,86 @@ CPT_ENZ += 1
 
 
 
+# Glutamyl endopeptidase
+# https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Glu
+# RULES: cleave after E
+ENZ = []
+ENZ.append(rule.Rule(0, "E", True, 1))
+ENZYME = enzyme.Enzyme(CPT_ENZ, "Glutamyl-endopeptidase", ENZ, 0)
+# Add it to available enzymes
+AVAILABLE_ENZYMES.append(ENZYME)
+CPT_ENZ += 1
+
+
+
+# Granzyme B
+# https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#GranB
+# RULES: cleaves after IEPD,
+ENZ = []
+
+# Cutting rule
+AFTER_D = rule.Rule(0, "D", False, 1) # Never cleaves after D, except...
+
+# Exceptions
+EXECPT_PD = rule.Rule(-1, "P", False, -1) # Never cleaves after D, preceded by P
+
+EXECPT_EPD = rule.Rule(-2, "E", False, -1) # Never cleaves after D, preceded by P, preceded by E
+
+EXECPT_IEPD = rule.Rule(-3, "I", True, -1) # Always cleaves after D, preceded by P, preceded by E, preceded by I
+
+# Add exception to cutting rules: ...preceded by L/W
+EXECPT_EPD.rules.append(EXECPT_IEPD)
+
+EXECPT_PD.rules.append(EXECPT_EPD)
+
+# Add exception to cutting rules
+AFTER_D.rules.append(EXECPT_PD)
+
+# Add rules to enzyme
+ENZ.append(AFTER_D)
+ENZYME = enzyme.Enzyme(CPT_ENZ, "Granzyme-B", ENZ, 0)
+# Add it to available enzymes
+AVAILABLE_ENZYMES.append(ENZYME)
+CPT_ENZ += 1
+
+
+
+# Hydroxylamine (NH2OH)
+# https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Hydro
+# RULES: cleaves after N (P1) followed by G (P1')
+ENZ = []
+
+# Cutting rule
+AFTER_N = rule.Rule(0, "N", False, 1) # Never cleaves after N, except...
+
+# Exceptions
+EXECPT_NG = rule.Rule(1, "G", True, -1) # Always cleaves after N, followed by G
+
+# Add exception to cutting rules
+AFTER_N.rules.append(EXECPT_NG)
+
+# Add rules to enzyme
+ENZ.append(AFTER_N)
+ENZYME = enzyme.Enzyme(CPT_ENZ, "Hydroxylamine", ENZ, 0)
+# Add it to available enzymes
+AVAILABLE_ENZYMES.append(ENZYME)
+CPT_ENZ += 1
+
+
+
+# Iodosobenzoic acid
+# https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Iodo
+# RULES: cleaves after W (P1)
+ENZ = []
+# Add rules to enzyme
+ENZ.append(rule.Rule(0, "W", True, 1))
+ENZYME = enzyme.Enzyme(CPT_ENZ, "Iodosobenzoic-acid", ENZ, 0)
+# Add it to available enzymes
+AVAILABLE_ENZYMES.append(ENZYME)
+CPT_ENZ += 1
+
+
+
 # LysC
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#LysC
 # Cleaves at Lys in position P1
@@ -897,6 +989,19 @@ CPT_ENZ += 1
 
 
 
+# Neutrophil elastase
+# https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Elast
+# RULES: after A or V (P1)
+ENZ = []
+ENZ.append(rule.Rule(0, "A", True, 1))
+ENZ.append(rule.Rule(0, "V", True, 1))
+ENZYME = enzyme.Enzyme(CPT_ENZ, "Neutrophil-elastase", ENZ, 0)
+# Add it to available enzymes
+AVAILABLE_ENZYMES.append(ENZYME)
+CPT_ENZ += 1
+
+
+
 # NTCB +Ni (2-nitro-5-thiocyanobenzoic acid)
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#NTCB
 # Cleaves at Cys in position P1'
@@ -917,25 +1022,25 @@ CPT_ENZ += 1
 ENZ = []
 
 # Cutting rules
-BEFORE_F = rule.Rule(0, "F", True, 0) # Always cut before F, except...
-BEFORE_L = rule.Rule(0, "L", True, 0) # Always cut before L, except...
+BEFORE_F = rule.Rule(0, "F", True, 0) # Always cleaves before F, except...
+BEFORE_L = rule.Rule(0, "L", True, 0) # Always cleaves before L, except...
 
-AFTER_F = rule.Rule(0, "F", True, 1) # Always cut after F, except...
-AFTER_L = rule.Rule(0, "L", True, 1) # Always cut after L, except...
+AFTER_F = rule.Rule(0, "F", True, 1) # Always cleaves after F, except...
+AFTER_L = rule.Rule(0, "L", True, 1) # Always cleaves after L, except...
 
 # Exceptions
-EXCEPT_FLP = rule.Rule(1, "P", False, -1) # Never cut before F or L followed by P
-EXECPT_RFL = rule.Rule(-1, "R", False, -1) # Never cut before F or L, preceded by R
-EXECPT_P_FL = rule.Rule(-2, "P", False, -1) # Never cut before F or L, preceded by P
-EXECPT_H__FL = rule.Rule(-3, "H", False, -1) # Never cut before F or L, preceded by H
-EXECPT_K__FL = rule.Rule(-3, "K", False, -1) # Never cut before F or L, preceded by K
-EXECPT_R__FL = rule.Rule(-3, "R", False, -1) # Never cut before F or L, preceded by R
-
-EXCEPT_FL_P = rule.Rule(2, "P", False, -1) # Never cut after F or L followed by P
-EXECPT_PFL = rule.Rule(-1, "P", False, -1) # Never cut after F or L, preceded by P
-EXECPT_H_FL = rule.Rule(-2, "H", False, -1) # Never cut after F or L, preceded by H
-EXECPT_K_FL = rule.Rule(-2, "K", False, -1) # Never cut after F or L, preceded by K
-EXECPT_R_FL = rule.Rule(-2, "R", False, -1) # Never cut after F or L, preceded by R
+EXCEPT_FLP = rule.Rule(1, "P", False, -1) # Never cleaves before F or L followed by P
+EXECPT_RFL = rule.Rule(-1, "R", False, -1) # Never cleaves before F or L, preceded by R
+EXECPT_P_FL = rule.Rule(-2, "P", False, -1) # Never cleaves before F or L, preceded by P
+EXECPT_H__FL = rule.Rule(-3, "H", False, -1) # Never cleaves before F or L, preceded by H
+EXECPT_K__FL = rule.Rule(-3, "K", False, -1) # Never cleaves before F or L, preceded by K
+EXECPT_R__FL = rule.Rule(-3, "R", False, -1) # Never cleaves before F or L, preceded by R
+
+EXCEPT_FL_P = rule.Rule(2, "P", False, -1) # Never cleaves after F or L followed by P
+EXECPT_PFL = rule.Rule(-1, "P", False, -1) # Never cleaves after F or L, preceded by P
+EXECPT_H_FL = rule.Rule(-2, "H", False, -1) # Never cleaves after F or L, preceded by H
+EXECPT_K_FL = rule.Rule(-2, "K", False, -1) # Never cleaves after F or L, preceded by K
+EXECPT_R_FL = rule.Rule(-2, "R", False, -1) # Never cleaves after F or L, preceded by R
 
 # Add exception to cutting rules
 BEFORE_F.rules.append(EXCEPT_FLP)
@@ -984,29 +1089,29 @@ CPT_ENZ += 1
 ENZ = []
 
 # Cutting rules
-BEFORE_F = rule.Rule(0, "F", True, 0) # Always cut before F, except...
-BEFORE_L = rule.Rule(0, "L", True, 0) # Always cut before L, except...
-BEFORE_W = rule.Rule(0, "W", True, 0) # Always cut before W, except...
-BEFORE_Y = rule.Rule(0, "Y", True, 0) # Always cut before Y, except...
+BEFORE_F = rule.Rule(0, "F", True, 0) # Always cleaves before F, except...
+BEFORE_L = rule.Rule(0, "L", True, 0) # Always cleaves before L, except...
+BEFORE_W = rule.Rule(0, "W", True, 0) # Always cleaves before W, except...
+BEFORE_Y = rule.Rule(0, "Y", True, 0) # Always cleaves before Y, except...
 
-AFTER_F = rule.Rule(0, "F", True, 1) # Always cut after F, except...
-AFTER_L = rule.Rule(0, "L", True, 1) # Always cut after L, except...
-AFTER_W = rule.Rule(0, "W", True, 1) # Always cut after W, except...
-AFTER_Y = rule.Rule(0, "Y", True, 1) # Always cut after Y, except...
+AFTER_F = rule.Rule(0, "F", True, 1) # Always cleaves after F, except...
+AFTER_L = rule.Rule(0, "L", True, 1) # Always cleaves after L, except...
+AFTER_W = rule.Rule(0, "W", True, 1) # Always cleaves after W, except...
+AFTER_Y = rule.Rule(0, "Y", True, 1) # Always cleaves after Y, except...
 
 # Exceptions
-EXCEPT_FLWYP = rule.Rule(1, "P", False, -1) # Never cut before F, L, W or Y followed by P
-EXECPT_RFLWY = rule.Rule(-1, "R", False, -1) # Never cut before F, L, W or Y, preceded by R
-EXECPT_P_FLWY = rule.Rule(-2, "P", False, -1) # Never cut before F, L, W or Y, preceded by P
-EXECPT_H__FLWY = rule.Rule(-3, "H", False, -1) # Never cut before F, L, W or Y, preceded by H
-EXECPT_K__FLWY = rule.Rule(-3, "K", False, -1) # Never cut before F, L, W or Y, preceded by K
-EXECPT_R__FLWY = rule.Rule(-3, "R", False, -1) # Never cut before F, L, W or Y, preceded by R
-
-EXCEPT_FLWY_P = rule.Rule(2, "P", False, -1) # Never cut after F, L, W or Y followed by P
-EXECPT_PFLWY = rule.Rule(-1, "P", False, -1) # Never cut after F, L, W or Y, preceded by P
-EXECPT_H_FLWY = rule.Rule(-2, "H", False, -1) # Never cut after F, L, W or Y, preceded by H
-EXECPT_K_FLWY = rule.Rule(-2, "K", False, -1) # Never cut after F, L, W or Y, preceded by K
-EXECPT_R_FLWY = rule.Rule(-2, "R", False, -1) # Never cut after F, L, W or Y, preceded by R
+EXCEPT_FLWYP = rule.Rule(1, "P", False, -1) # Never cleaves before F, L, W or Y followed by P
+EXECPT_RFLWY = rule.Rule(-1, "R", False, -1) # Never cleaves before F, L, W or Y, preceded by R
+EXECPT_P_FLWY = rule.Rule(-2, "P", False, -1) # Never cleaves before F, L, W or Y, preceded by P
+EXECPT_H__FLWY = rule.Rule(-3, "H", False, -1) # Never cleaves before F, L, W or Y, preceded by H
+EXECPT_K__FLWY = rule.Rule(-3, "K", False, -1) # Never cleaves before F, L, W or Y, preceded by K
+EXECPT_R__FLWY = rule.Rule(-3, "R", False, -1) # Never cleaves before F, L, W or Y, preceded by R
+
+EXCEPT_FLWY_P = rule.Rule(2, "P", False, -1) # Never cleaves after F, L, W or Y followed by P
+EXECPT_PFLWY = rule.Rule(-1, "P", False, -1) # Never cleaves after F, L, W or Y, preceded by P
+EXECPT_H_FLWY = rule.Rule(-2, "H", False, -1) # Never cleaves after F, L, W or Y, preceded by H
+EXECPT_K_FLWY = rule.Rule(-2, "K", False, -1) # Never cleaves after F, L, W or Y, preceded by K
+EXECPT_R_FLWY = rule.Rule(-2, "R", False, -1) # Never cleaves after F, L, W or Y, preceded by R
 
 # Add exception to cutting rules
 BEFORE_F.rules.append(EXCEPT_FLWYP)
@@ -1078,6 +1183,76 @@ CPT_ENZ += 1
 
 
 
+# Proline-endopeptidase
+# https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Pro
+# RULES: after P (P1) if preceded by H,K or R in P2 and not followed by another P in P1'
+ENZ = []
+
+# Cutting rules
+AFTER_P = rule.Rule(0, "P", False, 1) # Never cleaves after P, except...
+
+# Exceptions
+EXCEPT_HP = rule.Rule(-1, "H", True, -1) # Always cleaves after P preceded by H
+EXCEPT_KP = rule.Rule(-1, "K", True, -1) # Always cleaves after P preceded by K
+EXCEPT_RP = rule.Rule(-1, "R", True, -1) # Always cleaves after P preceded by R
+
+EXCEPT_PP = rule.Rule(1, "P", False, -1) # Never cleaves after P followed by P
+
+# Add exception to cutting rules
+EXCEPT_HP.rules.append(EXCEPT_PP)
+EXCEPT_KP.rules.append(EXCEPT_PP)
+EXCEPT_RP.rules.append(EXCEPT_PP)
+
+AFTER_P.rules.append(EXCEPT_HP)
+AFTER_P.rules.append(EXCEPT_KP)
+AFTER_P.rules.append(EXCEPT_RP)
+
+# Add rules to enzyme
+ENZ.append(AFTER_P)
+
+ENZYME = enzyme.Enzyme(CPT_ENZ, "Proline-endopeptidase", ENZ, 0)
+# Add it to available enzymes
+AVAILABLE_ENZYMES.append(ENZYME)
+CPT_ENZ += 1
+
+
+'''
+# Proteinase K ICI
+# https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#ProtK
+# Proteinase K cleaves peptide bonds adjacent to the carboxylic group of aliphatic and aromatic amino acids
+# RULES: after F W Y H G A V L I (wiki)     F W Y T E A V L I (peptidcutter)
+ENZ = []
+
+# Cutting rules
+AFTER_P = rule.Rule(0, "P", False, 1) # Never cleaves after P, except...
+
+# Exceptions
+EXCEPT_HP = rule.Rule(-1, "H", True, -1) # Always cleaves after P preceded by H
+EXCEPT_KP = rule.Rule(-1, "K", True, -1) # Always cleaves after P preceded by K
+EXCEPT_RP = rule.Rule(-1, "R", True, -1) # Always cleaves after P preceded by R
+
+EXCEPT_PP = rule.Rule(1, "P", False, -1) # Never cleaves after P followed by P
+
+# Add exception to cutting rules
+EXCEPT_HP.rules.append(EXCEPT_PP)
+EXCEPT_KP.rules.append(EXCEPT_PP)
+EXCEPT_RP.rules.append(EXCEPT_PP)
+
+AFTER_P.rules.append(EXCEPT_HP)
+AFTER_P.rules.append(EXCEPT_KP)
+AFTER_P.rules.append(EXCEPT_RP)
+
+# Add rules to enzyme
+ENZ.append(AFTER_P)
+
+ENZYME = enzyme.Enzyme(CPT_ENZ, "Proline-endopeptidase", ENZ, 0)
+# Add it to available enzymes
+AVAILABLE_ENZYMES.append(ENZYME)
+CPT_ENZ += 1
+print(ENZYME)
+'''
+
+
 # Thrombin as defined in PeptideCutter
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Throm
 # Good to look: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3288055/
@@ -1087,40 +1262,40 @@ ENZ = []
 
 # SIMPLE CASE
 # Cutting rules
-AFTER_R = rule.Rule(0, "R", False, 1) # Never cut after R, except...
+AFTER_R = rule.Rule(0, "R", False, 1) # Never cleaves after R, except...
 # Exceptions
-EXCEPT_GR = rule.Rule(-1, "G", False, -1) # Never cut before R preceded by G
-EXCEPT_GRG = rule.Rule(1, "G", True, -1) # Always cut before R preceded by G and followed by G
+EXCEPT_GR = rule.Rule(-1, "G", False, -1) # Never cleaves before R preceded by G
+EXCEPT_GRG = rule.Rule(1, "G", True, -1) # Always cleaves before R preceded by G and followed by G
 # Add exception to cutting rules
 EXCEPT_GR.rules.append(EXCEPT_GRG)
 AFTER_R.rules.append(EXCEPT_GR)
 
 # MUCH COMPLEXE CASE
-EXCEPT_PR = rule.Rule(-1, "P", False, -1) # Never cut before R preceded by P
+EXCEPT_PR = rule.Rule(-1, "P", False, -1) # Never cleaves before R preceded by P
 #A/F/I/L/V/W/G/T in -2
-EXCEPT_APR = rule.Rule(-2, "A", False, -1) # Never cut before R preceded by P, preceded by A
-EXCEPT_FPR = rule.Rule(-2, "F", False, -1) # Never cut before R preceded by P, preceded by F
-EXCEPT_IPR = rule.Rule(-2, "I", False, -1) # Never cut before R preceded by P, preceded by I
-EXCEPT_LPR = rule.Rule(-2, "L", False, -1) # Never cut before R preceded by P, preceded by L
-EXCEPT_VPR = rule.Rule(-2, "V", False, -1) # Never cut before R preceded by P, preceded by V
-EXCEPT_WPR = rule.Rule(-2, "W", False, -1) # Never cut before R preceded by P, preceded by W
-EXCEPT_GPR = rule.Rule(-2, "G", False, -1) # Never cut before R preceded by P, preceded by G
-EXCEPT_TPR = rule.Rule(-2, "T", False, -1) # Never cut before R preceded by P, preceded by T
+EXCEPT_APR = rule.Rule(-2, "A", False, -1) # Never cleaves before R preceded by P, preceded by A
+EXCEPT_FPR = rule.Rule(-2, "F", False, -1) # Never cleaves before R preceded by P, preceded by F
+EXCEPT_IPR = rule.Rule(-2, "I", False, -1) # Never cleaves before R preceded by P, preceded by I
+EXCEPT_LPR = rule.Rule(-2, "L", False, -1) # Never cleaves before R preceded by P, preceded by L
+EXCEPT_VPR = rule.Rule(-2, "V", False, -1) # Never cleaves before R preceded by P, preceded by V
+EXCEPT_WPR = rule.Rule(-2, "W", False, -1) # Never cleaves before R preceded by P, preceded by W
+EXCEPT_GPR = rule.Rule(-2, "G", False, -1) # Never cleaves before R preceded by P, preceded by G
+EXCEPT_TPR = rule.Rule(-2, "T", False, -1) # Never cleaves before R preceded by P, preceded by T
 #A/F/I/L/V/W/G/T in -3
-EXCEPT_AXPR = rule.Rule(-3, "A", True, -1) # Always cut before R preceded by P, preceded by X, preceded by A
-EXCEPT_FXPR = rule.Rule(-3, "F", True, -1) # Always cut before R preceded by P, preceded by X, preceded by F
-EXCEPT_IXPR = rule.Rule(-3, "I", True, -1) # Always cut before R preceded by P, preceded by X, preceded by I
-EXCEPT_LXPR = rule.Rule(-3, "L", True, -1) # Always cut before R preceded by P, preceded by X, preceded by L
-EXCEPT_VXPR = rule.Rule(-3, "V", True, -1) # Always cut before R preceded by P, preceded by X, preceded by V
-EXCEPT_WXPR = rule.Rule(-3, "W", True, -1) # Always cut before R preceded by P, preceded by X, preceded by W
-EXCEPT_GXPR = rule.Rule(-3, "G", True, -1) # Always cut before R preceded by P, preceded by X, preceded by G
-EXCEPT_TXPR = rule.Rule(-3, "T", True, -1) # Always cut before R preceded by P, preceded by X, preceded by T
+EXCEPT_AXPR = rule.Rule(-3, "A", True, -1) # Always cleaves before R preceded by P, preceded by X, preceded by A
+EXCEPT_FXPR = rule.Rule(-3, "F", True, -1) # Always cleaves before R preceded by P, preceded by X, preceded by F
+EXCEPT_IXPR = rule.Rule(-3, "I", True, -1) # Always cleaves before R preceded by P, preceded by X, preceded by I
+EXCEPT_LXPR = rule.Rule(-3, "L", True, -1) # Always cleaves before R preceded by P, preceded by X, preceded by L
+EXCEPT_VXPR = rule.Rule(-3, "V", True, -1) # Always cleaves before R preceded by P, preceded by X, preceded by V
+EXCEPT_WXPR = rule.Rule(-3, "W", True, -1) # Always cleaves before R preceded by P, preceded by X, preceded by W
+EXCEPT_GXPR = rule.Rule(-3, "G", True, -1) # Always cleaves before R preceded by P, preceded by X, preceded by G
+EXCEPT_TXPR = rule.Rule(-3, "T", True, -1) # Always cleaves before R preceded by P, preceded by X, preceded by T
 # non acidic in P1
-EXCEPT_nD = rule.Rule(1, "D", False, -1) # Never cut before R preceded by P, preceded by X, preceded by X, followed by D
-EXCEPT_nE = rule.Rule(1, "E", False, -1) # Never cut before R preceded by P, preceded by X, preceded by X, followed by E
+EXCEPT_nD = rule.Rule(1, "D", False, -1) # Never cleaves before R preceded by P, preceded by X, preceded by X, followed by D
+EXCEPT_nE = rule.Rule(1, "E", False, -1) # Never cleaves before R preceded by P, preceded by X, preceded by X, followed by E
 # non acidic in P2
-EXCEPT_nXD = rule.Rule(2, "D", False, -1) # Never cut before R preceded by P, preceded by X, preceded by X, followed by X, followed by D
-EXCEPT_nXE = rule.Rule(2, "E", False, -1) # Never cut before R preceded by P, preceded by X, preceded by X, followed by X, followed by E
+EXCEPT_nXD = rule.Rule(2, "D", False, -1) # Never cleaves before R preceded by P, preceded by X, preceded by X, followed by X, followed by D
+EXCEPT_nXE = rule.Rule(2, "E", False, -1) # Never cleaves before R preceded by P, preceded by X, preceded by X, followed by X, followed by E
 
 # Adding rules and exceptions
 EXCEPT_AXPR.rules.append(EXCEPT_nD)
@@ -1257,13 +1432,13 @@ CPT_ENZ += 1
 ENZ = []
 
 # Cutting rules
-AFTER_R = rule.Rule(0, "R", False, 1) # Never cut after R, except...
+AFTER_R = rule.Rule(0, "R", False, 1) # Never cleaves after R, except...
 # Exceptions
-EXCEPT_PR = rule.Rule(-1, "P", False, -1) # Never cut before R preceded by P
-EXCEPT_VPR = rule.Rule(-2, "V", False, -1) # Never cut before R preceded by P, preceded by V
-EXCEPT_LVPR = rule.Rule(-3, "L", False, -1) # Never cut before R preceded by P, preceded by V, preceded by L
-EXCEPT_LVPRG = rule.Rule(1, "G", False, -1) # Never cut before R preceded by P, preceded by V, preceded by L, followed by G
-EXCEPT_LVPRGS = rule.Rule(2, "S", True, -1) # Always cut before R preceded by P, preceded by V, preceded by L, followed by G followed by S
+EXCEPT_PR = rule.Rule(-1, "P", False, -1) # Never cleaves before R preceded by P
+EXCEPT_VPR = rule.Rule(-2, "V", False, -1) # Never cleaves before R preceded by P, preceded by V
+EXCEPT_LVPR = rule.Rule(-3, "L", False, -1) # Never cleaves before R preceded by P, preceded by V, preceded by L
+EXCEPT_LVPRG = rule.Rule(1, "G", False, -1) # Never cleaves before R preceded by P, preceded by V, preceded by L, followed by G
+EXCEPT_LVPRGS = rule.Rule(2, "S", True, -1) # Always cleaves before R preceded by P, preceded by V, preceded by L, followed by G followed by S
 
 # Add exception to cutting rules
 EXCEPT_LVPRG.rules.append(EXCEPT_LVPRGS)
@@ -1284,36 +1459,36 @@ CPT_ENZ += 1
 # https://web.expasy.org/peptide_cutter/peptidecutter_enzymes.html#Tryps
 # RULES: after K except if next aa is P. This rule doesn't apply if W is before K
 # RULES: after R except if next aa is P. This rule doesn't apply if M is before R
-# RULES: don't cut CKD, DKD, CKH, CKY, CRK, RRH nor RRR
-# Other way to see it: cut after K|R except if P after, but cut WKP and MRP. Don't cut CKD, DKD, CKH, CKY, CRK, RRH nor RRR
+# RULES: don't cleaves CKD, DKD, CKH, CKY, CRK, RRH nor RRR
+# Other way to see it: cleaves after K|R except if P after, but cleaves WKP and MRP. Don't cleaves CKD, DKD, CKH, CKY, CRK, RRH nor RRR
 ENZ = []
 
 # Cutting rules
-AFTER_K = rule.Rule(0, "K", True, 1) # Always cut after K, except...
-AFTER_R = rule.Rule(0, "R", True, 1) # Always cut after R, except...
+AFTER_K = rule.Rule(0, "K", True, 1) # Always cleaves after K, except...
+AFTER_R = rule.Rule(0, "R", True, 1) # Always cleaves after R, except...
 
 # Exceptions
-EXCEPT_KP = rule.Rule(1, "P", False, -1) # Never cut after K followed by P, except...
-EXCEPT_KD = rule.Rule(1, "D", True, -1) # Always cut after K followed by D, except...
-EXCEPT_KH = rule.Rule(1, "H", True, -1) # Always cut after K followed by H, except...
-EXCEPT_KY = rule.Rule(1, "Y", True, -1) # Always cut after K followed by Y, except...
+EXCEPT_KP = rule.Rule(1, "P", False, -1) # Never cleaves after K followed by P, except...
+EXCEPT_KD = rule.Rule(1, "D", True, -1) # Always cleaves after K followed by D, except...
+EXCEPT_KH = rule.Rule(1, "H", True, -1) # Always cleaves after K followed by H, except...
+EXCEPT_KY = rule.Rule(1, "Y", True, -1) # Always cleaves after K followed by Y, except...
 
-EXCEPT_RP = rule.Rule(1, "P", False, -1) # Never cut after R followed by P, except...
-EXCEPT_RK = rule.Rule(1, "K", True, -1) # Always cut after R followed by K, except...
-EXCEPT_RH = rule.Rule(1, "H", True, -1) # Always cut after R followed by H, except...
-EXCEPT_RR = rule.Rule(1, "R", True, -1) # Always cut after R followed by R, except...
+EXCEPT_RP = rule.Rule(1, "P", False, -1) # Never cleaves after R followed by P, except...
+EXCEPT_RK = rule.Rule(1, "K", True, -1) # Always cleaves after R followed by K, except...
+EXCEPT_RH = rule.Rule(1, "H", True, -1) # Always cleaves after R followed by H, except...
+EXCEPT_RR = rule.Rule(1, "R", True, -1) # Always cleaves after R followed by R, except...
 
 # Counter-exceptions
-UNEXCEPT_WKP = rule.Rule(-1, "W", True, -1) # Always cut after K followed by P and preceded by W
-UNEXCEPT_CKD = rule.Rule(-1, "C", False, -1) # Never cut after K followed by D and preceded by C
-UNEXCEPT_DKD = rule.Rule(-1, "D", False, -1) # Never cut after K followed by D and preceded by D
-UNEXCEPT_CKH = rule.Rule(-1, "C", False, -1) # Never cut after K followed by H and preceded by C
-UNEXCEPT_CKY = rule.Rule(-1, "C", False, -1) # Never cut after K followed by Y and preceded by C
-
-UNEXCEPT_MRP = rule.Rule(-1, "M", True, -1) # Always cut after R followed by P and preceded by M
-UNEXCEPT_CRK = rule.Rule(-1, "C", False, -1) # Never cut after R followed by K and preceded by C
-UNEXCEPT_RRH = rule.Rule(-1, "R", False, -1) # Never cut after R followed by H and preceded by R
-UNEXCEPT_RRR = rule.Rule(-1, "R", False, -1) # Never cut after R followed by R and preceded by R
+UNEXCEPT_WKP = rule.Rule(-1, "W", True, -1) # Always cleaves after K followed by P and preceded by W
+UNEXCEPT_CKD = rule.Rule(-1, "C", False, -1) # Never cleaves after K followed by D and preceded by C
+UNEXCEPT_DKD = rule.Rule(-1, "D", False, -1) # Never cleaves after K followed by D and preceded by D
+UNEXCEPT_CKH = rule.Rule(-1, "C", False, -1) # Never cleaves after K followed by H and preceded by C
+UNEXCEPT_CKY = rule.Rule(-1, "C", False, -1) # Never cleaves after K followed by Y and preceded by C
+
+UNEXCEPT_MRP = rule.Rule(-1, "M", True, -1) # Always cleaves after R followed by P and preceded by M
+UNEXCEPT_CRK = rule.Rule(-1, "C", False, -1) # Never cleaves after R followed by K and preceded by C
+UNEXCEPT_RRH = rule.Rule(-1, "R", False, -1) # Never cleaves after R followed by H and preceded by R
+UNEXCEPT_RRR = rule.Rule(-1, "R", False, -1) # Never cleaves after R followed by R and preceded by R
 
 # Add counter-exceptions to exceptions
 EXCEPT_KP.rules.append(UNEXCEPT_WKP)
diff --git a/tests/test_RapidPeptidesGenerator.py b/tests/test_RapidPeptidesGenerator.py
index fe3696d951903177b2bbe22a296aa41c089401bf..1cbfd0d8ea50e2b843f571004560ea560e165775 100644
--- a/tests/test_RapidPeptidesGenerator.py
+++ b/tests/test_RapidPeptidesGenerator.py
@@ -48,35 +48,28 @@ def test_list_enzyme(capsys):
     """
     RapidPeptidesGenerator.list_enzyme()
     out, _ = capsys.readouterr()
-    assert out == "0: Arg-C\n1: Asp-N\n2: BNPS-Skatole\n3: Caspase-1\n4: Casp"\
-                  "ase-2\n5: Caspase-3\n6: Caspase-4\n7: Caspase-5\n8: Caspas"\
-                  "e-6\n9: Caspase-7\n10: Caspase-8\n11: Caspase-9\n12: Caspa"\
-                  "se-10\n13: Chymotrypsin-high\n14: Chymotrypsin-low\n15: Cl"\
-                  "ostripain\n16: CNBr\n17: Enterokinase\n18: Factor-Xa\n19: "\
-                  "Glu-C\n20: Lys-C\n21: Lys-N\n22: NTCB\n23: Pepsin-pH1.3\n2"\
-                  "4: Pepsin-pH>=2\n25: Thrombin\n26: Thrombin-Sequencing-Gra"\
-                  "de\n27: Trypsin\n"
+    assert out == "0: Arg-C\n1: Asp-N\n2: BNPS-Skatole\n3: Caspase-1\n4: Caspase-2\n5: Caspase-3\n6: Caspase-4\n7: Caspase-5\n8: Caspase-6\n9: Caspase-7\n10: Caspase-8\n11: Caspase-9\n12: Caspase-10\n13: Chymotrypsin-high\n14: Chymotrypsin-low\n15: Clostripain\n16: CNBr\n17: Enterokinase\n18: Factor-Xa\n19: Formic-acid\n20: Glu-C\n21: Glutamyl-endopeptidase\n22: Granzyme-B\n23: Hydroxylamine\n24: Iodosobenzoic-acid\n25: Lys-C\n26: Lys-N\n27: Neutrophil-elastase\n28: NTCB\n29: Pepsin-pH1.3\n30: Pepsin-pH>=2\n31: Proline-endopeptidase\n32: Thrombin\n33: Thrombin-Sequencing-Grade\n34: Trypsin\n"
 
 def test_create_enzymes_to_use(capsys):
     """Test function 'create_enzymes_to_use(enzymes, miscleavage)'"""
-    enzymes = [19, 22, 21]
+    enzymes = [20, 28, 26]
     miscleavage = [1.1, 20]
     res = RapidPeptidesGenerator.create_enzymes_to_use(enzymes, miscleavage)
-    assert res.__repr__() == "[Id: 19\nName: Glu-C\nRatio Miss Cleaveage: 1.1"\
+    assert res.__repr__() == "[Id: 20\nName: Glu-C\nRatio Miss Cleaveage: 1.1"\
                            "0%\nRules: [index=0\nletter=D\ncut=True\npos=1\n,"\
-                           " index=0\nletter=E\ncut=True\npos=1\n]\n, Id: 22"\
+                           " index=0\nletter=E\ncut=True\npos=1\n]\n, Id: 28"\
                            "\nName: NTCB\nRatio Miss Cleaveage: 20.00%\nRules"\
                            ": [index=0\nletter=C\ncut=True\npos=0\n]\n, Id: "\
-                           "21\nName: Lys-N\nRatio Miss Cleaveage: 0.00%\nRul"\
+                           "26\nName: Lys-N\nRatio Miss Cleaveage: 0.00%\nRul"\
                            "es: [index=0\nletter=K\ncut=True\npos=0\n]\n]"
-    enzymes = [19, 22]
+    enzymes = [20, 28]
     miscleavage = [1.1, 20, 40]
     res = RapidPeptidesGenerator.create_enzymes_to_use(enzymes, miscleavage)
     _, err = capsys.readouterr()
     assert err == "Warning: Too much miscleavage values. Last values will "\
                   "be ignored.\n"
-    assert res.__repr__() == "[Id: 19\nName: Glu-C\nRatio Miss Cleaveage: 1.1"\
+    assert res.__repr__() == "[Id: 20\nName: Glu-C\nRatio Miss Cleaveage: 1.1"\
                            "0%\nRules: [index=0\nletter=D\ncut=True\npos=1\n,"\
-                           " index=0\nletter=E\ncut=True\npos=1\n]\n, Id: 22"\
+                           " index=0\nletter=E\ncut=True\npos=1\n]\n, Id: 28"\
                            "\nName: NTCB\nRatio Miss Cleaveage: 20.00%\nRules"\
                            ": [index=0\nletter=C\ncut=True\npos=0\n]\n]"