aboutsummaryrefslogtreecommitdiff
path: root/datasets/bee_waggle_6/get_bee_waggle_6.py
diff options
context:
space:
mode:
Diffstat (limited to 'datasets/bee_waggle_6/get_bee_waggle_6.py')
-rw-r--r--datasets/bee_waggle_6/get_bee_waggle_6.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/datasets/bee_waggle_6/get_bee_waggle_6.py b/datasets/bee_waggle_6/get_bee_waggle_6.py
index b68f378..6f80042 100644
--- a/datasets/bee_waggle_6/get_bee_waggle_6.py
+++ b/datasets/bee_waggle_6/get_bee_waggle_6.py
@@ -26,6 +26,8 @@ ZIP_URL = "https://web.archive.org/web/20191114130815if_/https://www.cc.gatech.e
MD5_ZIP = "039843dc15c72fd5450eeb11c6e5599c"
MD5_JSON = "4f03feafecb3be0b069b3cb0d6b17d4f"
+# alternative checksum for small rounding errors
+MD5_JSON_2 = "71311783488ee5f1122545d24c15429b"
NAME_ZIP = "psslds.zip"
NAME_JSON = "bee_waggle_6.json"
@@ -48,7 +50,7 @@ def check_md5sum(filename, checksum):
return h == checksum
-def validate(checksum):
+def validate(checksum, alternative_checksum=None):
"""Decorator that validates the target file."""
def validate_decorator(func):
@@ -57,10 +59,19 @@ def validate(checksum):
target = kwargs.get("target_path", None)
if os.path.exists(target) and check_md5sum(target, checksum):
return
+ if (
+ os.path.exists(target)
+ and alternative_checksum
+ and check_md5sum(target, alternative_checksum)
+ ):
+ return
out = func(*args, **kwargs)
if not os.path.exists(target):
raise FileNotFoundError("Target file expected at: %s" % target)
- if not check_md5sum(target, checksum):
+ if not (check_md5sum(target, checksum) or (
+ alternative_checksum
+ and check_md5sum(target, alternative_checksum)
+ )):
raise ValidationError(target)
return out
@@ -74,7 +85,7 @@ def download_zip(target_path=None):
urlretrieve(ZIP_URL, target_path)
-@validate(MD5_JSON)
+@validate(MD5_JSON, MD5_JSON_2)
def write_json(zip_path, target_path=None):
with zipfile.ZipFile(zip_path) as thezip:
with thezip.open("psslds/zips/data/sequence6/btf/ximage.btf") as fp:
@@ -138,7 +149,7 @@ def parse_args():
choices=["collect", "clean"],
help="Action to perform",
default="collect",
- nargs='?'
+ nargs="?",
)
return parser.parse_args()