diff --git a/modules/mol/alg/pymod/export_sec_structure.cc b/modules/mol/alg/pymod/export_sec_structure.cc
index d79dea60c5fc7e2fa7753fecb531951244b7cf49..0073a2f138bd23a1192f951e580573b1ffcd8252 100644
--- a/modules/mol/alg/pymod/export_sec_structure.cc
+++ b/modules/mol/alg/pymod/export_sec_structure.cc
@@ -19,8 +19,10 @@
 
 
 #include <boost/python.hpp>
+#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
 
 #include <ost/mol/alg/sec_struct.hh>
+#include <ost/mol/alg/sec_structure_segments.hh>
 
 using namespace boost::python;
 
@@ -34,6 +36,31 @@ void AssignSecStructHandle(ost::mol::EntityHandle& handle) {
   ost::mol::alg::AssignSecStruct(handle);
 }
 
+ost::mol::alg::SecStructureSegments 
+ExtractHelicalSegments_handle(const ost::mol::ChainHandle& chain) {
+  return ost::mol::alg::ExtractHelicalSegments(chain);
+}
+ost::mol::alg::SecStructureSegments 
+ExtractHelicalSegments_view(const ost::mol::ChainView& chain) {
+  return ost::mol::alg::ExtractHelicalSegments(chain);
+}
+ost::mol::alg::SecStructureSegments 
+ExtractExtendedSegments_handle(const ost::mol::ChainHandle& chain) {
+  return ost::mol::alg::ExtractExtendedSegments(chain);
+}
+ost::mol::alg::SecStructureSegments 
+ExtractExtendedSegments_view(const ost::mol::ChainView& chain) {
+  return ost::mol::alg::ExtractExtendedSegments(chain);
+}
+ost::mol::alg::SecStructureSegments 
+ExtractSecStructureSegments_handle(const ost::mol::ChainHandle& chain) {
+  return ost::mol::alg::ExtractSecStructureSegments(chain);
+}
+ost::mol::alg::SecStructureSegments 
+ExtractSecStructureSegments_view(const ost::mol::ChainView& chain) {
+  return ost::mol::alg::ExtractSecStructureSegments(chain);
+}
+
 } // ns
 
 void export_sec_struct() {
@@ -41,3 +68,23 @@ void export_sec_struct() {
   def("AssignSecStruct", &AssignSecStructHandle, (arg("ent")));
 }
 
+void export_sec_struct_segments() {
+
+  class_<ost::mol::alg::SecStructureSegment>("SecStructureSegment", init<int,int,ost::mol::SecStructure>())
+    .def_readwrite("first", &ost::mol::alg::SecStructureSegment::first)
+    .def_readwrite("last", &ost::mol::alg::SecStructureSegment::last)
+    .def_readwrite("ss_type", &ost::mol::alg::SecStructureSegment::ss_type)
+   ;
+
+   class_<ost::mol::alg::SecStructureSegments>("SecStructureSegments", init<>())
+     .def(vector_indexing_suite<ost::mol::alg::SecStructureSegments>())
+   ;
+
+   def("ExtractHelicalSegments", &ExtractHelicalSegments_handle, (arg("chain")));
+   def("ExtractHelicalSegments", &ExtractHelicalSegments_view, (arg("chain")));
+   def("ExtractExtendedSegments", &ExtractExtendedSegments_handle, (arg("chain")));
+   def("ExtractExtendedSegments", &ExtractExtendedSegments_view, (arg("chain")));
+   def("ExtractSecStructureSegments", &ExtractSecStructureSegments_handle, (arg("chain")));
+   def("ExtractSecStructureSegments", &ExtractSecStructureSegments_view, (arg("chain")));
+}
+
diff --git a/modules/mol/alg/pymod/wrap_mol_alg.cc b/modules/mol/alg/pymod/wrap_mol_alg.cc
index d36877c0fb9024c9a200ca0e327fd9b68f900cbd..265df5dfd552a3dbf26b895855c582f744d2980b 100644
--- a/modules/mol/alg/pymod/wrap_mol_alg.cc
+++ b/modules/mol/alg/pymod/wrap_mol_alg.cc
@@ -47,6 +47,7 @@ void export_Molck();
 void export_contact_overlap();
 void export_accessibility();
 void export_sec_struct();
+void export_sec_struct_segments();
 void export_find_membrane();
 #if OST_IMG_ENABLED
 void export_entity_to_density();
@@ -319,6 +320,7 @@ BOOST_PYTHON_MODULE(_ost_mol_alg)
   export_contact_overlap();
   export_accessibility();
   export_sec_struct();
+  export_sec_struct_segments();
   export_find_membrane();
   #if OST_IMG_ENABLED
   export_entity_to_density();
diff --git a/modules/mol/alg/src/sec_structure_segments.hh b/modules/mol/alg/src/sec_structure_segments.hh
index 958c285209dc7723ffd9aa31d4057eb9c3057c16..dc906c0757bce80af592a203a95c116af21b3d68 100644
--- a/modules/mol/alg/src/sec_structure_segments.hh
+++ b/modules/mol/alg/src/sec_structure_segments.hh
@@ -35,6 +35,15 @@ struct DLLEXPORT_OST_MOL_ALG SecStructureSegment {
   SecStructureSegment():
     first(0), last(0), ss_type(SecStructure::COIL)
   { }
+  bool operator==(const SecStructureSegment& rhs) const
+  {
+    return first==rhs.first && last==rhs.last && ss_type==rhs.ss_type;
+  }
+  bool operator!=(const SecStructureSegment& rhs) const
+  {
+    return !(*this==rhs);
+  }
+
   /// \brief index of first residue part of the segment
   int                first;
   /// \brief index of last residue part of the segment