org.jmol.smiles
Class SmilesParser

java.lang.Object
  extended by org.jmol.smiles.SmilesParser

public class SmilesParser
extends Object

Parses a SMILES String to create a SmilesMolecule. The SMILES specification has been found at the SMILES Home Page. An other explanation can be found in the Daylight Theory Manual.
Currently this parser supports only parts of the SMILES specification.
An example on how to use it:


 try {
   SmilesParser sp = new SmilesParser();
   SmilesMolecule sm = sp.parseSmiles("CC(C)C(=O)O");
   // Use the resulting molecule 
 } catch (InvalidSmilesException e) {
   // Exception management
 }
 

See Also:
SMILES Home Page

Field Summary
private  char bioType
           
private  int braceCount
           
private  int branchLevel
           
(package private)  Hashtable htMeasures
           
private  boolean isBioSequence
           
private  boolean isSmarts
           
private  Hashtable ringBonds
           
 
Constructor Summary
private SmilesParser(boolean isSmarts)
           
 
Method Summary
private  int checkBioType(String pattern, int index)
           
private  boolean checkBrace(SmilesSearch molecule, char ch, char type)
           
private  int checkCharge(String pattern, int index, SmilesAtom newAtom)
           
private  int checkChirality(String pattern, int index, SmilesAtom newAtom)
           
private  boolean checkLogic(SmilesSearch molecule, String pattern, SmilesAtom atom, SmilesBond bond, SmilesAtom currentAtom, boolean isPrimitive, boolean isBranchAtom)
           
private  void checkNested(SmilesSearch molecule, SmilesAtom atom, boolean noAromatic, boolean ignoreStereochemistry)
           
private static String cleanPattern(String pattern, boolean isSmarts)
           
private  void fixChirality(SmilesSearch molecule)
           
private static char getChar(String pattern, int i)
           
private static int getDigits(String pattern, int index, int[] ret)
           
static SmilesSearch getMolecule(String pattern, boolean isSmarts)
           
(package private) static String getRingPointer(int i)
           
private  SmilesSearch getSearch(SmilesSearch parent, String pattern, boolean noAromatic, boolean ignoreStereochemistry)
           
private static String getSubPattern(String pattern, int index, char ch)
           
(package private)  SmilesSearch parse(String pattern)
          Parses a SMILES String
private  SmilesAtom parseAtom(SmilesSearch molecule, SmilesAtom atomSet, String pattern, SmilesAtom currentAtom, SmilesBond bond, boolean isBracketed, boolean isPrimitive, boolean isBranchAtom)
          Parses an atom definition
private  SmilesBond parseBond(SmilesSearch molecule, SmilesBond bondSet, String pattern, SmilesBond bond, SmilesAtom currentAtom, boolean isPrimitive, boolean isBranchAtom)
           
private  void parseMeasure(SmilesSearch molecule, String strMeasure, SmilesAtom currentAtom)
           
private  String parseNested(SmilesSearch molecule, String pattern)
           
private  void parseRing(SmilesSearch molecule, int ringNum, SmilesAtom currentAtom, SmilesBond bond)
          Parses a ring definition
private  void parseSmiles(SmilesSearch molecule, String pattern, SmilesAtom currentAtom, boolean isBranchAtom)
          Parses a part of a SMILES String
private  String parseVariableLength(String pattern)
           
private  String parseVariables(String pattern)
           
private static int skipTo(String pattern, int index, char ch0)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

isSmarts

private boolean isSmarts

isBioSequence

private boolean isBioSequence

bioType

private char bioType

ringBonds

private Hashtable ringBonds

braceCount

private int braceCount

branchLevel

private int branchLevel

htMeasures

Hashtable htMeasures
Constructor Detail

SmilesParser

private SmilesParser(boolean isSmarts)
Method Detail

getMolecule

public static SmilesSearch getMolecule(String pattern,
                                       boolean isSmarts)
                                throws InvalidSmilesException
Throws:
InvalidSmilesException

parse

SmilesSearch parse(String pattern)
             throws InvalidSmilesException
Parses a SMILES String

Parameters:
pattern - SMILES String
Returns:
Molecule corresponding to pattern
Throws:
InvalidSmilesException

parseVariableLength

private String parseVariableLength(String pattern)
                            throws InvalidSmilesException
Throws:
InvalidSmilesException

getSearch

private SmilesSearch getSearch(SmilesSearch parent,
                               String pattern,
                               boolean noAromatic,
                               boolean ignoreStereochemistry)
                        throws InvalidSmilesException
Throws:
InvalidSmilesException

checkNested

private void checkNested(SmilesSearch molecule,
                         SmilesAtom atom,
                         boolean noAromatic,
                         boolean ignoreStereochemistry)
                  throws InvalidSmilesException
Throws:
InvalidSmilesException

fixChirality

private void fixChirality(SmilesSearch molecule)
                   throws InvalidSmilesException
Throws:
InvalidSmilesException

parseSmiles

private void parseSmiles(SmilesSearch molecule,
                         String pattern,
                         SmilesAtom currentAtom,
                         boolean isBranchAtom)
                  throws InvalidSmilesException
Parses a part of a SMILES String

Parameters:
molecule - Resulting molecule
pattern - SMILES String
currentAtom - Current atom
isBranchAtom - If we are starting a new branch
Throws:
InvalidSmilesException

checkBioType

private int checkBioType(String pattern,
                         int index)

parseMeasure

private void parseMeasure(SmilesSearch molecule,
                          String strMeasure,
                          SmilesAtom currentAtom)
                   throws InvalidSmilesException
Throws:
InvalidSmilesException

checkBrace

private boolean checkBrace(SmilesSearch molecule,
                           char ch,
                           char type)
                    throws InvalidSmilesException
Throws:
InvalidSmilesException

parseNested

private String parseNested(SmilesSearch molecule,
                           String pattern)
                    throws InvalidSmilesException
Throws:
InvalidSmilesException

parseVariables

private String parseVariables(String pattern)
                       throws InvalidSmilesException
Throws:
InvalidSmilesException

parseAtom

private SmilesAtom parseAtom(SmilesSearch molecule,
                             SmilesAtom atomSet,
                             String pattern,
                             SmilesAtom currentAtom,
                             SmilesBond bond,
                             boolean isBracketed,
                             boolean isPrimitive,
                             boolean isBranchAtom)
                      throws InvalidSmilesException
Parses an atom definition

Parameters:
molecule - Resulting molecule
atomSet -
pattern - SMILES String
currentAtom - Current atom
bond -
isBracketed - Indicates if is a isBracketed definition (between [])
isPrimitive -
isBranchAtom -
Returns:
New atom
Throws:
InvalidSmilesException

parseRing

private void parseRing(SmilesSearch molecule,
                       int ringNum,
                       SmilesAtom currentAtom,
                       SmilesBond bond)
                throws InvalidSmilesException
Parses a ring definition

Parameters:
molecule - Resulting molecule
ringNum -
currentAtom - Current atom
bond -
Throws:
InvalidSmilesException

checkCharge

private int checkCharge(String pattern,
                        int index,
                        SmilesAtom newAtom)
                 throws InvalidSmilesException
Throws:
InvalidSmilesException

checkChirality

private int checkChirality(String pattern,
                           int index,
                           SmilesAtom newAtom)
                    throws InvalidSmilesException
Throws:
InvalidSmilesException

parseBond

private SmilesBond parseBond(SmilesSearch molecule,
                             SmilesBond bondSet,
                             String pattern,
                             SmilesBond bond,
                             SmilesAtom currentAtom,
                             boolean isPrimitive,
                             boolean isBranchAtom)
                      throws InvalidSmilesException
Throws:
InvalidSmilesException

checkLogic

private boolean checkLogic(SmilesSearch molecule,
                           String pattern,
                           SmilesAtom atom,
                           SmilesBond bond,
                           SmilesAtom currentAtom,
                           boolean isPrimitive,
                           boolean isBranchAtom)
                    throws InvalidSmilesException
Throws:
InvalidSmilesException

getSubPattern

private static String getSubPattern(String pattern,
                                    int index,
                                    char ch)
                             throws InvalidSmilesException
Throws:
InvalidSmilesException

getChar

private static char getChar(String pattern,
                            int i)

getDigits

private static int getDigits(String pattern,
                             int index,
                             int[] ret)
Parameters:
pattern -
index -
ret -
Returns:
pointer to the character AFTER the digits

skipTo

private static int skipTo(String pattern,
                          int index,
                          char ch0)

getRingPointer

static String getRingPointer(int i)

cleanPattern

private static String cleanPattern(String pattern,
                                   boolean isSmarts)