def download_biological_assemblies(pdb_id, outdir):
"""Downloads biological assembly file from:
`ftp://ftp.wwpdb.org/pub/pdb/data/biounit/coordinates/divided/`
Args:
outdir (str): Output directory of the decompressed assembly
"""
# TODO: not tested yet
if not op.exists(outdir):
raise ValueError('{}: output directory does not exist'.format(outdir))
folder = pdb_id[1:3]
server = 'ftp://ftp.wwpdb.org/pub/pdb/data/biounit/coordinates/divided/{}/'.format(folder)
html_folder = urlopen(server).readlines()
for line in html_folder:
if pdb_id in str(line).strip():
file_name = '%s' % (pdb_id + str(line).strip().split(pdb_id)[1].split('\r\n')[0])
outfile_name = file_name.replace('.', '_')
outfile_name = outfile_name.replace('_gz', '.pdb')
f = urlopen(op.join(server, file_name))
decompressed_data = zlib.decompress(f.read(), 16 + zlib.MAX_WBITS)
with open(op.join(outdir, outfile_name), 'wb') as f:
f.write(decompressed_data)
f.close()
log.debug('{}: downloaded biological assembly')
return op.join(outdir, outfile_name)
评论列表
文章目录