/** * @param linkages * @param atomLinkages * @return true if atomLinkages satisfy the condition; false, otherwise. */ private boolean matchLinkages(List<ModificationLinkage> linkages, List<Atom[]> atomLinkages) { int nLink = linkages.size(); if (nLink != atomLinkages.size()) { return false; } for (int i = 0; i < nLink - 1; i++) { ModificationLinkage link1 = linkages.get(i); Atom[] atoms1 = atomLinkages.get(i); for (int j = i + 1; j < nLink; j++) { ModificationLinkage link2 = linkages.get(j); Atom[] atoms2 = atomLinkages.get(j); // check components if (((link1.getIndexOfComponent1() == link2.getIndexOfComponent1()) != (atoms1[0].getGroup().equals(atoms2[0].getGroup()))) || ((link1.getIndexOfComponent1() == link2.getIndexOfComponent2()) != (atoms1[0].getGroup().equals(atoms2[1].getGroup()))) || ((link1.getIndexOfComponent2() == link2.getIndexOfComponent1()) != (atoms1[1].getGroup().equals(atoms2[0].getGroup()))) || ((link1.getIndexOfComponent2() == link2.getIndexOfComponent2()) != (atoms1[1].getGroup().equals(atoms2[1].getGroup())))) { return false; } // check atoms String label11 = link1.getLabelOfAtomOnComponent1(); String label12 = link1.getLabelOfAtomOnComponent2(); String label21 = link2.getLabelOfAtomOnComponent1(); String label22 = link2.getLabelOfAtomOnComponent2(); if ((label11 != null && label21 != null && label11.equals(label21)) != (atoms1[0].equals(atoms2[0])) || (label11 != null && label22 != null && label11.equals(label22)) != (atoms1[0].equals(atoms2[1])) || (label12 != null && label21 != null && label12.equals(label21)) != (atoms1[1].equals(atoms2[0])) || (label12 != null && label22 != null && label12.equals(label22)) != (atoms1[1].equals(atoms2[1]))) { return false; } } } return true; }