Thank you very much!

Regards,
Evgueni

2009/3/25 Greg Landrum <greg.land...@gmail.com>

> [Redirected to the list because the question is of general interest]
>
> Hi Evgueni,
>
> On Wed, Mar 25, 2009 at 10:56 AM, Evgueni Kolossov
> <ekolos...@btinternet.com> 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
>

Reply via email to