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
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>
class MapMaker
{
......@@ -46,15 +58,6 @@ class MapMaker
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_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 {
as_None, as_Observed, as_Calculated
};
......@@ -62,6 +65,9 @@ class MapMaker
MapMaker();
~MapMaker();
MapMaker(const MapMaker&) = delete;
MapMaker& operator=(const MapMaker&) = delete;
void loadFromMTZ(const boost::filesystem::path& mtzFile,
float samplingRate = 4.5,
std::initializer_list<std::string> fbLabels = { "FWT", "PHWT" },
......@@ -69,6 +75,10 @@ class MapMaker
std::initializer_list<std::string> foLabels = { "FP", "SIGFP" },
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,
const Structure& structure,
bool noBulk, AnisoScalingFlag anisoScaling,
......@@ -81,6 +91,9 @@ class MapMaker
const boost::filesystem::path& fdMapFile,
float reshi, float reslo);
void writeMTZ(const boost::filesystem::path& file,
const std::string& project, const std::string& crystal);
MapType& fb() { return mFb; }
MapType& fd() { return mFd; }
......@@ -90,26 +103,31 @@ class MapMaker
double resLow() const { return mResLow; }
double resHigh() const { return mResHigh; }
const Spacegroup& spacegroup() const { return mSpacegroup; }
const Cell& cell() const { return mCell; }
const Spacegroup& spacegroup() const { return mHKLInfo.spacegroup(); }
const Cell& cell() const { return mHKLInfo.cell(); }
const Grid_sampling& gridSampling() const { return mGrid; }
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,
const clipper::HKL_data<clipper::data32::F_phi>& fc,
const clipper::HKL_data<clipper::data32::Flag>& free);
void recalc(const Structure& structure,
bool noBulk, AnisoScalingFlag anisoScaling,
float samplingRate = 4.5, bool electronScattering = false);
MapType mFb, mFd;
Spacegroup mSpacegroup;
Cell mCell;
Grid_sampling mGrid;
float mSamplingRate;
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,7 +4612,11 @@ void PDBFileParser::ParseConnectivtyAnnotation()
continue;
}
string distance = vS(74, 78);
string distance, details;
if (mRec->is("LINK "))
{
distance = vS(74, 78);
try
{
stod(distance);
......@@ -4623,11 +4627,18 @@ void PDBFileParser::ParseConnectivtyAnnotation()
cerr << "Distance value '" << distance << "' is not a valid float" << endl;
distance.clear();
}
}
else // LINKR
{
details = vS(74, 78); // the link ID
}
getCategory("struct_conn")->emplace({
{ "id", type + to_string(linkNr) },
{ "conn_type_id", type },
{ "details", details },
{ "ptnr1_label_asym_id", p1Asym },
{ "ptnr1_label_comp_id", vS(18, 20) },
{ "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