Class AtomCache
java.lang.Object
org.biojava.nbio.structure.align.util.AtomCache
A utility class that provides easy access to Structure objects. If you are running a script that is frequently
 re-using the same PDB structures, the AtomCache keeps an in-memory cache of the files for quicker access. The cache
 is a soft-cache, this means it won't cause out of memory exceptions, but garbage collects the data if the Java
 virtual machine needs to free up space. The AtomCache is thread-safe.
- Since:
 - 3.0
 - Author:
 - Andreas Prlic, Spencer Bliven, Peter Rose
 
- 
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringprotected FileParsingParametersstatic final Stringprotected PDPProviderstatic final String - 
Constructor Summary
ConstructorsConstructorDescriptionDefault AtomCache constructor.Creates an instance of an AtomCache that is pointed to the a particular path in the file system.Deprecated.isSplit parameter is ignored (4.0.0)Creates an instance of an AtomCache that is pointed to the a particular path in the file system.Deprecated.isSplit parameter is ignored (4.0.0)AtomCache(UserConfiguration config) Creates a new AtomCache object based on the provided UserConfiguration. - 
Method Summary
Modifier and TypeMethodDescriptionprotected voidflagLoading(String name) protected voidflagLoadingFinished(String name) Atom[]Returns the CA atoms for the provided name.Atom[]getAtoms(StructureIdentifier name) getBiologicalAssembly(String pdbId) Loads the default biological unit (e.g.getBiologicalAssembly(String pdbId, int bioAssemblyId) Loads the default biological unit (e.g.getBiologicalAssembly(String pdbId, int bioAssemblyId, boolean bioAssemblyFallback) Loads the biological assembly for a given PDB ID and bioAssemblyId.getBiologicalUnit(String pdbId) Deprecated.Renamed togetBiologicalAssembly(String)in 4.2Returns the path that contains the caching file for utility data, such as domain definitions.Get the behavior for fetching files from the serverReturns how this instance deals with obsolete entries.getPath()Get the path that is used to cache PDB files.Atom[]getRepresentativeAtoms(String name) Returns the representative atoms for the provided name.Atom[]getStructure(String name) Request a Structure based on a name.getStructure(StructureIdentifier strucId) Get the structure corresponding to the givenStructureIdentifier.getStructureForCathDomain(StructureName structureName) Returns aStructurecorresponding to the CATH identifier supplied instructureName, using the theCathDatabaseatCathFactory.getCathDatabase().getStructureForCathDomain(StructureName structureName, CathDatabase cathInstall) Returns aStructurecorresponding to the CATH identifier supplied instructureName, using the specifiedCathDatabase.getStructureForDomain(String scopId) Returns the representation of aScopDomainas a BioJavaStructureobject.getStructureForDomain(String scopId, ScopDatabase scopDatabase) Returns the representation of aScopDomainas a BioJavaStructureobject.getStructureForDomain(ScopDomain domain) Returns the representation of aScopDomainas a BioJavaStructureobject.getStructureForDomain(ScopDomain domain, ScopDatabase scopDatabase) Returns the representation of aScopDomainas a BioJavaStructureobject.getStructureForDomain(ScopDomain domain, ScopDatabase scopDatabase, boolean strictLigandHandling) Returns the representation of aScopDomainas a BioJavaStructureobject.getStructureForPdbId(String pdbId) Loads a structure directly by PDB IDbooleanDeprecated.booleanDeprecated.UseFileParsingParameters#getObsoleteBehavior()instead (4.0.0)booleanDeprecated.UseFileParsingParameters#getObsoleteBehavior()instead (4.0.0)booleanDeprecated.since 4.2booleanprotected Structureprotected StructurevoidSend a signal to the cache that the system is shutting down.voidsetAutoFetch(boolean autoFetch) Deprecated.voidsetCachePath(String cachePath) set the location at which utility data should be cached.voidsetFetchBehavior(LocalPDBDirectory.FetchBehavior fetchBehavior) Set the behavior for fetching files from the servervoidsetFetchCurrent(boolean fetchNewestCurrent) Deprecated.UseFileParsingParameters#setObsoleteBehavior()instead (4.0.0)voidsetFetchFileEvenIfObsolete(boolean fetchFileEvenIfObsolete) Deprecated.UseFileParsingParameters#setObsoleteBehavior()instead (4.0.0)voidvoid[Optional] This method changes the behavior when obsolete entries are requested.voidSet the path that is used to cache PDB files.voidsetPdpprovider(PDPProvider pdpprovider) voidsetStrictSCOP(boolean ignored) Deprecated.Removed in 4.2.0voidsetUseMmCif(boolean useMmCif)  
- 
Field Details
- 
BIOL_ASSEMBLY_IDENTIFIER
- See Also:
 
 - 
CHAIN_NR_SYMBOL
- See Also:
 
 - 
CHAIN_SPLIT_SYMBOL
- See Also:
 
 - 
PDP_DOMAIN_IDENTIFIER
- See Also:
 
 - 
UNDERSCORE
- See Also:
 
 - 
params
 - 
pdpprovider
 
 - 
 - 
Constructor Details
- 
AtomCache
public AtomCache()Default AtomCache constructor. Usually stores files in a temp directory, but this can be overriden by setting the PDB_DIR variable at runtime.- See Also:
 
 - 
AtomCache
Creates an instance of an AtomCache that is pointed to the a particular path in the file system. It will use the same value for pdbFilePath and cachePath.- Parameters:
 pdbFilePath- a directory in the file system to use as a location to cache files.
 - 
AtomCache
Creates an instance of an AtomCache that is pointed to the a particular path in the file system.- Parameters:
 pdbFilePath- a directory in the file system to use as a location to cache files.cachePath-
 - 
AtomCache
Deprecated.isSplit parameter is ignored (4.0.0)- Parameters:
 isSplit- Ignored
 - 
AtomCache
Deprecated.isSplit parameter is ignored (4.0.0)- Parameters:
 isSplit- Ignored
 - 
AtomCache
Creates a new AtomCache object based on the provided UserConfiguration.- Parameters:
 config- the UserConfiguration to use for this cache.
 
 - 
 - 
Method Details
- 
getAtoms
Returns the CA atoms for the provided name. SeegetStructure(String)for supported naming conventions.This method only works with protein chains. Use
getRepresentativeAtoms(String)for a more general solution.- Parameters:
 name-- Returns:
 - an array of Atoms.
 - Throws:
 IOExceptionStructureException
 - 
getAtoms
- Throws:
 IOExceptionStructureException
 - 
getRepresentativeAtoms
Returns the representative atoms for the provided name. SeegetStructure(String)for supported naming conventions.- Parameters:
 name-- Returns:
 - an array of Atoms.
 - Throws:
 IOExceptionStructureException
 - 
getRepresentativeAtoms
public Atom[] getRepresentativeAtoms(StructureIdentifier name) throws IOException, StructureException - Throws:
 IOExceptionStructureException
 - 
getBiologicalAssembly
public Structure getBiologicalAssembly(String pdbId, int bioAssemblyId, boolean bioAssemblyFallback) throws StructureException, IOException Loads the biological assembly for a given PDB ID and bioAssemblyId. If a bioAssemblyId > 0 is specified, the corresponding biological assembly file will be loaded. Note, the number of available biological unit files varies. Many entries don't have a biological assembly specified (i.e. NMR structures), many entries have only one biological assembly (bioAssemblyId=1), and a few structures have multiple biological assemblies. Set bioAssemblyFallback to true, to download the original PDB file in cases that a biological assembly file is not available.- Parameters:
 pdbId- the PDB IDbioAssemblyId- the 1-based index of the biological assembly (0 gets the asymmetric unit)bioAssemblyFallback- if true, try reading original PDB file in case the biological assembly file is not available- Returns:
 - a structure object
 - Throws:
 IOExceptionStructureException- Since:
 - 3.2
 
 - 
getBiologicalAssembly
Loads the default biological unit (e.g. *.pdb1.gz). If it is not available, the asymmetric unit will be loaded, i.e. for NMR structures.Biological assemblies can also be accessed using getStructure("BIO:[pdbId]")
- Parameters:
 pdbId- the PDB ID- Returns:
 - a structure object
 - Throws:
 IOExceptionStructureException- Since:
 - 4.2
 
 - 
getBiologicalUnit
Deprecated.Renamed togetBiologicalAssembly(String)in 4.2Loads the default biological unit (e.g. *.pdb1.gz). If it is not available, the asymmetric unit will be loaded, i.e. for NMR structures.- Parameters:
 pdbId- the PDB ID- Returns:
 - a structure object
 - Throws:
 IOExceptionStructureException- Since:
 - 3.2
 
 - 
getBiologicalAssembly
public Structure getBiologicalAssembly(String pdbId, int bioAssemblyId) throws StructureException, IOException Loads the default biological unit (e.g. *.pdb1.gz). If it is not available, the asymmetric unit will be loaded, i.e. for NMR structures.- Parameters:
 pdbId- the PDB IDbioAssemblyId- the 1-based index of the biological assembly (0 gets the asymmetric unit)- Returns:
 - a structure object
 - Throws:
 IOExceptionStructureException- Since:
 - 4.2
 
 - 
getCachePath
Returns the path that contains the caching file for utility data, such as domain definitions.- Returns:
 
 - 
getFileParsingParams
 - 
getPath
Get the path that is used to cache PDB files.- Returns:
 - path to a directory
 
 - 
getPdpprovider
 - 
getStructure
Request a Structure based on a name.Formal specification for how to specify the name: name := pdbID | pdbID '.' chainID | pdbID '.' range | scopID range := '('? range (',' range)? ')'? | chainID | chainID '_' resNum '-' resNum pdbID := [0-9][a-zA-Z0-9]{3} chainID := [a-zA-Z0-9] scopID := 'd' pdbID [a-z_][0-9_] resNum := [-+]?[0-9]+[A-Za-z]? Example structures: 1TIM #whole structure 4HHB.C #single chain 4GCR.A_1-83 #one domain, by residue number 3AA0.A,B #two chains treated as one structure d2bq6a1 #scop domainWith the additional set of rules:- If only a PDB code is provided, the whole structure will be return including ligands, but the first model only (for NMR).
 - Chain IDs are case sensitive, PDB ids are not. To specify a particular chain write as: 4hhb.A or 4HHB.A
 - To specify a SCOP domain write a scopId e.g. d2bq6a1. Some flexibility can be allowed in SCOP domain names,
 see 
setStrictSCOP(boolean) - URLs are accepted as well
 
Note that this method should not be used in StructureIdentifier implementations to avoid circular calls.
- Parameters:
 name-- Returns:
 - a Structure object, or null if name appears improperly formated (eg too short, etc)
 - Throws:
 IOException- The PDB file cannot be cached due to IO errorsStructureException- The name appeared valid but did not correspond to a structure. Also thrown by some submethods upon errors, eg for poorly formatted subranges.
 - 
getStructure
Get the structure corresponding to the givenStructureIdentifier. Equivalent to callingStructureIdentifier.loadStructure(AtomCache)followed byStructureIdentifier.reduce(Structure).Note that this method should not be used in StructureIdentifier implementations to avoid circular calls.
- Parameters:
 strucId-- Returns:
 - Throws:
 IOExceptionStructureException
 - 
getStructureForDomain
Returns the representation of aScopDomainas a BioJavaStructureobject.- Parameters:
 domain- a SCOP domain- Returns:
 - a Structure object
 - Throws:
 IOExceptionStructureException
 - 
getStructureForDomain
public Structure getStructureForDomain(ScopDomain domain, ScopDatabase scopDatabase) throws IOException, StructureException Returns the representation of aScopDomainas a BioJavaStructureobject.- Parameters:
 domain- a SCOP domainscopDatabase- AScopDatabaseto use- Returns:
 - a Structure object
 - Throws:
 IOExceptionStructureException
 - 
getStructureForDomain
public Structure getStructureForDomain(ScopDomain domain, ScopDatabase scopDatabase, boolean strictLigandHandling) throws IOException, StructureException Returns the representation of aScopDomainas a BioJavaStructureobject.- Parameters:
 domain- a SCOP domainscopDatabase- AScopDatabaseto usestrictLigandHandling- If set to false, hetero-atoms are included if and only if they belong to a chain to which the SCOP domain belongs; if set to true, hetero-atoms are included if and only if they are strictly within the definition (residue numbers) of the SCOP domain- Returns:
 - a Structure object
 - Throws:
 IOExceptionStructureException
 - 
getStructureForDomain
Returns the representation of aScopDomainas a BioJavaStructureobject.- Parameters:
 scopId- a SCOP Id- Returns:
 - a Structure object
 - Throws:
 IOExceptionStructureException
 - 
getStructureForDomain
public Structure getStructureForDomain(String scopId, ScopDatabase scopDatabase) throws IOException, StructureException Returns the representation of aScopDomainas a BioJavaStructureobject.- Parameters:
 scopId- a SCOP IdscopDatabase- AScopDatabaseto use- Returns:
 - a Structure object
 - Throws:
 IOExceptionStructureException
 - 
isAutoFetch
Deprecated.Does the cache automatically download files that are missing from the local installation from the PDB FTP site?- Returns:
 - flag
 
 - 
isFetchCurrent
Deprecated.UseFileParsingParameters#getObsoleteBehavior()instead (4.0.0)N.B. This feature won't work unless the structure wasn't found & autoFetch is set totrue.- Returns:
 - the fetchCurrent
 
 - 
isFetchFileEvenIfObsolete
Deprecated.UseFileParsingParameters#getObsoleteBehavior()instead (4.0.0)forces the cache to fetch the file if its status is OBSOLETE. This feature has a higher priority thansetFetchCurrent(boolean).
N.B. This feature won't work unless the structure wasn't found & autoFetch is set totrue.- Returns:
 - the fetchFileEvenIfObsolete
 - Since:
 - 3.0.2
 - See Also:
 - 
#fetchCurrent
 
 - 
isStrictSCOP
Deprecated.since 4.2Scop handling was changed in 4.2.0. For behaviour equivalent to strictSCOP==true, useScopDatabase.getDomainByScopID(String). For strictSCOP==False, create aStructureNameor useStructureName.guessScopDomain(String, ScopDatabase)explicitely.- Returns:
 - false; ignored
 
 - 
notifyShutdown
public void notifyShutdown()Send a signal to the cache that the system is shutting down. Notifies underlying SerializableCache instances to flush themselves... - 
setAutoFetch
Deprecated.Does the cache automatically download files that are missing from the local installation from the PDB FTP site?- Parameters:
 autoFetch- flag
 - 
setCachePath
set the location at which utility data should be cached.- Parameters:
 cachePath-
 - 
setFetchCurrent
Deprecated.UseFileParsingParameters#setObsoleteBehavior()instead (4.0.0)if enabled, the reader searches for the newest possible PDB ID, if not present in he local installation. ThesetFetchFileEvenIfObsolete(boolean)function has a higher priority than this function.
N.B. This feature won't work unless the structure wasn't found & autoFetch is set totrue.- Parameters:
 fetchCurrent- the fetchCurrent to set- Since:
 - 3.0.2
 - See Also:
 
 - 
setFetchFileEvenIfObsolete
Deprecated.UseFileParsingParameters#setObsoleteBehavior()instead (4.0.0)N.B. This feature won't work unless the structure wasn't found & autoFetch is set totrue.- Parameters:
 fetchFileEvenIfObsolete- the fetchFileEvenIfObsolete to set
 - 
setFileParsingParams
 - 
setObsoleteBehavior
[Optional] This method changes the behavior when obsolete entries are requested. Current behaviors are:THROW_EXCEPTIONThrow aStructureException(the default)FETCH_OBSOLETELoad the requested ID from the PDB's obsolete repositoryFETCH_CURRENTLoad the most recent version of the requested structureThis setting may be silently ignored by implementations which do not have access to the server to determine whether an entry is obsolete, such as if
isAutoFetch()is false. Note that an obsolete entry may still be returned even this is FETCH_CURRENT if the entry is found locally.
- Parameters:
 fetchFileEvenIfObsolete- Whether to fetch obsolete records- Since:
 - 4.0.0
 - See Also:
 
 - 
getObsoleteBehavior
Returns how this instance deals with obsolete entries. Note that this setting may be ignored by some implementations or in some situations, such as whenisAutoFetch()is false.For most implementations, the default value is
THROW_EXCEPTION.- Returns:
 - The ObsoleteBehavior
 - Since:
 - 4.0.0
 
 - 
getFetchBehavior
Get the behavior for fetching files from the server- Returns:
 
 - 
setFetchBehavior
Set the behavior for fetching files from the server- Parameters:
 fetchBehavior-
 - 
setPath
Set the path that is used to cache PDB files.- Parameters:
 path- to a directory
 - 
setPdpprovider
 - 
setStrictSCOP
Deprecated.Removed in 4.2.0This method does nothing. Scop handling was changed in 4.2.0. For behaviour equivalent to strictSCOP==true, useScopDatabase.getDomainByScopID(String). For strictSCOP==False, create aStructureNameor useStructureName.guessScopDomain(String, ScopDatabase)explicitely.- Parameters:
 strictSCOP- Ignored
 - 
isUseMmCif
public boolean isUseMmCif()- Returns:
 - the useMmCif
 
 - 
setUseMmCif
public void setUseMmCif(boolean useMmCif) - Parameters:
 useMmCif- the useMmCif to set
 - 
getStructureForCathDomain
public Structure getStructureForCathDomain(StructureName structureName) throws IOException, StructureException Returns aStructurecorresponding to the CATH identifier supplied instructureName, using the theCathDatabaseatCathFactory.getCathDatabase().- Throws:
 IOExceptionStructureException
 - 
getStructureForCathDomain
public Structure getStructureForCathDomain(StructureName structureName, CathDatabase cathInstall) throws IOException, StructureException Returns aStructurecorresponding to the CATH identifier supplied instructureName, using the specifiedCathDatabase.- Throws:
 IOExceptionStructureException
 - 
flagLoading
 - 
flagLoadingFinished
 - 
getStructureForPdbId
Loads a structure directly by PDB ID- Parameters:
 pdbId-- Returns:
 - Throws:
 IOExceptionStructureException
 - 
loadStructureFromCifByPdbId
protected Structure loadStructureFromCifByPdbId(String pdbId) throws IOException, StructureException - Throws:
 IOExceptionStructureException
 - 
loadStructureFromPdbByPdbId
protected Structure loadStructureFromPdbByPdbId(String pdbId) throws IOException, StructureException - Throws:
 IOExceptionStructureException
 
 -