4.2 下载原始数据(可选)

(中文版)

如果数据集已经在本地磁盘上,请确保它在目录 raw_dir中。如果用户希望在任何地方运行代码而不必费心 下载并将数据移动到正确的目录,可以通过实现函数 download() 来自动完成。

如果数据集是一个zip文件,让MyDataset继承自dgl.data.DGLBuiltinDataset类,该类会为我们处理zip文件的解压。否则,需要像QM7bDataset中那样实现download()方法:

import os
from dgl.data.utils import download

def download(self):
    # path to store the file
    file_path = os.path.join(self.raw_dir, self.name + '.mat')
    # download file
    download(self.url, path=file_path)

上述代码将下载一个 .mat 文件到目录 self.raw_dir。如果文件是 .gz、.tar、.tar.gz 或 .tgz 文件,请使用 extract_archive() 函数进行解压。以下代码展示了如何在 BitcoinOTCDataset 中下载一个 .gz 文件:

from dgl.data.utils import download, check_sha1

def download(self):
    # path to store the file
    # make sure to use the same suffix as the original file name's
    gz_file_path = os.path.join(self.raw_dir, self.name + '.csv.gz')
    # download file
    download(self.url, path=gz_file_path)
    # check SHA-1
    if not check_sha1(gz_file_path, self._sha1_str):
        raise UserWarning('File {} is downloaded but the content hash does not match.'
                          'The repo may be outdated or download may be incomplete. '
                          'Otherwise you can create an issue for it.'.format(self.name + '.csv.gz'))
    # extract file to directory `self.name` under `self.raw_dir`
    self._extract_gz(gz_file_path, self.raw_path)

上述代码将文件提取到self.raw_dir下的self.name目录中。如果类继承自dgl.data.DGLBuiltinDataset来处理zip文件,它也会将文件提取到self.name目录中。

可选地,可以像上面的示例那样检查下载文件的SHA-1字符串,以防作者某天在远程服务器上更改了文件。