org.jmol.api
Class JmolAdapter

java.lang.Object
  extended by org.jmol.api.JmolAdapter
Direct Known Subclasses:
FrameExportJmolAdapter, SmarterJmolAdapter

public abstract class JmolAdapter
extends java.lang.Object

The JmolAdapter interface defines the API used by the JmolViewer to read external files and fetch atom properties necessary for rendering. A client of the JmolViewer implements this interface on top of their existing molecular model representation. The JmolViewer then requests information from the implementation using this API. Jmol will automatically calculate some atom properties if the client is not capable or does not want to supply them. Note: If you are seeing pink atoms that have lots of bonds, then your methods for getElementNumber(clientAtom) or getElementSymbol(clientAtom) are probably returning stray values. Therefore, these atoms are getting mapped to element 0 (Xx), which has color pink and a relatively large covalent bonding radius.

See Also:
JmolViewer

Nested Class Summary
 class JmolAdapter.AtomIterator
          AtomIterator is used to enumerate all the clientAtom objects in a specified frame.
 class JmolAdapter.BondIterator
          BondIterator is used to enumerate all the bonds
 class JmolAdapter.Logger
          Logger that writes to stdout
 class JmolAdapter.StructureIterator
          StructureIterator is used to enumerate Structures Helix, Sheet, Turn
 
Field Summary
 JmolAdapter.Logger logger
           
static short ORDER_AROMATIC
           
static short ORDER_COVALENT_DOUBLE
           
static short ORDER_COVALENT_SINGLE
           
static short ORDER_COVALENT_TRIPLE
           
static short ORDER_HBOND
           
static short ORDER_PARTIAL01
           
static short ORDER_PARTIAL12
           
static short ORDER_STEREO_FAR
           
static short ORDER_STEREO_NEAR
           
 
Constructor Summary
JmolAdapter(java.lang.String adapterName, JmolAdapter.Logger logger)
           
 
Method Summary
static char canonizeAlphaDigit(char ch)
           
static char canonizeAlternateLocationID(char altLoc)
           
static char canonizeChainID(char chainID)
           
static char canonizeInsertionCode(char insertionCode)
           
 boolean coordinatesAreFractional(java.lang.Object clientFile)
          Get the boolean whether coordinates are fractional.
 void finish(java.lang.Object clientFile)
           
abstract  JmolAdapter.AtomIterator getAtomIterator(java.lang.Object clientFile)
          Get an AtomIterator for retrieval of all atoms in the file.
 java.lang.String getAtomSetCollectionName(java.lang.Object clientFile)
          Get the name of the atom set collection, if known.
 java.util.Properties getAtomSetCollectionProperties(java.lang.Object clientFile)
          Get the properties for this atomSetCollection.
 int getAtomSetCount(java.lang.Object clientFile)
          Get number of atomSets in the file.
 java.lang.String getAtomSetName(java.lang.Object clientFile, int atomSetIndex)
          Get the name of an atomSet.
 int getAtomSetNumber(java.lang.Object clientFile, int atomSetIndex)
          Get the number identifying each atomSet.
 java.util.Properties getAtomSetProperties(java.lang.Object clientFile, int atomSetIndex)
          Get the properties for an atomSet.
 JmolAdapter.BondIterator getBondIterator(java.lang.Object clientFile)
          Get a BondIterator for retrieval of all bonds in the file.
 java.lang.String getClientAtomStringProperty(java.lang.Object clientAtom, java.lang.String propertyName)
          Get a property from a clientAtom.
abstract  int getEstimatedAtomCount(java.lang.Object clientFile)
          Get the estimated number of atoms contained in the file.
 java.lang.String getFileTypeName(java.lang.Object clientFile)
          Get the type of this file or molecular model, if known.
 float[] getNotionalUnitcell(java.lang.Object clientFile)
          Get the notional unit cell.
 float[] getPdbScaleMatrix(java.lang.Object clientFile)
          Get the PDB scale matrix.
 float[] getPdbScaleTranslate(java.lang.Object clientFile)
          Get the PDB scale translation vector.
 JmolAdapter.StructureIterator getStructureIterator(java.lang.Object clientFile)
          Get a StructureIterator.
 java.lang.Object openBufferedReader(java.lang.String name, java.io.BufferedReader bufferedReader)
          Associate a clientFile object with a bufferedReader.
 java.lang.Object openBufferedReader(java.lang.String name, java.io.BufferedReader bufferedReader, JmolAdapter.Logger logger)
           
 java.lang.Object openBufferedReaders(java.lang.String[] name, java.io.BufferedReader[] bufferedReader)
          Associate a clientFile object with an array of BufferedReader.
 java.lang.Object openBufferedReaders(java.lang.String[] name, java.io.BufferedReader[] bufferedReader, JmolAdapter.Logger logger)
           
 java.lang.Object openDOMReader(java.lang.Object DOMNode)
           
 java.lang.Object openDOMReader(java.lang.Object DOMNode, JmolAdapter.Logger logger)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ORDER_COVALENT_SINGLE

public static final short ORDER_COVALENT_SINGLE
See Also:
Constant Field Values

ORDER_COVALENT_DOUBLE

public static final short ORDER_COVALENT_DOUBLE
See Also:
Constant Field Values

ORDER_COVALENT_TRIPLE

public static final short ORDER_COVALENT_TRIPLE
See Also:
Constant Field Values

ORDER_AROMATIC

public static final short ORDER_AROMATIC
See Also:
Constant Field Values

ORDER_HBOND

public static final short ORDER_HBOND
See Also:
Constant Field Values

ORDER_STEREO_NEAR

public static final short ORDER_STEREO_NEAR
See Also:
Constant Field Values

ORDER_STEREO_FAR

public static final short ORDER_STEREO_FAR
See Also:
Constant Field Values

ORDER_PARTIAL01

public static final short ORDER_PARTIAL01
See Also:
Constant Field Values

ORDER_PARTIAL12

public static final short ORDER_PARTIAL12
See Also:
Constant Field Values

logger

public JmolAdapter.Logger logger
Constructor Detail

JmolAdapter

public JmolAdapter(java.lang.String adapterName,
                   JmolAdapter.Logger logger)
Method Detail

openBufferedReader

public java.lang.Object openBufferedReader(java.lang.String name,
                                           java.io.BufferedReader bufferedReader)
Associate a clientFile object with a bufferedReader.

Given the BufferedReader, return an object which represents the file contents. The parameter name is assumed to be the file name or URL which is the source of reader. Note that this 'file' may have been automatically decompressed. Also note that the name may be 'String', representing a string constant. Therefore, few assumptions should be made about the name parameter. The return value is an object which represents a clientFile. This clientFile will be passed back in to other methods. If the return value is instanceof String then it is considered an error condition and the returned String is the error message.

Parameters:
name - File name, String or URL acting as the source of the reader
bufferedReader - The BufferedReader
Returns:
The clientFile or String with an error message

openBufferedReader

public java.lang.Object openBufferedReader(java.lang.String name,
                                           java.io.BufferedReader bufferedReader,
                                           JmolAdapter.Logger logger)
Parameters:
name - File name, String or URL acting as the source of the reader
bufferedReader - The BufferedReader
logger - The logger
Returns:
The clientFile or String with an error message
See Also:
openBufferedReader(String, BufferedReader)

openBufferedReaders

public java.lang.Object openBufferedReaders(java.lang.String[] name,
                                            java.io.BufferedReader[] bufferedReader)
Associate a clientFile object with an array of BufferedReader.

Given the array of BufferedReader, return an object which represents the concatenation of every file contents. The parameter name is assumed to be the file names or URL which are the source of each reader. Note that each of this 'file' may have been automatically decompressed. Also note that the name may be 'String', representing a string constant. Therefore, few assumptions should be made about the name parameter. The return value is an object which represents a clientFile. This clientFile will be passed back in to other methods. If the return value is instanceof String then it is considered an error condition and the returned String is the error message.

Parameters:
name - File names, String or URL acting as the source of each reader
bufferedReader - The array of BufferedReader
Returns:
The clientFile or String with an error message

openBufferedReaders

public java.lang.Object openBufferedReaders(java.lang.String[] name,
                                            java.io.BufferedReader[] bufferedReader,
                                            JmolAdapter.Logger logger)
Parameters:
name - File names, String or URL acting as the source of each reader
bufferedReader - The array of BufferedReader
logger - The logger
Returns:
The clientFile or String with an error message
See Also:
openBufferedReaders(String[], BufferedReader[])

openDOMReader

public java.lang.Object openDOMReader(java.lang.Object DOMNode)

openDOMReader

public java.lang.Object openDOMReader(java.lang.Object DOMNode,
                                      JmolAdapter.Logger logger)

finish

public void finish(java.lang.Object clientFile)

getFileTypeName

public java.lang.String getFileTypeName(java.lang.Object clientFile)
Get the type of this file or molecular model, if known.

Parameters:
clientFile - The client file
Returns:
The type of this file or molecular model, default "unknown"

getAtomSetCollectionName

public java.lang.String getAtomSetCollectionName(java.lang.Object clientFile)
Get the name of the atom set collection, if known.

Some file formats contain a formal name of the molecule in the file. If this method returns null then the JmolViewer will automatically supply the file/URL name as a default.

Parameters:
clientFile -
Returns:
The atom set collection name or null

getAtomSetCollectionProperties

public java.util.Properties getAtomSetCollectionProperties(java.lang.Object clientFile)
Get the properties for this atomSetCollection.

Not yet implemented everywhere, it is in the smarterJmolAdapter

Parameters:
clientFile - The client file
Returns:
The properties for this atomSetCollection or null

getAtomSetCount

public int getAtomSetCount(java.lang.Object clientFile)
Get number of atomSets in the file.

NOTE WARNING:
Not yet implemented everywhere, it is in the smarterJmolAdapter

Parameters:
clientFile - The client file
Returns:
The number of atomSets in the file, default 1

getAtomSetNumber

public int getAtomSetNumber(java.lang.Object clientFile,
                            int atomSetIndex)
Get the number identifying each atomSet.

For a PDB file, this is is the model number. For others it is a 1-based atomSet number.

Note that this is not currently implemented in PdbReader

Parameters:
clientFile - The client file
atomSetIndex - The atom set's index for which to get the atom set number
Returns:
The number identifying each atom set, default atomSetIndex+1.

getAtomSetName

public java.lang.String getAtomSetName(java.lang.Object clientFile,
                                       int atomSetIndex)
Get the name of an atomSet.

Parameters:
clientFile - The client file
atomSetIndex - The atom set index
Returns:
The name of the atom set, default the string representation of atomSetIndex

getAtomSetProperties

public java.util.Properties getAtomSetProperties(java.lang.Object clientFile,
                                                 int atomSetIndex)
Get the properties for an atomSet.

Parameters:
clientFile - The client file
atomSetIndex - The atom set index
Returns:
The properties for an atom set or null

getEstimatedAtomCount

public abstract int getEstimatedAtomCount(java.lang.Object clientFile)
Get the estimated number of atoms contained in the file.

Just return -1 if you don't know (or don't want to figure it out)

Parameters:
clientFile - The client file
Returns:
The estimated number of atoms in the file

coordinatesAreFractional

public boolean coordinatesAreFractional(java.lang.Object clientFile)
Get the boolean whether coordinates are fractional.

Parameters:
clientFile - The client file
Returns:
true if the coordinates are fractional, default false

getNotionalUnitcell

public float[] getNotionalUnitcell(java.lang.Object clientFile)
Get the notional unit cell.

This method returns the parameters that define a crystal unitcell the parameters are returned in a float[] in the following order a, b, c, alpha, beta, gamma
a, b, c : angstroms
alpha, beta, gamma : degrees
if there is no unit cell data then return null

Parameters:
clientFile - The client file
Returns:
The array of the values or null

getPdbScaleMatrix

public float[] getPdbScaleMatrix(java.lang.Object clientFile)
Get the PDB scale matrix.

Does not seem to be overriden by any descendent

Parameters:
clientFile - The client file
Returns:
The array of 9 floats for the matrix or null

getPdbScaleTranslate

public float[] getPdbScaleTranslate(java.lang.Object clientFile)
Get the PDB scale translation vector.

Does not seem to be overriden by any descendent

Parameters:
clientFile - The client file
Returns:
The x, y and z translation values or null

getClientAtomStringProperty

public java.lang.String getClientAtomStringProperty(java.lang.Object clientAtom,
                                                    java.lang.String propertyName)
Get a property from a clientAtom.

Parameters:
clientAtom - The clientAtom
propertyName - the key of the property
Returns:
The value of the property

getAtomIterator

public abstract JmolAdapter.AtomIterator getAtomIterator(java.lang.Object clientFile)
Get an AtomIterator for retrieval of all atoms in the file.

This method may not return null.

Parameters:
clientFile - The client file
Returns:
An AtomIterator
See Also:
JmolAdapter.AtomIterator

getBondIterator

public JmolAdapter.BondIterator getBondIterator(java.lang.Object clientFile)
Get a BondIterator for retrieval of all bonds in the file.

If this method returns null and no bonds are defined then the JmolViewer will automatically apply its rebonding code to build bonds between atoms.

Parameters:
clientFile - The client file
Returns:
A BondIterator or null
See Also:
JmolAdapter.BondIterator

getStructureIterator

public JmolAdapter.StructureIterator getStructureIterator(java.lang.Object clientFile)
Get a StructureIterator.

Parameters:
clientFile - The client file
Returns:
A StructureIterator or null

canonizeAlphaDigit

public static final char canonizeAlphaDigit(char ch)

canonizeChainID

public static final char canonizeChainID(char chainID)

canonizeInsertionCode

public static final char canonizeInsertionCode(char insertionCode)

canonizeAlternateLocationID

public static final char canonizeAlternateLocationID(char altLoc)