Thank you very much!
Regards,
Evgueni
2009/3/25 Greg Landrum
> [Redirected to the list because the question is of general interest]
>
> Hi Evgueni,
>
> On Wed, Mar 25, 2009 at 10:56 AM, Evgueni Kolossov
> wrote:
> >
> > Got some problems with looping over an atom's bonds when I need to
> compare
> > (see below):
> >
> > double CRDKitDescriptor::GetEdgeDegree(RDKit::Bond * Bond_in, bool
> > bWeighted) const
> > {
> >double dRtn = 0.0;
> >RDKit::ROMol::OEDGE_ITER beg,end;
> >RDKit::ROMol mol = Bond_in->getOwningMol();
> >//OLD CODE//RDKit::ROMol::GRAPH_MOL_BOND_PMAP::type pMap =
> > mol.getBondPMap();
> >
> >// Take two atoms involved in this bond.
> >RDKit::Atom *pAtom[2] = { Bond_in->getBeginAtom(),
> > Bond_in->getEndAtom() };
> >for (int i=0; i < 2; i++)
> >{
> >// Add degrees of other bonds (not connected to H) on this
> > atom.
> >boost::tie(beg,end) = mol.getAtomBonds(pAtom[i]);
> >while(beg!=end)
> >{
> >//OLD CODE//RDKit::Bond *pCurrentBond =
> > pMap[*beg];
> >//NEW CODE//RDKit::BOND_SPTR pCurrentBond =
> > (mol)[*beg];
> > //NOW I have RDKit::Bond pointer and RDKit::BOND_SPTR instead of 2
> > RDKit::Bond pointers
> > //and how I am going to compare them?
> >if (pCurrentBond != Bond_in
> >&&
> > pCurrentBond->getOtherAtom(pAtom[i])->getAtomicNum() != 1)//not 'H' and
> not
> > the same bond
> >{
> >// Bond contributes its weight, or 1 if
> > we're not considering weights.
> >dRtn += bWeighted ? GetBondWeight(pCurrentBond) : 1.0;
> >}
> >++beg;
> >}
> >}
> >return dRtn;
> > }
> > Can you help please!!!
>
> Indeed, I can.
> A BOND_SPTR is a boost shared pointer that contains a Bond *. To get
> the Bond * itself, you call the shared pointer's get() method.
> Something like this:
>
>if (pCurrentBond.get() != Bond_in)
>
> Best Regards,
> -greg
>
>
> --
> ___
> Rdkit-discuss mailing list
> Rdkit-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
>