int refidx = mapidx(target.getAtom(perm[rIdx])); if (refidx == 0) return false; // unmapped in target bound.add(refidx); if (!bound.contains(mapidx(target.getAtom(perm[pIdx])))) return false; final int refidx = mapidx(target.getAtom(perm[mpair.rIdxs[0]])); if (refidx == 0) return false; // unmapped in target if (refidx != mapidx(target.getAtom(perm[mpair.pIdxs[0]]))) return false; for (int i = 1; i < mpair.pIdxs.length; i++) { if (refidx != mapidx(target.getAtom(perm[mpair.pIdxs[i]]))) return false;
Mappings filter(Mappings mappings, IAtomContainer query, IAtomContainer target) { // apply required post-match filters if (hasStereo) { mappings = hasQueryStereo ? mappings.filter(new QueryStereoFilter(query, target)) : mappings.filter(new StereoMatch(query, target)); } if (hasCompGrp) mappings = mappings.filter(new ComponentFilter(query, target)); if (hasRxnMap) mappings = mappings.filter(new AtomMapFilter(query, target)); return mappings; }