Source code for hic3defdr.util.demo_data

import os
from six.moves.urllib.request import urlretrieve
from zipfile import ZipFile

from hic3defdr.util.printing import eprint


DEMO_DATA_URL = 'https://www.dropbox.com/sh/mq0fpnp4jz59wpo/AAD2FW1Tp_mVKCkxlJoZvxC8a?dl=1'  # noqa: E501
CHROMS = ['chr18', 'chr19']
CONDS = ['ES', 'NPC']
COND_EXT = ['clusters.json']
REPS = ['ES_1', 'ES_3', 'NPC_1', 'NPC_2']
REP_EXT = ['kr.bias', 'raw.npz']


[docs]def check_demo_data(dest_dir='~/hic3defdr-demo-data'): """ Checks to see if all demo files are present. Parameters ---------- dest_dir : str Path to destination directory to look for demo data files in. Returns ------- bool True if all demo files are present, False otherwise. """ dest_dir = os.path.expanduser(dest_dir) for chrom in CHROMS: for cond in CONDS: for ext in COND_EXT: path = os.path.join( dest_dir, 'clusters', '%s_%s_%s' % (cond, chrom, ext)) if not os.path.exists(path): eprint('failed to find expected demo file at %s' % path) return False for rep in REPS: for ext in REP_EXT: path = os.path.join(dest_dir, rep, '%s_%s' % (chrom, ext)) if not os.path.exists(path): eprint('failed to find expected demo file at %s' % path) return False return True
[docs]def ensure_demo_data(dest_dir='~/hic3defdr-demo-data'): """ Checks that all the demo data files are present to dest_dir, and downloads them if any are missing. Parameters ---------- dest_dir : str Path to destination directory to download files to. """ dest_dir = os.path.expanduser(dest_dir) if check_demo_data(dest_dir=dest_dir): eprint('demo data is present on disk, not re-downloading') return eprint('downloading demo data to temp.zip') urlretrieve(DEMO_DATA_URL, 'temp.zip') eprint('extracting demo data to %s' % dest_dir) try: with ZipFile('temp.zip', 'r') as z: z.extractall(dest_dir) finally: eprint('deleting temp.zip') os.remove('temp.zip')
[docs]def main(): ensure_demo_data()
if __name__ == '__main__': main()