141 const CResidue& residue,
int moleculeID,
144 int nResidues,
int moleculeType) :
165 dictionary = &localDictionary;
168 ERRORMSG(
"confused by Molecule #?, Residue #" <<
id <<
"; can't find appropriate dictionary");
172 ResidueGraphList::const_iterator
i, ie=dictionary->end();
173 for (
i=dictionary->begin();
i!=ie; ++
i) {
174 if (
i->GetObject().GetId().Get() == graphID) {
175 residueGraph =
i->GetPointer();
180 ERRORMSG(
"confused by Molecule #?, Residue #" <<
id <<
"; can't find Residue-graph ID #" << graphID);
188 CResidue_graph::TDescr::const_iterator j, je = residueGraph->
GetDescr().end();
189 for (j=residueGraph->
GetDescr().begin(); j!=je; ++j) {
190 if (j->GetObject().IsName()) {
207 ERRORMSG(
"Residue()::Residue() : parent doesn't have any CoordSets");
213 CResidue_graph::TAtoms::const_iterator
a, ae = residueGraph->
GetAtoms().end();
214 for (
a=residueGraph->
GetAtoms().begin();
a!=ae; ++
a) {
216 const CAtom& atom =
a->GetObject();
219 AtomPntr ap(moleculeID,
id, atomID);
222 StructureObject::CoordSetList::const_iterator c, ce=
object->coordSets.end();
223 for (c=object->
coordSets.begin(); c!=ce; ++c) {
224 if (((*c)->atomSet->GetAtom(ap,
true,
true))) {
230 info->residue =
this;
238 info->atomicNumber =
static_cast<int>(atomicNumber);
242 info->isIonizableProton =
true;
244 info->isIonizableProton =
false;
255 ERRORMSG(
"Residue #" <<
id <<
": confused by multiple atom IDs " << atom.
GetId().
Get());
260 CResidue_graph::TBonds::const_iterator
b, be = residueGraph->
GetBonds().end();
261 for (
b=residueGraph->
GetBonds().begin();
b!=be; ++
b) {
262 int order =
b->GetObject().IsSetBond_order() ?
265 moleculeID,
id,
b->GetObject().GetAtom_id_1().Get(),
266 moleculeID,
id,
b->GetObject().GetAtom_id_2().Get(),
268 if (bond)
bonds.push_back(bond);
274 AtomInfoMap::iterator
a, ae =
atomInfos.end();
282 ERRORMSG(
"Residue::Draw(data) - NULL AtomSet*");
311 bool alphaVisible =
false, alphaOnly =
false;
314 AtomInfoMap::const_iterator
a, ae =
atomInfos.end();
319 atom = atomSet->
GetAtom(ap, overlayEnsembles,
true);
335 if ((proteinLabel || nucleotideLabel) &&
a->second->classification !=
eSideChainAtom) {
337 if (
a->second->name ==
" CA ") {
339 labelColor = atomStyle.
color;
342 else if (
a->second->name ==
" C ") l2 = atom;
343 else if (
a->second->name ==
" N ") l3 = atom;
345 if (
a->second->name ==
" P ") {
347 labelColor = atomStyle.
color;
358 if (l1 && (!l2 || !l3)) {
359 Molecule::ResidueMap::const_iterator prevRes, nextRes;
361 if ((prevRes=molecule->
residues.find(
id - 1)) != molecule->
residues.end() &&
376 if (alphaVisible && (proteinLabel|| nucleotideLabel)) {
386 Vector forward = - ((l2->site - l1->
site) + (l3->site - l1->
site));
388 labelPosition = l1->
site + 1.5 * forward;
390 Vector up = vector_cross(l2->site - l1->
site, l3->site - l1->
site);
392 Vector forward = (-((l2->site - l1->
site) + (l3->site - l1->
site)) / 2);
394 labelPosition = l1->
site + 1.5 * forward + 1.5 * up;
415 Vector forward = - ((l2->site - l1->
site) + (l3->site - l1->
site));
417 labelPosition = l1->
site + 3 * forward;
419 labelPosition = l3->site + 3 * (l3->site - l2->site);
425 for (
unsigned int i=0;
i<3; ++
i)
439 if (oss.str().size() > 0) {
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
const Bond * MakeBond(StructureBase *parent, int mID1, int rID1, int aID1, int mID2, int rID2, int aID2, int bondOrder)
static const CBiostruc_residue_graph_set * standardDictionary
const AtomCoord * GetAtom(const AtomPntr &atom, bool getAny=false, bool suppressWarning=false) const
StyleManager::eDisplayStyle style
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
static bool IsLightColor(const Vector &color)
const Vector & Get(eColor which) const
bool IsHighlighted(const Molecule *molecule, int residueID) const
void DrawAtom(const Vector &site, const AtomStyle &atomStyle)
void DrawLabel(const std::string &text, const Vector ¢er, const Vector &color)
bool IsNucleotide(void) const
static const char NO_CODE
bool Draw(const AtomSet *atomSet) const
Residue(StructureBase *parent, const ncbi::objects::CResidue &residue, int moleculeID, const ResidueGraphList &standardDictionary, const ResidueGraphList &localDictionary, int nResidues, int moleculeType)
static const int NO_ALPHA_ID
bool IsAminoAcid(void) const
bool OverlayConfEnsembles(void) const
bool GetParentOfType(const T **ptr, bool warnIfNotFound=true) const
unsigned int CreateName(const Residue *residue, int atomID)
ShowHideManager * showHideManager
OpenGLRenderer * renderer
StyleManager * styleManager
const StyleSettings & GetStyleForResidue(const StructureObject *object, int moleculeID, int residueID) const
bool GetAtomStyle(const Residue *residue, const AtomPntr &atom, const AtomCoord *coord, AtomStyle *atomStyle, const StyleSettings::BackboneStyle **saveBackboneStyle=NULL, const StyleSettings::GeneralStyle **saveGeneralStyle=NULL) const
LabelStyle nucleotideLabels
void Set(double xs, double ys, double zs)
const Colors * GlobalColors(void)
Include a standard set of the NCBI C++ Toolkit most basic headers.
const TPrim & Get(void) const
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
TResidue_type GetResidue_type(void) const
Get the Residue_type member data.
bool IsSetIupac_code(void) const
Check if a value has been assigned to Iupac_code data member.
const TDescr & GetDescr(void) const
Get the Descr member data.
const TName & GetName(void) const
Get the Name member data.
bool IsSetDescr(void) const
Check if a value has been assigned to Descr data member.
const TResidue_graph_id & GetResidue_graph_id(void) const
Get the Residue_graph_id member data.
const TIupac_code & GetIupac_code(void) const
Get the Iupac_code member data.
const TBiostruc_residue_graph_set_id & GetBiostruc_residue_graph_set_id(void) const
Get the Biostruc_residue_graph_set_id member data.
TIonizable_proton GetIonizable_proton(void) const
Get the Ionizable_proton member data.
bool IsStandard(void) const
Check if variant Standard is selected.
bool IsSetResidue_type(void) const
Check if a value has been assigned to Residue_type data member.
const TResidue_graph & GetResidue_graph(void) const
Get the Residue_graph member data.
bool IsSetName(void) const
Check if a value has been assigned to Name data member.
bool IsLocal(void) const
Check if variant Local is selected.
const TLocal & GetLocal(void) const
Get the variant data.
const TName & GetName(void) const
Get the Name member data.
const TBonds & GetBonds(void) const
Get the Bonds member data.
const TIupac_code & GetIupac_code(void) const
Get the Iupac_code member data.
TElement GetElement(void) const
Get the Element member data.
bool IsSetIupac_code(void) const
Check if a value has been assigned to Iupac_code data member.
const TId & GetId(void) const
Get the Id member data.
const TId & GetId(void) const
Get the Id member data.
bool IsSetName(void) const
Check if a value has been assigned to Name data member.
bool IsSetIonizable_proton(void) const
Check if a value has been assigned to Ionizable_proton data member.
const TStandard & GetStandard(void) const
Get the variant data.
const TAtoms & GetAtoms(void) const
Get the Atoms member data.
bool IsOther_database(void) const
Check if variant Other_database is selected.
const TOther_database & GetOther_database(void) const
Get the variant data.
const TTag & GetTag(void) const
Get the Tag member data.
bool IsId(void) const
Check if variant Id is selected.
const TDb & GetDb(void) const
Get the Db member data.
TId GetId(void) const
Get the variant data.
Messenger * GlobalMessenger(void)
std::list< ncbi::CRef< ncbi::objects::CResidue_graph > > ResidueGraphList
static Residue::eAtomClassification ClassifyAtom(const Residue *residue, const CAtom &atom)