(!stereocenters.isStereocenter(container.indexOf(begAtom)) || !stereocenters.isStereocenter(container.indexOf(endAtom)))) return null;
/**{@inheritDoc} */ @Override ITetrahedralChirality createTetrahedral(int v, Stereocenters stereocenters) { if (!stereocenters.isStereocenter(v)) return null; IAtom focus = container.getAtom(v); if (hasUnspecifiedParity(focus)) return null; IAtom[] neighbors = new IAtom[4]; neighbors[3] = focus; int n = 0; for (int w : graph[v]) neighbors[n++] = container.getAtom(w); // too few/many neighbors if (n < 3 || n > 4) return null; // TODO: verify valid wedge/hatch configurations using similar procedure // to NonPlanarBonds in the cdk-sdg package int parity = parity(neighbors); Stereo winding = parity > 0 ? Stereo.ANTI_CLOCKWISE : Stereo.CLOCKWISE; return new TetrahedralChirality(focus, neighbors, winding); }
if (stereocenters.elementType(v) != Tetracoordinate) continue; if (!stereocenters.isStereocenter(v)) continue;
if (!centers.isStereocenter(v)) continue; for (int w : graph[v]) { if (w > v && bond.getOrder() == IBond.Order.DOUBLE) { if (centers.elementType(w) == Stereocenters.Type.Tricoordinate && centers.isStereocenter(w) && !isInSmallRing(bond, 7)) { IStereoElement element = createGeometric(v, w, centers); if (element != null) elements.add(element);
final int down = below[i % cycle.length]; if (!stereocenters.isStereocenter(curr)) continue;
(!stereocenters.isStereocenter(t0) || !stereocenters.isStereocenter(t1))) return null;
if (stereocenters.isStereocenter(w)) continue;