org.jmol.adapter.readers.cifpdb

Class CifReader

public class CifReader extends AtomSetCollectionReader

A true line-free CIF file reader for CIF and mmCIF files.

http://www.iucr.org/iucr-top/cif/ http://www.iucr.org/iucr-top/cif/standard/cifstd5.html

Author: Miguel, Egon, and Bob (hansonr@stolaf.edu) symmetry added by Bob Hanson: setSpaceGroupName() setSymmetryOperator() setUnitCellItem() setFractionalCoordinates() setAtomCoord() applySymmetry()

Nested Class Summary
classCifReader.RidiculousFileFormatTokenizer
A special tokenizer class for dealing with quoted strings in CIF files.
Field Summary
static byteADP_TYPE
static byteALT_ID
static byteANISO_B11
static byteANISO_B12
static byteANISO_B13
static byteANISO_B22
static byteANISO_B23
static byteANISO_B33
static byteANISO_Beta_11
static byteANISO_Beta_12
static byteANISO_Beta_13
static byteANISO_Beta_22
static byteANISO_Beta_23
static byteANISO_Beta_33
static byteANISO_LABEL
static byteANISO_MMCIF_U11
static byteANISO_MMCIF_U12
static byteANISO_MMCIF_U13
static byteANISO_MMCIF_U22
static byteANISO_MMCIF_U23
static byteANISO_MMCIF_U33
static byteANISO_U11
static byteANISO_U12
static byteANISO_U13
static byteANISO_U22
static byteANISO_U23
static byteANISO_U33
static byteASYM_ID
static byteATOM_TYPE_OXIDATION_NUMBER
static byteATOM_TYPE_SYMBOL
static byteAUTH_ATOM
static String[]atomFields
static String[]atomTypeFields
HashtableatomTypes
static byteBEG_ASYM_ID
static byteBEG_INS_CODE
static byteBEG_SEQ_ID
static byteB_ISO
static String[]cellParamNames
static String[]chemCompFields
StringchemicalName
static byteCARTN_X
static byteCARTN_Y
static byteCARTN_Z
static byteCHEM_COMP_ID
static byteCHEM_COMP_NAME
static byteCOMP_ID
static byteCONF_TYPE_ID
Stringdata
static byteDISORDER_GROUP
static byteDUMMY_ATOM
static byteEND_ASYM_ID
static byteEND_INS_CODE
static byteEND_SEQ_ID
Stringfield
intfieldCount
byte[]fieldOf
charfirstChar
static byteFRACT_X
static byteFRACT_Y
static byteFRACT_Z
static String[]geomBondFields
static byteGEOM_BOND_ATOM_SITE_LABEL_1
static byteGEOM_BOND_ATOM_SITE_LABEL_2
static byteGEOM_BOND_SITE_SYMMETRY_2
static byteGROUP_PDB
String[]hetatmData
optional nonloop format -- see 1jsa.cif
HashtablehtHetero
HashtablehtSites
static byteINS_CODE
Stringkey
String[]loopData
static byteLABEL
static byteMODEL_NO
static String[]nonpolyFields
static byteNONE
static byteNONPOLY_COMP_ID
static byteNONPOLY_ENTITY_ID
static byteNONPOLY_NAME
static byteOCCUPANCY
intpropertyCount
int[]propertyOf
intsiteNum
static String[]structConfFields
static String[]structSheetRangeFields
static String[]structSiteRangeFields
static String[]symmetryOperationsFields
static byteSEQ_ID
static byteSITE_ASYM_ID
static byteSITE_COMP_ID
static byteSITE_ID
static byteSITE_INS_CODE
static byteSITE_SEQ_ID
static byteSYMOP_XYZ
static byteSYM_EQUIV_XYZ
StringthisDataSetName
StringthisFormula
StringthisStructuralFormula
CifReader.RidiculousFileFormatTokenizertokenizer
static String[]TransformFields
static byteTYPE_SYMBOL
static byteU_ISO_OR_EQUIV
Method Summary
voidaddHetero(String groupName, String hetName)
voiddisableField(int fieldIndex)
used for turning off fractional or nonfractional coord.
intfieldProperty(int i)
booleangetData()
static booleanisMatch(String str1, String str2)
voidparseLoopParameters(String[] fields)
sets up arrays and variables for tokenizer.getData()
booleanprocessAtomSiteLoopBlock()
reads atom data in any order
voidprocessAtomTypeLoopBlock()
reads the oxidation number and associates it with an atom name, which can then later be associated with the right atom indirectly.
voidprocessCellParameter()
unit cell parameters -- two options, so we use MOD 6
voidprocessChemCompLoopBlock()
a general name definition field.
voidprocessChemicalInfo(String type)
reads some of the more interesting info into specific atomSetAuxiliaryInfo elements
voidprocessDataParameter()
initialize a new atom set
voidprocessGeomBondLoopBlock()
reads bond data -- N_ijk symmetry business is ignored, so we only indicate bonds within the unit cell to just the original set of atoms.
voidprocessLoopBlock()
processes loop_ blocks of interest or skips the data
voidprocessNonpolyData()
voidprocessNonpolyLoopBlock()
a HETERO name definition field.
voidprocessStructConfLoopBlock()
identifies ranges for HELIX and TURN
voidprocessStructSheetRangeLoopBlock()
identifies sheet ranges
voidprocessStructSiteBlock()
identifies structure sites
voidprocessSymmetryOperationsLoopBlock()
retrieves symmetry operations
voidprocessSymmetrySpaceGroupName()
done by AtomSetCollectionReader
voidprocessUnitCellTransformMatrix()
the PDB transformation matrix cartesian --> fractional
AtomSetCollectionreadAtomSetCollection(BufferedReader reader)
voidskipLoop()
skips all associated loop data

Field Detail

ADP_TYPE

private static final byte ADP_TYPE

ALT_ID

private static final byte ALT_ID

ANISO_B11

private static final byte ANISO_B11

ANISO_B12

private static final byte ANISO_B12

ANISO_B13

private static final byte ANISO_B13

ANISO_B22

private static final byte ANISO_B22

ANISO_B23

private static final byte ANISO_B23

ANISO_B33

private static final byte ANISO_B33

ANISO_Beta_11

private static final byte ANISO_Beta_11

ANISO_Beta_12

private static final byte ANISO_Beta_12

ANISO_Beta_13

private static final byte ANISO_Beta_13

ANISO_Beta_22

private static final byte ANISO_Beta_22

ANISO_Beta_23

private static final byte ANISO_Beta_23

ANISO_Beta_33

private static final byte ANISO_Beta_33

ANISO_LABEL

private static final byte ANISO_LABEL

ANISO_MMCIF_U11

private static final byte ANISO_MMCIF_U11

ANISO_MMCIF_U12

private static final byte ANISO_MMCIF_U12

ANISO_MMCIF_U13

private static final byte ANISO_MMCIF_U13

ANISO_MMCIF_U22

private static final byte ANISO_MMCIF_U22

ANISO_MMCIF_U23

private static final byte ANISO_MMCIF_U23

ANISO_MMCIF_U33

private static final byte ANISO_MMCIF_U33

ANISO_U11

private static final byte ANISO_U11

ANISO_U12

private static final byte ANISO_U12

ANISO_U13

private static final byte ANISO_U13

ANISO_U22

private static final byte ANISO_U22

ANISO_U23

private static final byte ANISO_U23

ANISO_U33

private static final byte ANISO_U33

ASYM_ID

private static final byte ASYM_ID

ATOM_TYPE_OXIDATION_NUMBER

private static final byte ATOM_TYPE_OXIDATION_NUMBER

ATOM_TYPE_SYMBOL

private static final byte ATOM_TYPE_SYMBOL

AUTH_ATOM

private static final byte AUTH_ATOM

atomFields

private static final String[] atomFields

atomTypeFields

private static final String[] atomTypeFields

atomTypes

private Hashtable atomTypes

BEG_ASYM_ID

private static final byte BEG_ASYM_ID

BEG_INS_CODE

private static final byte BEG_INS_CODE

BEG_SEQ_ID

private static final byte BEG_SEQ_ID

B_ISO

private static final byte B_ISO

cellParamNames

public static final String[] cellParamNames

chemCompFields

private static final String[] chemCompFields

chemicalName

private String chemicalName

CARTN_X

private static final byte CARTN_X

CARTN_Y

private static final byte CARTN_Y

CARTN_Z

private static final byte CARTN_Z

CHEM_COMP_ID

private static final byte CHEM_COMP_ID

CHEM_COMP_NAME

private static final byte CHEM_COMP_NAME

COMP_ID

private static final byte COMP_ID

CONF_TYPE_ID

private static final byte CONF_TYPE_ID

data

private String data

DISORDER_GROUP

private static final byte DISORDER_GROUP

DUMMY_ATOM

private static final byte DUMMY_ATOM

END_ASYM_ID

private static final byte END_ASYM_ID

END_INS_CODE

private static final byte END_INS_CODE

END_SEQ_ID

private static final byte END_SEQ_ID

field

String field

fieldCount

int fieldCount

fieldOf

private byte[] fieldOf

firstChar

private char firstChar

FRACT_X

private static final byte FRACT_X

FRACT_Y

private static final byte FRACT_Y

FRACT_Z

private static final byte FRACT_Z

geomBondFields

private static final String[] geomBondFields

GEOM_BOND_ATOM_SITE_LABEL_1

private static final byte GEOM_BOND_ATOM_SITE_LABEL_1

GEOM_BOND_ATOM_SITE_LABEL_2

private static final byte GEOM_BOND_ATOM_SITE_LABEL_2

GEOM_BOND_SITE_SYMMETRY_2

private static final byte GEOM_BOND_SITE_SYMMETRY_2

GROUP_PDB

private static final byte GROUP_PDB

hetatmData

private String[] hetatmData
optional nonloop format -- see 1jsa.cif

htHetero

private Hashtable htHetero

htSites

private Hashtable htSites

INS_CODE

private static final byte INS_CODE

key

private String key

loopData

String[] loopData

LABEL

private static final byte LABEL

MODEL_NO

private static final byte MODEL_NO

nonpolyFields

private static final String[] nonpolyFields

NONE

private static final byte NONE

NONPOLY_COMP_ID

private static final byte NONPOLY_COMP_ID

NONPOLY_ENTITY_ID

private static final byte NONPOLY_ENTITY_ID

NONPOLY_NAME

private static final byte NONPOLY_NAME

OCCUPANCY

private static final byte OCCUPANCY

propertyCount

private int propertyCount

propertyOf

private int[] propertyOf

siteNum

private int siteNum

structConfFields

private static final String[] structConfFields

structSheetRangeFields

private static final String[] structSheetRangeFields

structSiteRangeFields

private static final String[] structSiteRangeFields

symmetryOperationsFields

private static final String[] symmetryOperationsFields

SEQ_ID

private static final byte SEQ_ID

SITE_ASYM_ID

private static final byte SITE_ASYM_ID

SITE_COMP_ID

private static final byte SITE_COMP_ID

SITE_ID

private static final byte SITE_ID

SITE_INS_CODE

private static final byte SITE_INS_CODE

SITE_SEQ_ID

private static final byte SITE_SEQ_ID

SYMOP_XYZ

private static final byte SYMOP_XYZ

SYM_EQUIV_XYZ

private static final byte SYM_EQUIV_XYZ

thisDataSetName

private String thisDataSetName

thisFormula

private String thisFormula

thisStructuralFormula

private String thisStructuralFormula

tokenizer

private CifReader.RidiculousFileFormatTokenizer tokenizer

TransformFields

private static final String[] TransformFields

TYPE_SYMBOL

private static final byte TYPE_SYMBOL

U_ISO_OR_EQUIV

private static final byte U_ISO_OR_EQUIV

Method Detail

addHetero

private void addHetero(String groupName, String hetName)

disableField

private void disableField(int fieldIndex)
used for turning off fractional or nonfractional coord.

Parameters: fieldIndex

fieldProperty

private int fieldProperty(int i)

getData

private boolean getData()

Returns: TRUE if data, even if ''; FALSE if '.' or '?' or eof.

Throws: Exception

isMatch

private static boolean isMatch(String str1, String str2)

Parameters: str1 str2

Returns: TRUE if a match

parseLoopParameters

private void parseLoopParameters(String[] fields)
sets up arrays and variables for tokenizer.getData()

Parameters: fields

Throws: Exception

processAtomSiteLoopBlock

boolean processAtomSiteLoopBlock()
reads atom data in any order

Returns: TRUE if successful; FALS if EOF encountered

Throws: Exception

processAtomTypeLoopBlock

private void processAtomTypeLoopBlock()
reads the oxidation number and associates it with an atom name, which can then later be associated with the right atom indirectly.

Throws: Exception

processCellParameter

private void processCellParameter()
unit cell parameters -- two options, so we use MOD 6

Throws: Exception

processChemCompLoopBlock

private void processChemCompLoopBlock()
a general name definition field. Not all hetero

Throws: Exception

processChemicalInfo

private void processChemicalInfo(String type)
reads some of the more interesting info into specific atomSetAuxiliaryInfo elements

Parameters: type "name" "formula" etc.

Throws: Exception

processDataParameter

private void processDataParameter()
initialize a new atom set

processGeomBondLoopBlock

private void processGeomBondLoopBlock()
reads bond data -- N_ijk symmetry business is ignored, so we only indicate bonds within the unit cell to just the original set of atoms. "connect" script or "set forceAutoBond" will override these values.

Throws: Exception

processLoopBlock

private void processLoopBlock()
processes loop_ blocks of interest or skips the data

Throws: Exception

processNonpolyData

private void processNonpolyData()

processNonpolyLoopBlock

private void processNonpolyLoopBlock()
a HETERO name definition field. Maybe not all hetero? nonpoly?

Throws: Exception

processStructConfLoopBlock

private void processStructConfLoopBlock()
identifies ranges for HELIX and TURN

Throws: Exception

processStructSheetRangeLoopBlock

private void processStructSheetRangeLoopBlock()
identifies sheet ranges

Throws: Exception

processStructSiteBlock

private void processStructSiteBlock()
identifies structure sites

Throws: Exception

processSymmetryOperationsLoopBlock

private void processSymmetryOperationsLoopBlock()
retrieves symmetry operations

Throws: Exception

processSymmetrySpaceGroupName

private void processSymmetrySpaceGroupName()
done by AtomSetCollectionReader

Throws: Exception

processUnitCellTransformMatrix

private void processUnitCellTransformMatrix()
the PDB transformation matrix cartesian --> fractional

Throws: Exception

readAtomSetCollection

public AtomSetCollection readAtomSetCollection(BufferedReader reader)

skipLoop

private void skipLoop()
skips all associated loop data

Throws: Exception