@ Override public DescriptorValue calculate ( IAtomContainer container ) { IRingSet rs ; try { AllRingsFinder arf = new AllRingsFinder ( ) ; rs = arf . findAllRings ( container ) ; } catch ( Exception e ) { return getDummyDescriptorValue ( new CDKException ( "Could not find all rings: " + e . getMessage ( ) ) ) ; } String [ ] fragment = new String [ container . getAtomCount ( ) ] ; EStateAtomTypeMatcher eStateMatcher = new EStateAtomTypeMatcher ( ) ; eStateMatcher . setRingSet ( rs ) ; for ( IAtomContainer ring : rs . atomContainers ( ) ) { boolean arom = true ; for ( IBond bond : ring . bonds ( ) ) { if ( ! bond . isAromatic ( ) ) { arom = false ; break ; } } ring . setFlag ( CDKConstants . ISAROMATIC , arom ) ; } for ( int i = 0 ; i < container . getAtomCount ( ) ; i ++ ) { IAtomType atomType = eStateMatcher . findMatchingAtomType ( container , container . getAtom ( i ) ) ; if ( atomType == null ) { fragment [ i ] = null ; } else { fragment [ i ] = atomType . getAtomTypeName ( ) ; } } double [ ] ret = new double [ 0 ] ; try { ret = calculate ( container , fragment , rs ) ; } catch ( CDKException e ) { e . printStackTrace ( ) ; return getDummyDescriptorValue ( new CDKException ( e . getMessage ( ) ) ) ; } DoubleArrayResult results = new DoubleArrayResult ( ) ; results . add ( ret [ 0 ] ) ; results . add ( ret [ 1 ] ) ; results . add ( ret [ 2 ] ) ; return new DescriptorValue ( getSpecification ( ) , getParameterNames ( ) , getParameters ( ) , results , getDescriptorNames ( ) ) ; }
The AlogP descriptor .