Skip to content
Snippets Groups Projects
Commit 4e4c273b authored by Gabriel Studer's avatar Gabriel Studer
Browse files

added possibility to superpose two vectors of Vec3

parent 7d36cfe3
Branches
Tags
No related merge requests found
......@@ -36,6 +36,8 @@ void export_svdSuperPose()
{
SuperpositionResult (*sup1)(const mol::EntityView&,const mol::EntityView&,bool) = SuperposeSVD;
SuperpositionResult (*sup2)(const std::vector<geom::Vec3>&,const std::vector<geom::Vec3>& ) = SuperposeSVD;
SuperpositionResult (*sup3)(const mol::EntityView&,const mol::EntityView&, int, Real, bool) = IterativeSuperposeSVD;
SuperpositionResult (*sup4)(const std::vector<geom::Vec3>&,const std::vector<geom::Vec3>&, int, Real) = IterativeSuperposeSVD;
class_<SuperpositionResult>("SuperpositionResult", init<>())
.def_readwrite("ncycles", &SuperpositionResult::ncycles)
.def_readwrite("rmsd", &SuperpositionResult::rmsd)
......@@ -51,7 +53,8 @@ void export_svdSuperPose()
def("SuperposeAtoms", &SuperposeAtoms,(arg("apply_transform")=true));
def("SuperposeSVD", sup1, (arg("apply_transform")=true));
def("SuperposeSVD", sup2, (arg("apply_transform")=true));
def("IterativeSuperposeSVD", &IterativeSuperposeSVD,(arg("max_iterations")=5, arg("distance_threshold")=3.0,arg("apply_transform")=true));
def("IterativeSuperposeSVD", sup3,(arg("max_iterations")=5, arg("distance_threshold")=3.0,arg("apply_transform")=true));
def("IterativeSuperposeSVD", sup4,(arg("max_iterations")=5, arg("distance_threshold")=3.0));
def("CalculateRMSD", &CalculateRMSD, (arg("transformation")=geom::Mat4()));
}
......@@ -498,5 +498,16 @@ SuperpositionResult IterativeSuperposeSVD(const mol::EntityView& ev,
return result;
}
SuperpositionResult DLLEXPORT_OST_MOL_ALG IterativeSuperposeSVD(const std::vector<geom::Vec3>& pl1,
const std::vector<geom::Vec3>& pl2,
int max_cycles,
Real distance_threshold){
MeanSquareMinimizer msm = MeanSquareMinimizer::FromPointLists(pl1, pl2);
SuperpositionResult result = msm.IterativeMinimize(max_cycles, distance_threshold);
result.rmsd = calc_rmsd_for_point_lists(pl1, pl2, result.transformation);
return result;
}
}}} //ns
......@@ -102,6 +102,14 @@ SuperpositionResult DLLEXPORT_OST_MOL_ALG IterativeSuperposeSVD(const mol::Entit
Real distance_threshold,
bool apply_transform);
/// \brief iterative superposition of two point lists
SuperpositionResult DLLEXPORT_OST_MOL_ALG IterativeSuperposeSVD(const std::vector<geom::Vec3>& pl1,
const std::vector<geom::Vec3>& pl2,
int max_cycles,
Real distance_threshold);
/// \brief calculates RMSD for two entity view
Real DLLEXPORT_OST_MOL_ALG CalculateRMSD(const mol::EntityView& ev1,
const mol::EntityView& ev2,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment