I found a bug in the swig wrappers which I would like to fix. Fixing it though exposes issues with various things being passed around improperly by functions that are part of the api in various modules.
In particular the following have issues (proposed fixes show) - em2d::do_segmentation(): return the opencv matrix instead of pass by ref. As it is internally reference counted there is no reason not to. - em2d::Image::get_min_and_max_values: return a FloatRange - em2d::get_peak() return a pair of values - em2d::ProjectionParameters::get_keys()- return FloatKeys - em::MapReaderWriter all methods: I don't see any need to export them to python anyway - em::ImageHeader::get_{date,time,title}: return std::string - em::KerenParameters and em::RadiusDependentDistanceMask are pretty much a mess in terms of how they are passed and stored, there are plans to revamp it all, so just hiding the methods dealing with them seems ok for now. - saxs::Score::fit_profile: the profile argument can probably be passed by const-ref or value, but it is not entirely clear to me - multifit::FFTFitting::get_wrapped_index and get_wrapped_correlation_map: can return an Ints - multifit::fitting_clustering: should probably just return the solutions + a few others which had obvious, non-breaking fixes which can make.
I'd like to commit the wrapper changes. To do this, I'd just hide the above functions from python, they can be fixed and exposed as needed. Thoughts.