def download_xml(pdb_id, dest_dir, silent = True, filename = None, unzip = False): assert(os.path.exists(dest_dir)) lower_case_gz_filename = os.path.join(dest_dir, '{0}.sifts.xml.gz'.format(pdb_id.lower())) upper_case_gz_filename = os.path.join(dest_dir, '{0}.sifts.xml.gz'.format(pdb_id.upper())) lower_case_filename = os.path.join(dest_dir, '{0}.sifts.xml'.format(pdb_id.lower())) upper_case_filename = os.path.join(dest_dir, '{0}.sifts.xml'.format(pdb_id.upper())) if filename: requested_filename = os.path.join(dest_dir, filename) if os.path.exists(requested_filename): return read_file(requested_filename) if unzip == True: if os.path.exists(lower_case_filename): contents = read_file(lower_case_filename) elif os.path.exists(upper_case_filename): contents = read_file(upper_case_filename) elif os.path.exists(lower_case_gz_filename): contents = read_gzip_in_memory(read_file(lower_case_gz_filename)) elif os.path.exists(upper_case_gz_filename): contents = read_gzip_in_memory(read_file(upper_case_gz_filename)) else: contents = retrieve_xml(pdb_id, silent = silent, unzip = True) write_file(os.path.join(dest_dir, filename or '{0}.sifts.xml'.format(pdb_id)), contents) return contents else: if os.path.exists(lower_case_gz_filename): contents = read_file(lower_case_gz_filename) # Note: read_file already unzips .gz files if os.path.exists(upper_case_gz_filename): contents = read_file(upper_case_gz_filename) # Note: read_file already unzips .gz files else: gzip_contents = retrieve_xml(pdb_id, silent = silent, unzip = False) write_file(os.path.join(dest_dir, filename or '{0}.sifts.xml.gz'.format(pdb_id)), gzip_contents) contents = read_gzip_in_memory(gzip_contents) return contents
def retrieve_xml(pdb_id, silent = True, unzip = True): if unzip: return read_gzip_in_memory(retrieve_file_from_EBI("/pub/databases/msd/sifts/xml/%s.xml.gz" % pdb_id.lower(), silent)) else: return retrieve_file_from_EBI("/pub/databases/msd/sifts/xml/%s.xml.gz" % pdb_id.lower(), silent)