code: @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;
      }
docs: 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