diff --git a/modules/mol/base/pymod/export_coord_frame.cc b/modules/mol/base/pymod/export_coord_frame.cc
index e4c02c926f525c0443bc22a3d74eebd8306b3764..1f417064dd8cb2df0ee01956b1f0d0352c6c281f 100644
--- a/modules/mol/base/pymod/export_coord_frame.cc
+++ b/modules/mol/base/pymod/export_coord_frame.cc
@@ -41,7 +41,7 @@ Real (CoordFrame::*get_alpha)(const mol::EntityView& segment) = &CoordFrame::Get
 geom::Line3 (CoordFrame::*get_odr_line)(const mol::EntityView& view1) = &CoordFrame::GetODRLine;
 geom::Line3 (CoordFrame::*get_odr_line2)() = &geom::Vec3List::GetODRLine;
 geom::Plane (CoordFrame::*get_odr_plane)(const mol::EntityView& view1) = &CoordFrame::GetODRPlane;
-
+geom::Line3 (CoordFrame::*fit_cylinder)(const mol::EntityView& view1) = &CoordFrame::FitCylinder;
 
 void export_CoordFrame()
 {
@@ -61,6 +61,7 @@ void export_CoordFrame()
     .def("GetODRLine",get_odr_line)
     .def("GetODRLine",get_odr_line2)
     .def("GetAlphaHelixContent",get_alpha)
+    .def("FitCylinder",fit_cylinder)
   ;
   def("CreateCoordFrame",CreateCoordFrame);
 }
diff --git a/modules/mol/base/src/coord_frame.cc b/modules/mol/base/src/coord_frame.cc
index 5e2e7812b0f6f0bc55ed259ebcd737e331b4a32f..71b9ed9a64d4f21eeed7630e886f47c02ee96d8e 100644
--- a/modules/mol/base/src/coord_frame.cc
+++ b/modules/mol/base/src/coord_frame.cc
@@ -325,7 +325,17 @@ namespace ost { namespace mol {
     center/=atoms_pos_list.size();
     return atoms_pos_list.FitCylinder(initial_axis,center);
   }
- 
+
+  geom::Line3 CoordFrame::FitCylinder(const mol::EntityView& view1){
+  // Return a lin which is the axis of the best fit cylinder to the CA atoms
+  // of the EntityView.
+  // It is assumed that we fit an alpha-helix and that the CA atoms are oredered sequentially
+    CheckHandleValidity(view1);
+    std::vector<unsigned long> indices_ca;
+    GetCaIndices(view1, indices_ca);
+    return CoordFrame::FitCylinder(indices_ca);
+  }
+  
   Real CoordFrame::GetAlphaHelixContent(const mol::EntityView& segment){
     //Returns the percentage of residues in the EntityView (segment) that are in an alpha-helix
     //Each residue is assigned as being in an alpha-helix or not, based on and backbone torsion angles
diff --git a/modules/mol/base/src/coord_frame.hh b/modules/mol/base/src/coord_frame.hh
index 5458f4cef7a8816dd4d803f1b89c21cd1bef58d3..98eb0c25c5560dbce0ad43e8450e79b8994b46df 100644
--- a/modules/mol/base/src/coord_frame.hh
+++ b/modules/mol/base/src/coord_frame.hh
@@ -78,6 +78,7 @@ public:
   geom::Line3 GetODRLine(const mol::EntityView& view1);
   geom::Plane GetODRPlane(const mol::EntityView& view1);
   geom::Line3 FitCylinder(std::vector<unsigned long>& indices_ca);
+  geom::Line3 FitCylinder(const mol::EntityView& view1);
   Real GetAlphaHelixContent(std::vector<unsigned long>& indices_ca, std::vector<unsigned long>& indices_c,
                              std::vector<unsigned long>& indices_o, std::vector<unsigned long>& indices_n);
   Real GetAlphaHelixContent(const mol::EntityView& segment);