Source code for dreamtools.core.downloader

# -*- python -*-
# -*- coding: utf-8 -*-
#
#  This file is part of DREAMTools software
#
#  Copyright (c) 2015, DREAMTools Development Team
#  All rights reserved
#
#  Distributed under the BSD 3-Clause License.
#  See accompanying file LICENSE distributed with this software
#
#  File author(s): Thomas Cokelaer <cokelaer@ebi.ac.uk>
#
#  website: http://github.com/dreamtools
#
##############################################################################
"""Utility to download a synapse project in the dreamtools directory"""
import warnings
import sys

from dreamtools.core.sageutils import Login
from dreamtools.core.challenge import Challenge

from easydev.console import red

__all__ = ['Downloader']


[docs]class Downloader(Challenge, Login): """Factory to download gold standard files Download a synpase file once for all in the dreamtools directory. """ def __init__(self, challenge, client=None, username=None, password=None): """.. rubric:: constructor :param str challenge: alias of a challenge (e.g., D5C1) To automatically connect to synapse, create a file called .synapseConfig with this content:: [authentication] username: email password: password """ Challenge.__init__(self, challenge_name=challenge) # Login provides the synapse client. See client attribute warnings.filterwarnings("ignore") Login.__init__(self, client=client, username=username, password=password) warnings.resetwarnings()
[docs] def download(self, synid): """Download a file into the dreamtools directory :param synid: a valid synapse id (e.g., syn123456) You must have a login on synapse website. """ # If not connected, nothing will be possible, so just skip the download # step. if self.client._connected is False: print(red("You do not seem to have a network connection. ") + red("Downloading required data is not possible")) sys.exit(1) assert synid.startswith('syn'), \ "synid must be a valid synapse identifier e.g., syn123456" try: self.client.get(synid, downloadLocation=self.directory) except Exception as err: print('Original error message from synapseclient:') print(err) print("DREAMTools warning: this is most probably a file that requires you to accept the conditions of use of the data. We will open the relevant page for you now. Please click 'show; on the RHS of the Conditions of use and Accept the terms of use") sys.exit()