def download_supplementary_files(self, directory='series',
                                     download_sra=True, email=None,
                                     sra_kwargs=None, nproc=1):
        """Download supplementary data.

        .. warning::

            Do not use parallel option (nproc > 1) in the interactive shell.
            For more details see `this issue <https://stackoverflow.com/questions/23641475/multiprocessing-working-in-python-but-not-in-ipython/23641560#23641560>`_
            on SO.

        Args:
            directory (:obj:`str`, optional): Directory to download the data
                (in this directory function will create new directory with the
                files), by default this will be named with the series
                name + _Supp.
            download_sra (:obj:`bool`, optional): Indicates whether to download
                SRA raw data too. Defaults to True.
            email (:obj:`str`, optional): E-mail that will be provided to the
                Entrez. Defaults to None.
            sra_kwargs (:obj:`dict`, optional): Kwargs passed to the
                GSM.download_SRA method. Defaults to None.
            nproc (:obj:`int`, optional): Number of processes for SRA download
                (default is 1, no parallelization).

        Returns:
            :obj:`dict`: Downloaded data for each of the GSM
        """
        if sra_kwargs is None:
            sra_kwargs = dict()
        if directory == 'series':
            dirpath = os.path.abspath(self.get_accession() + "_Supp")
            utils.mkdir_p(dirpath)
        else:
            dirpath = os.path.abspath(directory)
            utils.mkdir_p(dirpath)
        downloaded_paths = dict()
        if nproc == 1:
            # No need to parallelize, running ordinary download in loop
            downloaded_paths = dict()
            for gsm in itervalues(self.gsms):
                logger.info(
                    "Downloading SRA files for %s series\n" % gsm.name)
                paths = gsm.download_supplementary_files(email=email,
                                                         download_sra=download_sra,
                                                         directory=dirpath,
                                                         sra_kwargs=sra_kwargs)
                downloaded_paths[gsm.name] = paths
        elif nproc > 1:
            # Parallelization enabled
            downloaders = list()
            # Collecting params for Pool.map in a loop
            for gsm in itervalues(self.gsms):
                downloaders.append([
                    gsm,
                    download_sra,
                    email,
                    dirpath,
                    sra_kwargs])
            p = Pool(nproc)
            results = p.map(_supplementary_files_download_worker, downloaders)
            downloaded_paths = dict(results)
        else:
            raise ValueError("Nproc should be non-negative: %s" % str(nproc))

        return downloaded_paths
Download supplementary data.

        .. warning::

            Do not use parallel option (nproc > 1) in the interactive shell.
            For more details see `this issue <https://stackoverflow.com/questions/23641475/multiprocessing-working-in-python-but-not-in-ipython/23641560#23641560>`_
            on SO.

        Args:
            directory (:obj:`str`, optional): Directory to download the data
                (in this directory function will create new directory with the
                files), by default this will be named with the series
                name + _Supp.
            download_sra (:obj:`bool`, optional): Indicates whether to download
                SRA raw data too. Defaults to True.
            email (:obj:`str`, optional): E-mail that will be provided to the
                Entrez. Defaults to None.
            sra_kwargs (:obj:`dict`, optional): Kwargs passed to the
                GSM.download_SRA method. Defaults to None.
            nproc (:obj:`int`, optional): Number of processes for SRA download
                (default is 1, no parallelization).

        Returns:
            :obj:`dict`: Downloaded data for each of the GSM