---------- Forwarded message ----------
From: Evgueni Kolossov <ekolos...@gmail.com>
Date: 2008/8/18
Subject: Re: [Rdkit-discuss] Calculation of atomic descriptors, Code snippet
To: Greg Landrum <greg.land...@gmail.com>


Greg,
Another question: getAllRotatableBonds(RDKit::ROMol &mol) - will this take
in account hydrogens or not?


> Regards,
> Evgueni
>
> 2008/8/17 Greg Landrum <greg.land...@gmail.com>
>
> Dear Evgueni,
>>
>> > 2008/8/17 Evgueni Kolossov <ekolos...@gmail.com>
>> >>
>> >> Thanks Greg,
>> >>
>> >> But this is not enough:
>> >>
>> >> unsigned int minRingSize=ringInfo->
>> >>>
>> >>> minAtomRingSize(atomIdx);
>> >>> for(VECT_INT_VECT_CI ringIt=ringInfo->atomRings().begin();
>> >>>    ringIt!=ringInfo->atomRings().end();++ringIt){
>> >>>  if(ringIt->size()==minRingSize){
>> >>>
>>  if(std::find(ringIt->begin(),ringIt->end(),atomIdx)!=ringIt->end()){
>> >>>      // our atom is in this ring; do something
>> >>>    }
>> >>>  }
>> >>>  }
>> >>> }
>> >>
>> >> In this case we got an iterator (ringIt) which is itself a vector (if I
>> am
>> >> right) of Ring atoms.
>>
>> It's a vector of ring atom indices. You can use these to get the
>> corresponding atoms from the molecule.
>>
>> >> So to do something with atoms  inside this ring we need somehow iterate
>> >> through the atoms...
>> >> Can you show how to do this?
>> >> I have tried to do it this way:
>> >> for (unsighed int i=0; i<minRingSize; i++)
>> >> {
>> >>     RDKit::Atom * pAtom = mol.getAtomWithIdx(ringIt[i]) ;
>> >>     ..........
>> >> }
>> >> but this is not working.
>>
>> Here's a sample that is actually tested. It's now part of the getting
>> started in C++ sample code. We loop over all atom rings, then grab
>> each atom in the 5-rings and test to see if it's aromatic.
>> I think this, combined with the earlier stuff I posted, should get you
>> started:
>>
>> ---------------
>>  mol=SmilesToMol("C1CC2=C(C1)C1=C(NC3=C1C=CC=C3)C=C2");
>>  ringInfo = mol->getRingInfo();
>>  atomRings=ringInfo->atomRings();
>>
>>  unsigned int nMatchingAtoms=0;
>>  for(VECT_INT_VECT_CI ringIt=atomRings.begin();
>>      ringIt!=atomRings.end();++ringIt){
>>    if(ringIt->size()!=5){
>>      continue;
>>    }
>>    bool isAromatic=true;
>>    for(INT_VECT_CI atomIt=ringIt->begin();
>>        atomIt!=ringIt->end();++atomIt){
>>      if(!mol->getAtomWithIdx(*atomIt)->getIsAromatic()){
>>        isAromatic=false;
>>        break;
>>      }
>>    }
>>    if(isAromatic){
>>      nMatchingAtoms+=5;
>>    }
>>  }
>>  TEST_ASSERT(nMatchingAtoms==5);
>> ---------------
>>
>> Best Regards,
>> -greg
>>
>
>
>
> --
> Dr. Evgueni Kolossov (PhD)
> ekolos...@gmail.com
> Tel. +44(0)1628 627168
> Mob. +44(0)7812070446
>



-- 
Dr. Evgueni Kolossov (PhD)
ekolos...@gmail.com
Tel. +44(0)1628 627168
Mob. +44(0)7812070446



-- 
Dr. Evgueni Kolossov (PhD)
ekolos...@gmail.com
Tel. +44(0)1628 627168
Mob. +44(0)7812070446

Reply via email to