Commit 924d37b6 by maarten

fixed mtz-maker

git-svn-id: svn+ssh://gitlab/srv/svn-repos/pdb-redo/trunk@245 a1961a4f-ab94-4bcc-80e8-33b5a54de466
parent 6105c1f6
...@@ -38,6 +38,18 @@ class Map ...@@ -38,6 +38,18 @@ class Map
Xmap mMap; Xmap mMap;
double mRMSDensity, mMeanDensity; double mRMSDensity, mMeanDensity;
}; };
using clipper::HKL_info;
using clipper::HKL_data;
using clipper::data32::F_phi;
using clipper::data32::F_sigF;
using clipper::data32::Phi_fom;
using clipper::data32::Flag;
using clipper::Spacegroup;
using clipper::Cell;
using clipper::Grid_sampling;
template<typename FTYPE> template<typename FTYPE>
class MapMaker class MapMaker
...@@ -46,21 +58,15 @@ class MapMaker ...@@ -46,21 +58,15 @@ class MapMaker
typedef Map<FTYPE> MapType; typedef Map<FTYPE> MapType;
typedef typename MapType::Xmap Xmap; typedef typename MapType::Xmap Xmap;
typedef clipper::HKL_data<clipper::data32::F_phi> FPdata;
typedef clipper::HKL_data<clipper::data32::F_sigF> FOdata;
typedef clipper::HKL_data<clipper::data32::Phi_fom> WData;
typedef clipper::Spacegroup Spacegroup;
typedef clipper::Cell Cell;
typedef clipper::Grid_sampling Grid_sampling;
enum AnisoScalingFlag { enum AnisoScalingFlag {
as_None, as_Observed, as_Calculated as_None, as_Observed, as_Calculated
}; };
MapMaker(); MapMaker();
~MapMaker(); ~MapMaker();
MapMaker(const MapMaker&) = delete;
MapMaker& operator=(const MapMaker&) = delete;
void loadFromMTZ(const boost::filesystem::path& mtzFile, void loadFromMTZ(const boost::filesystem::path& mtzFile,
float samplingRate = 4.5, float samplingRate = 4.5,
...@@ -69,6 +75,10 @@ class MapMaker ...@@ -69,6 +75,10 @@ class MapMaker
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 loadFromReflections(const boost::filesystem::path& hklin,
const Structure& structure, bool noBulk, AnisoScalingFlag anisoScaling,
float samplingRate = 4.5, bool electronScattering = false);
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,
...@@ -81,6 +91,9 @@ class MapMaker ...@@ -81,6 +91,9 @@ class MapMaker
const boost::filesystem::path& fdMapFile, const boost::filesystem::path& fdMapFile,
float reshi, float reslo); float reshi, float reslo);
void writeMTZ(const boost::filesystem::path& file,
const std::string& project, const std::string& crystal);
MapType& fb() { return mFb; } MapType& fb() { return mFb; }
MapType& fd() { return mFd; } MapType& fd() { return mFd; }
...@@ -90,26 +103,31 @@ class MapMaker ...@@ -90,26 +103,31 @@ class MapMaker
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 mHKLInfo.spacegroup(); }
const Cell& cell() const { return mCell; } const Cell& cell() const { return mHKLInfo.cell(); }
const Grid_sampling& gridSampling() const { return mGrid; } const Grid_sampling& gridSampling() const { return mGrid; }
private: private:
void fixMTZ(FPdata& fb, FPdata& fd, FOdata& fo, FPdata& fc, WData& fom); void fixMTZ();
void printStats();
void printStats(const clipper::HKL_info hklInfo,
const clipper::HKL_data<clipper::data32::F_sigF>& fo, void recalc(const Structure& structure,
const clipper::HKL_data<clipper::data32::F_phi>& fc, bool noBulk, AnisoScalingFlag anisoScaling,
const clipper::HKL_data<clipper::data32::Flag>& free); float samplingRate = 4.5, bool electronScattering = false);
MapType mFb, mFd; MapType mFb, mFd;
Spacegroup mSpacegroup; Grid_sampling mGrid;
Cell mCell; float mSamplingRate;
Grid_sampling mGrid; double mResLow, mResHigh;
float mSamplingRate; int mNumRefln = 1000, mNumParam = 20;
double mResLow, mResHigh;
int mNumRefln = 1000, mNumParam = 20; // Cached raw data
HKL_info mHKLInfo;
HKL_data<F_sigF> mFoData;
HKL_data<Flag> mFreeData;
HKL_data<F_phi> mFcData, mFbData, mFdData;
HKL_data<Phi_fom> mPhiFomData;
}; };
} }
...@@ -4612,21 +4612,32 @@ void PDBFileParser::ParseConnectivtyAnnotation() ...@@ -4612,21 +4612,32 @@ void PDBFileParser::ParseConnectivtyAnnotation()
continue; continue;
} }
string distance = vS(74, 78); string distance, details;
try
if (mRec->is("LINK "))
{ {
stod(distance); distance = vS(74, 78);
try
{
stod(distance);
}
catch (const invalid_argument&)
{
if (VERBOSE)
cerr << "Distance value '" << distance << "' is not a valid float" << endl;
distance.clear();
}
} }
catch (const invalid_argument&) else // LINKR
{ {
if (VERBOSE) details = vS(74, 78); // the link ID
cerr << "Distance value '" << distance << "' is not a valid float" << endl;
distance.clear();
} }
getCategory("struct_conn")->emplace({ getCategory("struct_conn")->emplace({
{ "id", type + to_string(linkNr) }, { "id", type + to_string(linkNr) },
{ "conn_type_id", type }, { "conn_type_id", type },
{ "details", details },
{ "ptnr1_label_asym_id", p1Asym }, { "ptnr1_label_asym_id", p1Asym },
{ "ptnr1_label_comp_id", vS(18, 20) }, { "ptnr1_label_comp_id", vS(18, 20) },
......
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