diff --git a/modules/seq/base/pymod/export_sequence.cc b/modules/seq/base/pymod/export_sequence.cc
index e0104a51cd53ac3cbae14452bc2fd737f502a69d..b6c500cf23563263799c8ace1cba7e6b2d75b78a 100644
--- a/modules/seq/base/pymod/export_sequence.cc
+++ b/modules/seq/base/pymod/export_sequence.cc
@@ -304,6 +304,7 @@ void export_sequence()
     .def("AttachView", attach_view_b)
     .def("Cut", &AlignmentHandle::Cut)
     .def("MakeRegion", &AlignmentHandle::MakeRegion)
+    .def("RemoveSequence", &AlignmentHandle::RemoveSequence)
     .def("Replace",&AlignmentHandle::Replace)
     .def("__getitem__", &slice_aln)
     .def("__getitem__", &AlignmentHandle::operator[])
diff --git a/modules/seq/base/src/alignment_handle.cc b/modules/seq/base/src/alignment_handle.cc
index d4611b5623a69ec8bcfd653f7dd66fd3e2513981..edc54340b7d4a4ea017035465f7c5c468c53b302 100644
--- a/modules/seq/base/src/alignment_handle.cc
+++ b/modules/seq/base/src/alignment_handle.cc
@@ -82,6 +82,12 @@ String AlignmentHandle::ToString(int width) const
   return impl_->ToString(width);
 }
 
+void AlignmentHandle::RemoveSequence(int seq_index)
+{
+  this->CheckValidity();
+  impl_->RemoveSequence(seq_index);
+}
+
 int AlignmentHandle::GetLength() const
 {
   this->CheckValidity();
diff --git a/modules/seq/base/src/alignment_handle.hh b/modules/seq/base/src/alignment_handle.hh
index 998618b520ed6e90fa88b81f45ddadf4f4e5dcaa..8c66888f1e7d53c3ffede857c24193987677a0f2 100644
--- a/modules/seq/base/src/alignment_handle.hh
+++ b/modules/seq/base/src/alignment_handle.hh
@@ -80,7 +80,9 @@ public:
   /// \brief     Get sequence with given index.
   /// \return    sequence or invalid handle if the index is out of bounds
   ConstSequenceHandle GetSequence(int seq_id) const;
-
+  
+  /// \brief remove sequence at seq_index from alignment
+  void RemoveSequence(int seq_index);
   /// \brief   Convert multiple sequence alignment to string.
   String ToString(int width=80) const;
 
diff --git a/modules/seq/base/src/impl/sequence_list_impl.cc b/modules/seq/base/src/impl/sequence_list_impl.cc
index 01f22c779d1ee95ffed4d2202b91ad1e01763f8a..e1e152059122c57a6c14b6828dd87d87318673a9 100644
--- a/modules/seq/base/src/impl/sequence_list_impl.cc
+++ b/modules/seq/base/src/impl/sequence_list_impl.cc
@@ -96,7 +96,13 @@ String SequenceListImpl::ToString(int width) const
   return buffer.str();
 }
 
-
+void SequenceListImpl::RemoveSequence(int index)
+{
+  if (index<0 || index>=static_cast<int>(list_.size())) {
+    return;
+  }
+  list_.erase(list_.begin()+index);
+}
 int SequenceListImpl::GetMinLength() const
 {
   int min_length=std::numeric_limits<int>::max();
diff --git a/modules/seq/base/src/impl/sequence_list_impl.hh b/modules/seq/base/src/impl/sequence_list_impl.hh
index 3f1970f511d56e97defc73f78b69d407e024a71d..66bedd61f47c4cb5d40374b92dfc94c2213ecee9 100644
--- a/modules/seq/base/src/impl/sequence_list_impl.hh
+++ b/modules/seq/base/src/impl/sequence_list_impl.hh
@@ -57,6 +57,8 @@ public:
     throw std::out_of_range("Index not covered SequenceList");
   }
   
+  
+  void RemoveSequence(int index);
   int GetPos(int seq_index, int residue_index) const;
 
   int GetResidueIndex(int seq_index, int pos) const;