Commit eccf6c88 by maarten

refactored MapMaker

git-svn-id: svn+ssh://gitlab/srv/svn-repos/pdb-redo/trunk@240 a1961a4f-ab94-4bcc-80e8-33b5a54de466
parent 2a2fefa8
...@@ -7,13 +7,45 @@ ...@@ -7,13 +7,45 @@
namespace libcif namespace libcif
{ {
template<typename FTYPE> template<typename FTYPE>
class MapMaker class Map
{ {
public: public:
typedef FTYPE ftype; typedef FTYPE ftype;
typedef typename clipper::Xmap<ftype> Xmap; typedef typename clipper::Xmap<ftype> Xmap;
Map();
~Map();
void calculateStats();
double rmsDensity() const { return mRMSDensity; }
double meanDensity() const { return mMeanDensity; }
operator Xmap& () { return mMap; }
operator const Xmap& () const { return mMap; }
// These routines work with CCP4 map files
void read(const boost::filesystem::path& f);
void write(const boost::filesystem::path& f);
clipper::Spacegroup spacegroup() const { return mMap.spacegroup(); }
clipper::Cell cell() const { return mMap.cell(); }
private:
Xmap mMap;
double mRMSDensity, mMeanDensity;
};
template<typename FTYPE>
class MapMaker
{
public:
typedef Map<FTYPE> MapType;
typedef typename MapType::Xmap Xmap;
typedef clipper::HKL_data<clipper::data32::F_phi> FPdata; typedef clipper::HKL_data<clipper::data32::F_phi> FPdata;
typedef clipper::HKL_data<clipper::data32::F_sigF> FOdata; typedef clipper::HKL_data<clipper::data32::F_sigF> FOdata;
typedef clipper::HKL_data<clipper::data32::Phi_fom> WData; typedef clipper::HKL_data<clipper::data32::Phi_fom> WData;
...@@ -27,7 +59,7 @@ class MapMaker ...@@ -27,7 +59,7 @@ class MapMaker
as_None, as_Observed, as_Calculated as_None, as_Observed, as_Calculated
}; };
MapMaker(Xmap& fb, Xmap& fd); MapMaker();
~MapMaker(); ~MapMaker();
void loadFromMTZ(const boost::filesystem::path& mtzFile, void loadFromMTZ(const boost::filesystem::path& mtzFile,
...@@ -36,22 +68,27 @@ class MapMaker ...@@ -36,22 +68,27 @@ class MapMaker
std::initializer_list<std::string> fdLabels = { "DELFWT", "PHDELWT" }, std::initializer_list<std::string> fdLabels = { "DELFWT", "PHDELWT" },
std::initializer_list<std::string> foLabels = { "FP", "SIGFP" }, std::initializer_list<std::string> foLabels = { "FP", "SIGFP" },
std::initializer_list<std::string> fcLabels = { "FC_ALL", "PHIC_ALL" }); std::initializer_list<std::string> fcLabels = { "FC_ALL", "PHIC_ALL" });
void recalculateFromMTZ(const boost::filesystem::path& mtzFile, void recalculateFromMTZ(const boost::filesystem::path& mtzFile,
const Structure& structure, const Structure& structure,
bool noBulk, AnisoScalingFlag anisoScaling, bool noBulk, AnisoScalingFlag anisoScaling,
float samplingRate = 4.5, bool electronScattering = false, float samplingRate = 4.5, bool electronScattering = false,
std::initializer_list<std::string> foLabels = { "FP", "SIGFP" }, std::initializer_list<std::string> foLabels = { "FP", "SIGFP" },
std::initializer_list<std::string> freeLabels = { "FREE" }); std::initializer_list<std::string> freeLabels = { "FREE" });
void loadFromMapFiles(const boost::filesystem::path& fbMapFile,
const boost::filesystem::path& fdMapFile);
double rmsDensityFb() const { return mRMSDensityFb; } void loadFromMapFiles(
double meanDensityFb() const { return mMeanDensityFb; } const boost::filesystem::path& fbMapFile,
double rmsDensityFd() const { return mRMSDensityFd; } const boost::filesystem::path& fdMapFile,
double meanDensityFd() const { return mMeanDensityFd; } float reshi, float reslo);
MapType& fb() { return mFb; }
MapType& fd() { return mFd; }
const MapType& fb() const { return mFb; }
const MapType& fd() const { return mFd; }
double resLow() const { return mResLow; } double resLow() const { return mResLow; }
double resHigh() const { return mResHigh; } double resHigh() const { return mResHigh; }
const Spacegroup& spacegroup() const { return mSpacegroup; } const Spacegroup& spacegroup() const { return mSpacegroup; }
const Cell& cell() const { return mCell; } const Cell& cell() const { return mCell; }
...@@ -61,18 +98,12 @@ class MapMaker ...@@ -61,18 +98,12 @@ class MapMaker
void fixMTZ(FPdata& fb, FPdata& fd, FOdata& fo, FPdata& fc, WData& fom); void fixMTZ(FPdata& fb, FPdata& fd, FOdata& fo, FPdata& fc, WData& fom);
Xmap& mFb; MapType mFb, mFd;
Xmap& mFd; Spacegroup mSpacegroup;
Cell mCell;
Spacegroup mSpacegroup; Grid_sampling mGrid;
Cell mCell; float mSamplingRate;
Grid_sampling mGrid; double mResLow, mResHigh;
float mSamplingRate;
double mRMSDensityFb, mRMSDensityFd;
double mMeanDensityFb, mMeanDensityFd;
double mResLow, mResHigh;
}; };
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment