public IAtomContainer proposeStructure ( ) { logger . debug ( "RandomGenerator->proposeStructure() Start" ) ; do { try { trial = molecule . clone ( ) ; } catch ( CloneNotSupportedException e ) { throw new IllegalStateException ( "Could not clone IAtomContainer!" + e . getMessage ( ) ) ; } mutate ( trial ) ; if ( logger . isDebugEnabled ( ) ) { String s = "BondCounts: " ; for ( int f = 0 ; f < trial . getAtomCount ( ) ; f ++ ) { s += trial . getConnectedBondsCount ( trial . getAtom ( f ) ) + " " ; } logger . debug ( s ) ; s = "BondOrderSums: " ; for ( int f = 0 ; f < trial . getAtomCount ( ) ; f ++ ) { s += trial . getBondOrderSum ( trial . getAtom ( f ) ) + " " ; } logger . debug ( s ) ; } } while ( trial == null || ! ConnectivityChecker . isConnected ( trial ) ) ; proposedStructure = trial ; return proposedStructure ; }
Proposes a structure which can be accepted or rejected by an external entity . If rejected the structure is not used as a starting point for the next random move in structure space .