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字符串,以防作者某天在远程服务器上更改了文件。