/// <summary> /// This method calculate the ATS Autocorrelation descriptor. /// </summary> public Result Calculate(IAtomContainer container, int count = DefaultSize) { container = AtomContainerManipulator.RemoveHydrogens(container); var w = ListConvertion(container); var natom = container.Atoms.Count; var distancematrix = TopologicalMatrix.GetMatrix(container); var masSum = new double[count]; for (int k = 0; k < count; k++) { for (int i = 0; i < natom; i++) { for (int j = 0; j < natom; j++) { if (distancematrix[i][j] == k) { masSum[k] += w[i] * w[j]; } else { masSum[k] += 0; } } } if (k > 0) { masSum[k] = masSum[k] / 2; } } return(new Result(masSum)); }
public Result Calculate(IAtomContainer container, int count = DefaultSize) { container = (IAtomContainer)container.Clone(); container = AtomContainerManipulator.RemoveHydrogens(container); try { var w = Listcharges(container); var natom = container.Atoms.Count; var distancematrix = TopologicalMatrix.GetMatrix(container); var chargeSum = new double[count]; for (int k = 0; k < count; k++) { for (int i = 0; i < natom; i++) { for (int j = 0; j < natom; j++) { if (distancematrix[i][j] == k) { chargeSum[k] += w[i] * w[j]; } else { chargeSum[k] += 0; } } } if (k > 0) { chargeSum[k] = chargeSum[k] / 2; } } return(new Result(chargeSum)); } catch (CDKException e) { return(new Result(e)); } }