package org.openscience.cdk.fingerprint; import org.openscience.cdk.annotations.TestClass; import org.openscience.cdk.annotations.TestMethod; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; /** * Default sets of atom containers aimed for use with the substructure * * @author egonw * * @cdk.module fingerprint * @cdk.githash */ @TestClass("org.openscience.cdk.fingerprint.StandardSubstructureSetsTest") public class StandardSubstructureSets { private static String[] smarts = null; /** * @return A set of the functional groups. * @throws Exception if there is an error parsing SMILES for the functional groups */ @TestMethod("testGetFunctionalGroupSubstructureSet") public static String[] getFunctionalGroupSMARTS() throws Exception { if (smarts != null) return smarts; String filename = "org/openscience/cdk/fingerprint/data/SMARTS_InteLigand.txt"; InputStream ins = StandardSubstructureSets.class.getClassLoader().getResourceAsStream(filename); BufferedReader reader = new BufferedReader(new InputStreamReader(ins)); List<String> tmp = new ArrayList<String>(); String line; while ((line = reader.readLine()) != null) { if (line.startsWith("#") || line.trim().length() == 0) continue; String[] toks = line.split(":"); StringBuffer s = new StringBuffer(); for (int i = 1; i < toks.length-1; i++) s.append(toks[i]+":"); s.append(toks[toks.length-1]); tmp.add(s.toString().trim()); } smarts = tmp.toArray(new String[]{}); return smarts; } }