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
...@@ -39,6 +39,18 @@ class Map ...@@ -39,6 +39,18 @@ class Map
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,15 +58,6 @@ class MapMaker ...@@ -46,15 +58,6 @@ 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
}; };
...@@ -62,6 +65,9 @@ class MapMaker ...@@ -62,6 +65,9 @@ class MapMaker
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,
std::initializer_list<std::string> fbLabels = { "FWT", "PHWT" }, std::initializer_list<std::string> fbLabels = { "FWT", "PHWT" },
...@@ -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, void recalc(const Structure& structure,
const clipper::HKL_data<clipper::data32::F_sigF>& fo, bool noBulk, AnisoScalingFlag anisoScaling,
const clipper::HKL_data<clipper::data32::F_phi>& fc, float samplingRate = 4.5, bool electronScattering = false);
const clipper::HKL_data<clipper::data32::Flag>& free);
MapType mFb, mFd; MapType mFb, mFd;
Spacegroup mSpacegroup;
Cell mCell;
Grid_sampling mGrid; Grid_sampling mGrid;
float mSamplingRate; float mSamplingRate;
double mResLow, mResHigh; double mResLow, mResHigh;
int mNumRefln = 1000, mNumParam = 20; 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,7 +4612,11 @@ void PDBFileParser::ParseConnectivtyAnnotation() ...@@ -4612,7 +4612,11 @@ void PDBFileParser::ParseConnectivtyAnnotation()
continue; continue;
} }
string distance = vS(74, 78); string distance, details;
if (mRec->is("LINK "))
{
distance = vS(74, 78);
try try
{ {
stod(distance); stod(distance);
...@@ -4623,11 +4627,18 @@ void PDBFileParser::ParseConnectivtyAnnotation() ...@@ -4623,11 +4627,18 @@ void PDBFileParser::ParseConnectivtyAnnotation()
cerr << "Distance value '" << distance << "' is not a valid float" << endl; cerr << "Distance value '" << distance << "' is not a valid float" << endl;
distance.clear(); distance.clear();
} }
}
else // LINKR
{
details = vS(74, 78); // the link ID
}
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) },
{ "ptnr1_label_seq_id", (isResseq1 and p1Seq) ? to_string(p1Seq) : "." }, { "ptnr1_label_seq_id", (isResseq1 and p1Seq) ? to_string(p1Seq) : "." },
......
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