diff --git a/modules/seq/alg/pymod/mat.py b/modules/seq/alg/pymod/mat.py
index f79bf8326891d5aa9bab92724a5cf781c97cde0a..57fa10c17633f9b3fe629adcab0e346accc9c980 100644
--- a/modules/seq/alg/pymod/mat.py
+++ b/modules/seq/alg/pymod/mat.py
@@ -9,5 +9,6 @@ BLOSUM45 = _InitMatrix(SubstWeightMatrix.Preset.BLOSUM45)
 BLOSUM62 = _InitMatrix(SubstWeightMatrix.Preset.BLOSUM62)
 BLOSUM80 = _InitMatrix(SubstWeightMatrix.Preset.BLOSUM80)
 BLOSUM100 = _InitMatrix(SubstWeightMatrix.Preset.BLOSUM100)
+IDENTITY = _InitMatrix(SubstWeightMatrix.Preset.IDENTITY)
 
-__all__=['BLOSUM45','BLOSUM62','BLOSUM80','BLOSUM100']
+__all__=['BLOSUM45','BLOSUM62','BLOSUM80','BLOSUM100', 'IDENTITY']
diff --git a/modules/seq/alg/pymod/wrap_seq_alg.cc b/modules/seq/alg/pymod/wrap_seq_alg.cc
index ebb3adb979d284056d68a6e3c3959ac6c9f4eb97..d0577fa5c7685f276ed5d046e37ab0d047854432 100644
--- a/modules/seq/alg/pymod/wrap_seq_alg.cc
+++ b/modules/seq/alg/pymod/wrap_seq_alg.cc
@@ -222,6 +222,7 @@ void export_contact_prediction()
     .value("BLOSUM62", SubstWeightMatrix::BLOSUM62)
     .value("BLOSUM80", SubstWeightMatrix::BLOSUM80)
     .value("BLOSUM100", SubstWeightMatrix::BLOSUM100)
+    .value("IDENTITY", SubstWeightMatrix::IDENTITY)
   ;
 }
 
diff --git a/modules/seq/alg/src/subst_weight_matrix.cc b/modules/seq/alg/src/subst_weight_matrix.cc
index f382e4f8edeb423938d6b3b4a0f9c6dcef629efe..454dbeddb9fa0c5204c37edf791cfd6d8b31b2fd 100644
--- a/modules/seq/alg/src/subst_weight_matrix.cc
+++ b/modules/seq/alg/src/subst_weight_matrix.cc
@@ -140,6 +140,14 @@ void FillData(ost::seq::alg::SubstWeightMatrix* subst, short (&data)[23][23]){
   }
 }
 
+void FillIdentity(ost::seq::alg::SubstWeightMatrix* subst) {
+  char chars[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
+                    'P','Q','R','S','T','U','V','W','X','Y','Z'};
+  for(uint i = 0; i < 26; ++i) {
+    subst->SetWeight(chars[i], chars[i], 1.0);
+  }
+}
+
 }
 
 namespace ost { namespace seq { namespace alg {
@@ -167,6 +175,10 @@ void SubstWeightMatrix::AssignPreset(SubstWeightMatrix::Preset p)
       FillData(this,RAW_BLOSUM100_DATA);
       break;
     }
+    case IDENTITY:{
+      FillIdentity(this);
+      break;
+    }
   }
 }
 
diff --git a/modules/seq/alg/src/subst_weight_matrix.hh b/modules/seq/alg/src/subst_weight_matrix.hh
index 25f74dc1a19bb422e4b9c82ff18605b71d4eb29c..fe057be1b87be55b58877dd4e8d92d9520cb4ae1 100644
--- a/modules/seq/alg/src/subst_weight_matrix.hh
+++ b/modules/seq/alg/src/subst_weight_matrix.hh
@@ -43,7 +43,8 @@ public:
   enum Preset{BLOSUM45 = 0,
               BLOSUM62 = 1,
               BLOSUM80 = 2,
-              BLOSUM100 = 3};
+              BLOSUM100 = 3,
+              IDENTITY = 4};
   /// \brief Initialize substitution matrix with zero.
   /// 
   /// In order to get a useful  substitution weight matrix, use SetWeight().