Skip to content
Snippets Groups Projects
Commit 2ba0249e authored by marco's avatar marco
Browse files

add repository class

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1955 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 3b25ac16
No related branches found
No related tags found
No related merge requests found
......@@ -10,6 +10,7 @@ endif()
set(OST_IO_PYMOD_MODULES
__init__.py
hhsearch.py
repository.py
)
......
import os.path
import string
import os
from ost import io
class ModelRepository:
"""
Model repository. A model repository abstracts the way that PDB files are
loaded. Instead of explicitly specifying the PDB filename, only the PDB
id (and optionally a chain) needs to be specified. The actual files are then
resolved by the repository.
Usage
-----
The usage pattern of the model repository is simple. After construction,
models may be loaded by passing in a model id and optionally a number of
chain names (see documentation for io.LoadPDB).
Example:
import string
repos=repository.ModelRepository('path_to_pdbs',
file_pattern='pdb%(id)s.ent.gz',
transform=string.lower)
# load 1ake (note that the name is transformed by string.lower)
m=repos.Load('1AKE')
"""
def __init__(self, directory=None,
file_pattern='%(id)s.pdb',transform=str):
"""
Construct new model repository
"""
if directory==None:
self.directory_=os.getenv('PDB_PATH', '')
else:
self.directory_=directory;
self.file_pattern_=file_pattern
self.transform_=transform or string.__init__
def FilenameForModel(self, pdb_id, chain):
pdb_id=self.transform_(pdb_id)
basename=self.file_pattern_ % {'id' : pdb_id, 'chain' :chain, 'dir' : pdb_id[1:3]}
return os.path.join(self.directory_, basename)
def Load(self, pdb_id, chains=""):
return io.LoadPDB(self.FilenameForModel(pdb_id, chains),
chains)
def LoadMulti(self, pdb_id, chains=""):
return io.LoadMultiPDB(self.FilenameForModel(pdb_id, chains))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment