Source code for prody.apps.prody_apps.prody_fetch
"""Download PDB files for given identifiers."""
import os.path
from ..apptools import *
__all__ = ['prody_fetch']
[docs]def prody_fetch(*pdb, **kwargs):
"""Fetch PDB files from PDB FTP server.
:arg pdbs: PDB identifier(s) or filename(s)
:arg dir: target directory for saving PDB file(s), default is ``'.'``
:arg gzip: gzip fetched files or not, default is **True**"""
import prody
pdblist = pdb
if len(pdblist) == 1 and os.path.isfile(pdblist[0]):
from prody.utilities import openFile
with openFile(pdblist[0]) as inp:
for item in inp.read().strip().split():
for pdb in item.split(','):
if len(pdb) == 4 and pdb.isalnum():
pdblist.append(pdb)
prody.fetchPDB(*pdblist, folder=kwargs.get('folder', '.'),
compressed=kwargs.get('gzip', False),
copy=True)
def addCommand(commands):
subparser = commands.add_parser('fetch',
help='fetch a PDB file')
subparser.add_argument('--quiet', help="suppress info messages to stderr",
action=Quiet, nargs=0)
subparser.add_argument('--examples', action=UsageExample, nargs=0,
help='show usage examples and exit')
subparser.set_defaults(usage_example=
"""Download PDB file(s) by specifying identifiers:
$ prody fetch 1mkp 1p38""",
test_examples=[0]
)
subparser.add_argument('-d', '--dir', dest='folder', type=str,
default='.', metavar='PATH',
help=('target directory for saving PDB file(s)'))
subparser.add_argument('-z', '--gzip', dest='gzip', action='store_true',
default=False, help='write compressed PDB file(S)')
subparser.add_argument('pdb', nargs='+',
help='PDB identifier(s) or a file that contains them')
subparser.set_defaults(func=lambda ns: prody_fetch(*ns.pdb, **ns.__dict__))
subparser.set_defaults(subparser=subparser)