def fetch(dataset="mi", datadir=datadir):
    """Fetch example dataset.

    If the requested dataset is not found in the location specified by
    `datadir`, the function attempts to download it.

    Parameters
    ----------
    dataset : str
        Which dataset to load. Currently only 'mi' is supported.
    datadir : str
        Path to the storage location of example datasets. Datasets are
        downloaded to this location if they cannot be found. If the directory
        does not exist it is created.

    Returns
    -------
        data : list of dicts
            The data set is stored in a list, where each list element
            corresponds to data from one subject. Each list element is a
            dictionary with the following keys:
              "eeg" ... EEG signals
              "triggers" ... Trigger latencies
              "labels" ... Class labels
              "fs" ... Sample rate
              "locations" ... Channel locations
    """
    if dataset not in datasets:
        raise ValueError("Example data '{}' not available.".format(dataset))
    else:
        files = datasets[dataset]["files"]
        url = datasets[dataset]["url"]
        md5 = datasets[dataset]["md5"]
    if not isdir(datadir):
        makedirs(datadir)

    data = []

    for n, filename in enumerate(files):
        fullfile = join(datadir, filename)
        if not isfile(fullfile):
            with open(fullfile, "wb") as f:
                response = get(join(url, filename))
                f.write(response.content)
        with open(fullfile, "rb") as f:  # check if MD5 of downloaded file matches original hash
            hash = hashlib.md5(f.read()).hexdigest()
        if hash != md5[n]:
            raise MD5MismatchError("MD5 hash of {} does not match {}.".format(fullfile, md5[n]))
        data.append(convert(dataset, loadmat(fullfile)))

    return data
def fetch ( dataset = "mi" , datadir = datadir ) : if dataset not in datasets : raise ValueError ( "Example data '{}' not available." . format ( dataset ) ) else : files = datasets [ dataset ] [ "files" ] url = datasets [ dataset ] [ "url" ] md5 = datasets [ dataset ] [ "md5" ] if not isdir ( datadir ) : makedirs ( datadir ) data = [ ] for n , filename in enumerate ( files ) : fullfile = join ( datadir , filename ) if not isfile ( fullfile ) : with open ( fullfile , "wb" ) as f : response = get ( join ( url , filename ) ) f . write ( response . content ) with open ( fullfile , "rb" ) as f : hash = hashlib . md5 ( f . read ( ) ) . hexdigest ( ) if hash != md5 [ n ] : raise MD5MismatchError ( "MD5 hash of {} does not match {}." . format ( fullfile , md5 [ n ] ) ) data . append ( convert ( dataset , loadmat ( fullfile ) ) ) return data
Fetch example dataset.

    If the requested dataset is not found in the location specified by
    `datadir`, the function attempts to download it.

    Parameters
    ----------
    dataset : str
        Which dataset to load. Currently only 'mi' is supported.
    datadir : str
        Path to the storage location of example datasets. Datasets are
        downloaded to this location if they cannot be found. If the directory
        does not exist it is created.

    Returns
    -------
        data : list of dicts
            The data set is stored in a list, where each list element
            corresponds to data from one subject. Each list element is a
            dictionary with the following keys:
              "eeg" ... EEG signals
              "triggers" ... Trigger latencies
              "labels" ... Class labels
              "fs" ... Sample rate
              "locations" ... Channel locations