Package org.jmol.smiles
Class SmilesParser
java.lang.Object
org.jmol.smiles.SmilesParser
Parses a SMILES string or SMARTS pattern to create a
An example on how to use it:
SmilesSearch.
Currently this parser supports only parts of the SMILES specification. An example on how to use it:
try {
SmilesParser sp = new SmilesParser();
SmilesSearch sm = sp.parseSmiles("CC(C)C(=O)O");
// Use the resulting SmilesSearch
} catch (InvalidSmilesException e) {
// Exception management
}
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate charprivate booleanprivate intprivate intprivate intprivate intprivate Map<Integer,SmilesBond> private intprivate Map<String,SmilesMeasure> private booleanprivate booleanprivate booleanprivate boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate intcheckBioType(String pattern, int index) private booleancheckBrace(SmilesSearch search, char ch, char type) private intcheckCharge(String pattern, int index, SmilesAtom newAtom) private booleancheckLogic(SmilesSearch search, String pattern, SmilesAtom atom, SmilesBond bond, SmilesAtom currentAtom, boolean isAND, boolean isBranchAtom, int[] ret) private voidcheckNested(SmilesSearch search, SmilesAtom atom, int flags) (package private) static StringcleanPattern(String pattern) (package private) static StringextractFlags(String pattern, int[] ret) private voidfixChirality(SmilesSearch search) (package private) static char(package private) static int(package private) static int(package private) static intgetRingNumber(String pattern, int index, char ch, int[] ret) (package private) static StringgetSubPattern(String pattern, int index, char ch) (package private) SmilesSearchgetSubsearch(SmilesSearch parent, String pattern, int flags) (package private) static SmilesSearch(package private) SmilesSearchParses a SMILES Stringprivate SmilesAtomparseAtom(SmilesSearch search, SmilesAtom atomSet, String pattern, SmilesAtom atom, SmilesBond bond, boolean isBracketed, boolean isAND, boolean isBranchAtom) Parses an atom definitionprivate SmilesBondparseBond(SmilesSearch search, SmilesBond bondSet, String pattern, SmilesBond bond, SmilesAtom currentAtom, boolean isAND, boolean isBranchAtom, int len, int[] ret) private voidparseConnection(SmilesSearch search, int ringNum, SmilesAtom currentAtom, SmilesBond bond) Parses a ring definitionprivate voidparseMeasure(SmilesSearch search, String strMeasure, SmilesAtom currentAtom) private StringparseNested(SmilesSearch search, String pattern, String prefix) private voidparseSmiles(SmilesSearch search, String pattern, SmilesAtom currentAtom, boolean isBranchAtom) Parses a part of a SMILES Stringprivate StringparseVariableLength(String pattern) private StringparseVariables(String pattern) variables can be defined, as in select within(SMARTS,'$R1="[CH3, NH2]";$R2="[$([$R1]),OH]"; {a}[$R2]') select within(SMARTS,'$R1="[CH3,NH2]";$R2="[OH]"; {a}[$([$R1]),$([$R2])]') "select aromatic atoms bearing CH3, NH2, or OH"private voidsetBondAtom(SmilesBond bond, SmilesAtom a1, SmilesAtom a2, SmilesSearch search) set the bond and look for a=a, setting AROMATIC_DOUBLE automatically if foundprivate static int
-
Field Details
-
connections
-
htMeasures
-
flags
private int flags -
isSmarts
private boolean isSmarts -
isBioSequence
private boolean isBioSequence -
bioType
private char bioType -
braceCount
private int braceCount -
branchLevel
private int branchLevel -
componentCount
private int componentCount -
componentParenCount
private int componentParenCount -
ignoreStereochemistry
private boolean ignoreStereochemistry -
bondDirectionPaired
private boolean bondDirectionPaired -
isTarget
private boolean isTarget
-
-
Constructor Details
-
SmilesParser
SmilesParser(boolean isSmarts, boolean isTarget)
-
-
Method Details
-
newSearch
static SmilesSearch newSearch(String pattern, boolean isSmarts, boolean isTarget) throws InvalidSmilesException - Throws:
InvalidSmilesException
-
parse
Parses a SMILES String- Parameters:
pattern- SMILES String- Returns:
- Molecule corresponding
pattern - Throws:
InvalidSmilesException
-
parseVariableLength
- Throws:
InvalidSmilesException
-
getSubsearch
SmilesSearch getSubsearch(SmilesSearch parent, String pattern, int flags) throws InvalidSmilesException - Throws:
InvalidSmilesException
-
checkNested
private void checkNested(SmilesSearch search, SmilesAtom atom, int flags) throws InvalidSmilesException - Throws:
InvalidSmilesException
-
fixChirality
- Throws:
InvalidSmilesException
-
parseSmiles
private void parseSmiles(SmilesSearch search, String pattern, SmilesAtom currentAtom, boolean isBranchAtom) throws InvalidSmilesException Parses a part of a SMILES String- Parameters:
search- SmilesSearch being builtpattern- SMILES StringcurrentAtom- Current atomisBranchAtom- If we are starting a new branch- Throws:
InvalidSmilesException
-
parseConnection
private void parseConnection(SmilesSearch search, int ringNum, SmilesAtom currentAtom, SmilesBond bond) throws InvalidSmilesException Parses a ring definition- Parameters:
search- Resulting moleculeringNum-currentAtom- Current atombond-- Throws:
InvalidSmilesException
-
setBondAtom
set the bond and look for a=a, setting AROMATIC_DOUBLE automatically if found- Parameters:
bond-a1-a2-search-
-
getRingNumber
static int getRingNumber(String pattern, int index, char ch, int[] ret) throws InvalidSmilesException - Throws:
InvalidSmilesException
-
checkBioType
-
parseMeasure
private void parseMeasure(SmilesSearch search, String strMeasure, SmilesAtom currentAtom) throws InvalidSmilesException - Throws:
InvalidSmilesException
-
checkBrace
- Throws:
InvalidSmilesException
-
parseNested
private String parseNested(SmilesSearch search, String pattern, String prefix) throws InvalidSmilesException - Throws:
InvalidSmilesException
-
parseVariables
variables can be defined, as in select within(SMARTS,'$R1="[CH3, NH2]";$R2="[$([$R1]),OH]"; {a}[$R2]') select within(SMARTS,'$R1="[CH3,NH2]";$R2="[OH]"; {a}[$([$R1]),$([$R2])]') "select aromatic atoms bearing CH3, NH2, or OH"- Parameters:
pattern-- Returns:
- substituted pattern
- Throws:
InvalidSmilesException
-
parseAtom
private SmilesAtom parseAtom(SmilesSearch search, SmilesAtom atomSet, String pattern, SmilesAtom atom, SmilesBond bond, boolean isBracketed, boolean isAND, boolean isBranchAtom) throws InvalidSmilesException Parses an atom definition- Parameters:
search- current searchatomSet- upper-level SmilesAtom if from checkLogicpattern- SMILES or SMARTS Stringatom- parent atom or nullbond- null or parent bondisBracketed- true if a bracketed definition [...]isAND- being called from checkLogic for & or ;isBranchAtom-- Returns:
- New atom
- Throws:
InvalidSmilesException
-
checkCharge
private int checkCharge(String pattern, int index, SmilesAtom newAtom) throws InvalidSmilesException - Throws:
InvalidSmilesException
-
parseBond
private SmilesBond parseBond(SmilesSearch search, SmilesBond bondSet, String pattern, SmilesBond bond, SmilesAtom currentAtom, boolean isAND, boolean isBranchAtom, int len, int[] ret) throws InvalidSmilesException - Throws:
InvalidSmilesException
-
checkLogic
private boolean checkLogic(SmilesSearch search, String pattern, SmilesAtom atom, SmilesBond bond, SmilesAtom currentAtom, boolean isAND, boolean isBranchAtom, int[] ret) throws InvalidSmilesException - Parameters:
search-pattern-atom-bond-currentAtom-isAND-isBranchAtom-ret-- Returns:
- true if we are done
- Throws:
InvalidSmilesException
-
getSubPattern
- Throws:
InvalidSmilesException
-
getChar
-
getDigits
- Parameters:
pattern-index-ret-- Returns:
- pointer to the character AFTER the digits
-
skipTo
-
cleanPattern
- Parameters:
pattern-- Returns:
- comments and white space removed, also ^^ to '
-
extractFlags
- Throws:
InvalidSmilesException
-
getFlags
- Throws:
InvalidSmilesException
-