@Override
    public DescriptorValue calculate(IBond bond, IAtomContainer ac) {
        // FIXME: for now I'll cache a few modified atomic properties, and restore them at the end of this method
        Double originalCharge1 = bond.getBegin().getCharge();
        Double originalCharge2 = bond.getEnd().getCharge();
        if (!isCachedAtomContainer(ac)) {
            IAtomContainer mol = ac.getBuilder().newInstance(IAtomContainer.class, ac);
            if (maxIterations != 0) peoe.setMaxGasteigerIters(maxIterations);
            try {
                peoe.assignGasteigerMarsiliSigmaPartialCharges(mol, true);
                for (Iterator<IBond> it = ac.bonds().iterator(); it.hasNext();) {
                    IBond bondi = it.next();
                    double result = Math.abs(bondi.getBegin().getCharge() - bondi.getEnd().getCharge());
                    cacheDescriptorValue(bondi, ac, new DoubleResult(result));
                }
            } catch (Exception ex1) {
                return getDummyDescriptorValue(ex1);
            }
        }
        bond.getBegin().setCharge(originalCharge1);
        bond.getEnd().setCharge(originalCharge2);
        return getCachedDescriptorValue(bond) != null ? new DescriptorValue(getSpecification(), getParameterNames(),
                getParameters(), getCachedDescriptorValue(bond), NAMES) : null;
    }
@ Override public DescriptorValue calculate ( IBond bond , IAtomContainer ac ) { Double originalCharge1 = bond . getBegin ( ) . getCharge ( ) ; Double originalCharge2 = bond . getEnd ( ) . getCharge ( ) ; if ( ! isCachedAtomContainer ( ac ) ) { IAtomContainer mol = ac . getBuilder ( ) . newInstance ( IAtomContainer . class , ac ) ; if ( maxIterations != 0 ) peoe . setMaxGasteigerIters ( maxIterations ) ; try { peoe . assignGasteigerMarsiliSigmaPartialCharges ( mol , true ) ; for ( Iterator < IBond > it = ac . bonds ( ) . iterator ( ) ; it . hasNext ( ) ; ) { IBond bondi = it . next ( ) ; double result = Math . abs ( bondi . getBegin ( ) . getCharge ( ) - bondi . getEnd ( ) . getCharge ( ) ) ; cacheDescriptorValue ( bondi , ac , new DoubleResult ( result ) ) ; } } catch ( Exception ex1 ) { return getDummyDescriptorValue ( ex1 ) ; } } bond . getBegin ( ) . setCharge ( originalCharge1 ) ; bond . getEnd ( ) . setCharge ( originalCharge2 ) ; return getCachedDescriptorValue ( bond ) != null ? new DescriptorValue ( getSpecification ( ) , getParameterNames ( ) , getParameters ( ) , getCachedDescriptorValue ( bond ) , NAMES ) : null ; }
The method calculates the bond-sigma Partial charge of a given bond
It is needed to call the addExplicitHydrogensToSatisfyValency method from the class tools.HydrogenAdder.

@param  ac                AtomContainer
@return return the sigma electronegativity