Graph { public static Graph fromSmiles(String smi) throws InvalidSmilesException { if (smi == null) throw new NullPointerException("no SMILES provided"); Parser parser = new Parser(CharBuffer.fromString(smi), false); for (String warn : parser.getWarnings()) { for (String line : warn.split("\n")) System.err.println("SMILES Warning: " + line); } return parser.molecule(); } Graph(int expSize);   Graph(Graph org); Atom atom(int i); int degree(int u); List<Edge> edges(int u); int[] neighbors(int u); boolean adjacent(int u, int v); int implHCount(int u); Edge edge(int u, int v); Edge edgeAt(int u, int j); Topology topologyOf(int u); Configuration configurationOf(int u); int order(); int size(); static Graph fromSmiles(String smi); static Graph parse(String smi, boolean strict, Set<String> warnings); String toSmiles(); String toSmiles(int[] visitedAt); Graph aromatic(); Graph resonate(); Graph kekule(); boolean assignable(); Graph permute(int[] p); Iterable<Atom> atoms(); Iterable<Edge> edges(); int getFlags(final int mask); int getFlags(); void setTitle(String title); String getTitle(); Graph sort(EdgeComparator comparator); static final int HAS_AROM; static final int HAS_ATM_STRO; static final int HAS_EXT_STRO; static final int HAS_BND_STRO; static final int HAS_STRO; }
@Test public void CHEMBL1215012() throws Exception { Graph g = Graph.fromSmiles("[Na+].[Na+].CC(C)c1c(O)c(O)c(\\C=N\\[C@H]2[C@H]3SC(C)(C)[C@@H](N3C2=O)C(=O)[O-])c4C(=O)C(=C(C)C(=O)c14)C5=C(C)C(=O)c6c(C(C)C)c(O)c(O)c(\\C=N\\[C@H]7[C@H]8SC(C)(C)[C@@H](N8C7=O)C(=O)[O-])c6C5=O CHEMBL1215012"); }