Package org.biojava.nbio.structure.io
Class LocalPDBDirectory
java.lang.Object
org.biojava.nbio.structure.io.LocalPDBDirectory
- All Implemented Interfaces:
 StructureIOFile,StructureProvider
- Direct Known Subclasses:
 MMCIFFileReader,PDBFileReader
Superclass for classes which download and interact with the PDB's FTP server,
 specifically 
PDBFileReader and MMCIFFileReader. The basic
 functionality of downloading structure files from the FTP site is gathered
 here, making the child classes responsible for only the specific paths and
 file formats needed.- Author:
 - Spencer Bliven
 
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumControls when the class should fetch files from the ftp serverstatic enumBehaviors for when an obsolete structure is requested. - 
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe default server name, prefixed by the protocol string (http:// or ftp://).static final longDate of the latest PDB file remediationprotected static final Stringstatic final longMinimum size for a valid structure file (CIF or PDB), in bytesstatic final String - 
Constructor Summary
ConstructorsConstructorDescriptionLocalPDBDirectory(String path) Subclasses should provide default and single-string constructors. - 
Method Summary
Modifier and TypeMethodDescriptionvoiddefine supported file extensions compressed extensions .Z,.gz do not need to be specified they are dealt with automatically.protected booleancheckFileExists(String pdbId) voidclear the supported file extensionsbooleandeleteStructure(String pdbId) Attempts to delete all versions of a structure from the local directory.protected FiledownloadStructure(String pdbId) Downloads an MMCIF file from the PDB to the local pathprotected FileGets the directory in which the file for a given MMCIF file would live, creating it if necessary.Returns a list of extensions supported by this classGet the behavior for fetching files from the serverprotected abstract StringgetFilename(String pdbId) Converts a PDB ID into a filename with the proper extensionGet the parameters that should be used for file parsingprotected InputStreamgetInputStream(String pdbId) Load or download the specified structure and return it as an InputStream for direct parsing.getLocalFile(String pdbId) Searches for previously downloaded filesReturns how this instance deals with obsolete entries.protected abstract String[]Location of obsolete files within the directory, as an array of paths.getPath()Returns the path value.static StringReturn the String with the PDB server name, including the leading protocol String (http:// or ftp://).protected abstract String[]Location of split files within the directory, as an array of paths.getStructure(File filename) Read file from File and returns a Structure object.abstract StructuregetStructure(InputStream inStream) Handles the actual parsing of the file into a Structure object.getStructure(String filename) Open filename and return a Structure object.getStructure(URL u) getStructureById(String pdbId) get the structure for a PDB IDprotected voidShould be called whenever any of the path variables change.booleanDeprecated.voidprefetchStructure(String pdbId) Download a structure, but don't parse it yet or store it in memory.voidsetAutoFetch(boolean autoFetch) Deprecated.Use#setFetchBehavior()voidsetFetchBehavior(LocalPDBDirectory.FetchBehavior fetchBehavior) Set the behavior for fetching files from the server.voidSet the parameters that should be used for file parsingvoid[Optional] This method changes the behavior when obsolete entries are requested.voidSets the path for the directory where PDB files are read/written 
- 
Field Details
- 
DEFAULT_PDB_FILE_SERVER
The default server name, prefixed by the protocol string (http:// or ftp://). Note that we don't support file stamp retrieving for ftp protocol, thus some of the fetch modes will not work properly with ftp protocol- See Also:
 
 - 
PDB_FILE_SERVER_PROPERTY
- See Also:
 
 - 
LAST_REMEDIATION_DATE
public static final long LAST_REMEDIATION_DATEDate of the latest PDB file remediation - 
lineSplit
 - 
MIN_PDB_FILE_SIZE
public static final long MIN_PDB_FILE_SIZEMinimum size for a valid structure file (CIF or PDB), in bytes- See Also:
 
 
 - 
 - 
Constructor Details
- 
LocalPDBDirectory
Subclasses should provide default and single-string constructors. They should useaddExtension(String)to add one or more extensions.If path is null, initialize using the system property/environment variable
UserConfiguration.PDB_DIR.- Parameters:
 path- Path to the PDB file directory
 - 
LocalPDBDirectory
public LocalPDBDirectory() 
 - 
 - 
Method Details
- 
setPath
Sets the path for the directory where PDB files are read/written - 
getPath
Returns the path value.- Returns:
 - a String representing the path value
 - See Also:
 
 - 
addExtension
define supported file extensions compressed extensions .Z,.gz do not need to be specified they are dealt with automatically.- Specified by:
 addExtensionin interfaceStructureIOFile- Parameters:
 s- a String ...
 - 
getExtensions
Description copied from interface:StructureIOFileReturns a list of extensions supported by this class- Specified by:
 getExtensionsin interfaceStructureIOFile- Returns:
 - a (potentially empty) list of strings
 
 - 
clearExtensions
public void clearExtensions()clear the supported file extensions - 
isAutoFetch
Deprecated. - 
setAutoFetch
Deprecated.Use#setFetchBehavior() - 
setFileParsingParameters
Description copied from interface:StructureProviderSet the parameters that should be used for file parsing- Specified by:
 setFileParsingParametersin interfaceStructureProvider- Parameters:
 params- FileParsingParameters
 - 
getFileParsingParameters
Description copied from interface:StructureProviderGet the parameters that should be used for file parsing- Specified by:
 getFileParsingParametersin interfaceStructureProvider- Returns:
 - the FileParsingParameters that are configuring the behavior of the parser
 
 - 
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:
 - 
#setFetchCurrent(boolean)
 
 - 
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. This replaces thesetAutoFetch(boolean)method with a more extensive set of options.- Parameters:
 fetchBehavior-
 - 
getStructure
Description copied from interface:StructureIOFileOpen filename and return a Structure object. Not to be confused withStructureProvider.getStructureById(String)- Specified by:
 getStructurein interfaceStructureIOFile- Parameters:
 filename- The path to the file. Must be the correct format for the implementing class.- Returns:
 - a Structure object
 - Throws:
 IOException- ...
 - 
getStructure
- Throws:
 IOException
 - 
getStructure
Description copied from interface:StructureIOFileRead file from File and returns a Structure object.- Specified by:
 getStructurein interfaceStructureIOFile- Parameters:
 filename- file containing the structure. Must be the correct format for the implementing class- Returns:
 - a Structure object
 - Throws:
 IOException- ...
 - 
getStructureById
Description copied from interface:StructureProviderget the structure for a PDB ID- Specified by:
 getStructureByIdin interfaceStructureProvider- Returns:
 - Throws:
 IOException
 - 
getStructure
Handles the actual parsing of the file into a Structure object.- Parameters:
 inStream-- Returns:
 - Throws:
 IOException
 - 
getInputStream
Load or download the specified structure and return it as an InputStream for direct parsing.- Parameters:
 pdbId-- Returns:
 - Throws:
 IOException
 - 
prefetchStructure
Download a structure, but don't parse it yet or store it in memory. Used to pre-fetch large numbers of structures.- Parameters:
 pdbId-- Throws:
 IOException
 - 
deleteStructure
Attempts to delete all versions of a structure from the local directory.- Parameters:
 pdbId-- Returns:
 - True if one or more files were deleted
 - Throws:
 IOException- if the file cannot be deleted
 - 
downloadStructure
Downloads an MMCIF file from the PDB to the local path- Parameters:
 pdbId-- Returns:
 - The file, or null if it was unavailable for download
 - Throws:
 IOException- for errors downloading or writing, or if the fetchBehavior isLocalPDBDirectory.FetchBehavior.LOCAL_ONLY
 - 
getDir
Gets the directory in which the file for a given MMCIF file would live, creating it if necessary. The obsolete parameter is necessary to avoid additional server queries.- Parameters:
 pdbId-obsolete- Whether the pdbId is obsolete or not- Returns:
 - File pointing to the directory,
 
 - 
getLocalFile
Searches for previously downloaded files- Parameters:
 pdbId-- Returns:
 - A file pointing to the existing file, or null if not found
 - Throws:
 IOException- If the file exists but is empty and can't be deleted
 - 
checkFileExists
 - 
getServerName
Return the String with the PDB server name, including the leading protocol String (http:// or ftp://). The server name will be by default the value "http://ftp.wwpdb.org" or the one read from system property "PDB.FILE.SERVER"- Returns:
 - the server name including the leading protocol string
 
 - 
initPaths
protected void initPaths()Should be called whenever any of the path variables change. Thus, ifgetSplitDirPath()orgetObsoleteDirPath()depend on anything, they should call this function when that thing changes (possibly including at the end of the constructor). - 
getFilename
Converts a PDB ID into a filename with the proper extension- Parameters:
 pdbId-- Returns:
 - The filename, e.g. "4hhb.pdb.gz"
 
 - 
getSplitDirPath
Location of split files within the directory, as an array of paths. These will be joined with either slashes (for the URL) or the file separator (for directories). The returned results should be constant, to allow for caching.- Returns:
 - A list of directories, relative to the /pub/pdb directory on the server
 
 - 
getObsoleteDirPath
Location of obsolete files within the directory, as an array of paths. These will be joined with either slashes (for the URL) or the file separator (for directories). The returned results should be constant, to allow for caching.- Returns:
 - A list of directories, relative to the /pub/pdb directory on the server
 
 
 - 
 
getFetchBehavior()