public class SmilesParser extends Object
SmilesSearch
.
Currently this parser supports only parts of the SMILES specification.
try {
SmilesParser sp = new SmilesParser();
SmilesSearch sm = sp.parseSmiles("CC(C)C(=O)O");
// Use the resulting SmilesSearch
} catch (InvalidSmilesException e) {
// Exception management
}
Modifier and Type | Field and Description |
---|---|
private char |
bioType |
private boolean |
bondDirectionPaired |
private int |
braceCount |
private int |
branchLevel |
private int |
componentCount |
private int |
componentParenCount |
private Map<Integer,SmilesBond> |
connections |
private int |
flags |
private Map<String,SmilesMeasure> |
htMeasures |
private boolean |
ignoreStereochemistry |
private boolean |
isBioSequence |
private boolean |
isSmarts |
private boolean |
isTarget |
Constructor and Description |
---|
SmilesParser(boolean isSmarts,
boolean isTarget) |
Modifier and Type | Method and Description |
---|---|
private int |
checkBioType(String pattern,
int index) |
private boolean |
checkBrace(SmilesSearch search,
char ch,
char type) |
private int |
checkCharge(String pattern,
int index,
SmilesAtom newAtom) |
private boolean |
checkLogic(SmilesSearch search,
String pattern,
SmilesAtom atom,
SmilesBond bond,
SmilesAtom currentAtom,
boolean isAND,
boolean isBranchAtom,
int[] ret) |
private void |
checkNested(SmilesSearch search,
SmilesAtom atom,
int flags) |
(package private) static String |
cleanPattern(String pattern) |
(package private) static String |
extractFlags(String pattern,
int[] ret) |
private void |
fixChirality(SmilesSearch search) |
(package private) static char |
getChar(String pattern,
int i) |
(package private) static int |
getDigits(String pattern,
int index,
int[] ret) |
(package private) static int |
getFlags(String pattern) |
(package private) static int |
getRingNumber(String pattern,
int index,
char ch,
int[] ret) |
(package private) static String |
getSubPattern(String pattern,
int index,
char ch) |
(package private) SmilesSearch |
getSubsearch(SmilesSearch parent,
String pattern,
int flags) |
(package private) static SmilesSearch |
newSearch(String pattern,
boolean isSmarts,
boolean isTarget) |
(package private) SmilesSearch |
parse(String pattern)
Parses a SMILES String
|
private SmilesAtom |
parseAtom(SmilesSearch search,
SmilesAtom atomSet,
String pattern,
SmilesAtom atom,
SmilesBond bond,
boolean isBracketed,
boolean isAND,
boolean isBranchAtom)
Parses an atom definition
|
private SmilesBond |
parseBond(SmilesSearch search,
SmilesBond bondSet,
String pattern,
SmilesBond bond,
SmilesAtom currentAtom,
boolean isAND,
boolean isBranchAtom,
int len,
int[] ret) |
private void |
parseConnection(SmilesSearch search,
int ringNum,
SmilesAtom currentAtom,
SmilesBond bond)
Parses a ring definition
|
private void |
parseMeasure(SmilesSearch search,
String strMeasure,
SmilesAtom currentAtom) |
private String |
parseNested(SmilesSearch search,
String pattern,
String prefix) |
private void |
parseSmiles(SmilesSearch search,
String pattern,
SmilesAtom currentAtom,
boolean isBranchAtom)
Parses a part of a SMILES String
|
private String |
parseVariableLength(String pattern) |
private String |
parseVariables(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 void |
setBondAtom(SmilesBond bond,
SmilesAtom a1,
SmilesAtom a2,
SmilesSearch search)
set the bond and look for a=a, setting AROMATIC_DOUBLE automatically if found
|
private static int |
skipTo(String pattern,
int index,
char ch0) |
private Map<Integer,SmilesBond> connections
private Map<String,SmilesMeasure> htMeasures
private int flags
private boolean isSmarts
private boolean isBioSequence
private char bioType
private int braceCount
private int branchLevel
private int componentCount
private int componentParenCount
private boolean ignoreStereochemistry
private boolean bondDirectionPaired
private boolean isTarget
static SmilesSearch newSearch(String pattern, boolean isSmarts, boolean isTarget) throws InvalidSmilesException
InvalidSmilesException
SmilesSearch parse(String pattern) throws InvalidSmilesException
pattern
- SMILES StringInvalidSmilesException
private String parseVariableLength(String pattern) throws InvalidSmilesException
InvalidSmilesException
SmilesSearch getSubsearch(SmilesSearch parent, String pattern, int flags) throws InvalidSmilesException
InvalidSmilesException
private void checkNested(SmilesSearch search, SmilesAtom atom, int flags) throws InvalidSmilesException
InvalidSmilesException
private void fixChirality(SmilesSearch search) throws InvalidSmilesException
InvalidSmilesException
private void parseSmiles(SmilesSearch search, String pattern, SmilesAtom currentAtom, boolean isBranchAtom) throws InvalidSmilesException
search
- SmilesSearch being builtpattern
- SMILES StringcurrentAtom
- Current atomisBranchAtom
- If we are starting a new branchInvalidSmilesException
private void parseConnection(SmilesSearch search, int ringNum, SmilesAtom currentAtom, SmilesBond bond) throws InvalidSmilesException
search
- Resulting moleculeringNum
- currentAtom
- Current atombond
- InvalidSmilesException
private void setBondAtom(SmilesBond bond, SmilesAtom a1, SmilesAtom a2, SmilesSearch search)
bond
- a1
- a2
- search
- static int getRingNumber(String pattern, int index, char ch, int[] ret) throws InvalidSmilesException
InvalidSmilesException
private int checkBioType(String pattern, int index)
private void parseMeasure(SmilesSearch search, String strMeasure, SmilesAtom currentAtom) throws InvalidSmilesException
InvalidSmilesException
private boolean checkBrace(SmilesSearch search, char ch, char type) throws InvalidSmilesException
InvalidSmilesException
private String parseNested(SmilesSearch search, String pattern, String prefix) throws InvalidSmilesException
InvalidSmilesException
private String parseVariables(String pattern) throws InvalidSmilesException
pattern
- InvalidSmilesException
private SmilesAtom parseAtom(SmilesSearch search, SmilesAtom atomSet, String pattern, SmilesAtom atom, SmilesBond bond, boolean isBracketed, boolean isAND, boolean isBranchAtom) throws InvalidSmilesException
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
- InvalidSmilesException
private int checkCharge(String pattern, int index, SmilesAtom newAtom) throws InvalidSmilesException
InvalidSmilesException
private SmilesBond parseBond(SmilesSearch search, SmilesBond bondSet, String pattern, SmilesBond bond, SmilesAtom currentAtom, boolean isAND, boolean isBranchAtom, int len, int[] ret) throws InvalidSmilesException
InvalidSmilesException
private boolean checkLogic(SmilesSearch search, String pattern, SmilesAtom atom, SmilesBond bond, SmilesAtom currentAtom, boolean isAND, boolean isBranchAtom, int[] ret) throws InvalidSmilesException
search
- pattern
- atom
- bond
- currentAtom
- isAND
- isBranchAtom
- ret
- InvalidSmilesException
static String getSubPattern(String pattern, int index, char ch) throws InvalidSmilesException
InvalidSmilesException
static char getChar(String pattern, int i)
static int getDigits(String pattern, int index, int[] ret)
pattern
- index
- ret
- private static int skipTo(String pattern, int index, char ch0)
static String cleanPattern(String pattern)
pattern
- static String extractFlags(String pattern, int[] ret) throws InvalidSmilesException
InvalidSmilesException
static int getFlags(String pattern) throws InvalidSmilesException
InvalidSmilesException