/*******************************************************************************
solutionInfo.cpp - Shape-it
Copyright 2012 by Silicos-it, a division of Imacosi BVBA
This file is part of Shape-it.
Shape-it is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Shape-it is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with Shape-it. If not, see .
Shape-it is linked against OpenBabel version 2.
OpenBabel is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation version 2 of the License.
***********************************************************************/
#include
SolutionInfo::SolutionInfo(void)
:refName("")
, refAtomVolume(0.0)
, refCenter(0, 0, 0)
, dbName("")
, dbAtomVolume(0.0)
, dbMol()
, dbCenter(0, 0, 0)
, atomOverlap(0.0)
, score(0.0)
, rotor(4, 0.0)
{
rotor[0] = 1.0;
}
SolutionInfo::~SolutionInfo(void)
{
}
void
updateSolutionInfo(SolutionInfo & s, AlignmentInfo & res, double score,
GaussianVolume & gv)
{
s.dbAtomVolume = gv.overlap;
s.dbCenter = gv.centroid;
memcpy(static_cast(s.dbRotation),static_cast(gv.rotation), 3*3*sizeof(double));
s.atomOverlap = res.overlap;
s.score = score;
s.rotor = res.rotor;
return;
}
void setAllScores(SolutionInfo & res)
{
RDKit::ROMol dbMol = *res.dbMol;
dbMol.setProp(tanimoto,
res.atomOverlap / (res.refAtomVolume + res.dbAtomVolume -
res.atomOverlap));
dbMol.setProp(tversky_ref,
res.atomOverlap / (0.95 * res.refAtomVolume +
0.05 * res.dbAtomVolume));
dbMol.setProp(tversky_db,
res.atomOverlap / (0.05 * res.refAtomVolume +
0.95 * res.dbAtomVolume));
return;
}