diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..c9e275f
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,34 @@
+name: CI
+
+on:
+ push:
+ paths:
+ # Changes to source code
+ - hobj/**
+ - test/**.py
+ # Changes to workflows
+ - .github/workflows/ci.yml
+ # Changes to project/dependency metadata
+ - 'pyproject.toml'
+ - 'uv.lock'
+jobs:
+ unit_tests:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ["3.12"]
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Set up uv
+ uses: astral-sh/setup-uv@v5
+ with:
+ enable-cache: true
+ - name: Install dependencies
+ run: uv sync --locked --dev
+ - name: Run pytests
+ run: uv run pytest -s
diff --git a/.gitignore b/.gitignore
index 1f1025f..ac631e5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,7 @@
.idea
-.DS_Store
\ No newline at end of file
+.DS_Store
+.venv
+__pycache__/
+*.egg-info/
+dist/
+/data/
diff --git a/.idea/hobj.iml b/.idea/hobj.iml
deleted file mode 100644
index f45935a..0000000
--- a/.idea/hobj.iml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
| \n", + " | image_id | \n", + "category | \n", + "sha256 | \n", + "rx | \n", + "ry | \n", + "rz | \n", + "s | \n", + "u | \n", + "v | \n", + "relpath | \n", + "original_category_name | \n", + "original_filename | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", + "MutatorObject000-Image00.png | \n", + "MutatorObject000 | \n", + "b96530de7f7dcaaa76caba7073af79bccaab6d84162435... | \n", + "100.12 | \n", + "117.05 | \n", + "282.98 | \n", + "0.91 | \n", + "-0.17 | \n", + "-0.04 | \n", + "images/MutatorHighVarImageset/MutatorObject000... | \n", + "MutatorB2000_0 | \n", + "MutatorB2000_0_rx100.12_ry117.05_rz282.98_s0.9... | \n", + "
| 1 | \n", + "MutatorObject000-Image01.png | \n", + "MutatorObject000 | \n", + "0ac6e0901cc2748588194365aa989cbfe70796f0c41380... | \n", + "101.80 | \n", + "31.50 | \n", + "334.00 | \n", + "0.97 | \n", + "-0.13 | \n", + "0.14 | \n", + "images/MutatorHighVarImageset/MutatorObject000... | \n", + "MutatorB2000_0 | \n", + "MutatorB2000_0_rx101.80_ry31.50_rz334.00_s0.97... | \n", + "
| 2 | \n", + "MutatorObject000-Image02.png | \n", + "MutatorObject000 | \n", + "111427384671e7d08e075c980fbb70f90fc9d2f8e6e95c... | \n", + "102.11 | \n", + "345.85 | \n", + "293.62 | \n", + "0.72 | \n", + "-0.24 | \n", + "0.20 | \n", + "images/MutatorHighVarImageset/MutatorObject000... | \n", + "MutatorB2000_0 | \n", + "MutatorB2000_0_rx102.11_ry345.85_rz293.62_s0.7... | \n", + "
| 3 | \n", + "MutatorObject000-Image03.png | \n", + "MutatorObject000 | \n", + "382bd29bd25edf6374f095bc9a69940381772a01701b21... | \n", + "102.14 | \n", + "19.54 | \n", + "305.56 | \n", + "0.67 | \n", + "-0.08 | \n", + "-0.30 | \n", + "images/MutatorHighVarImageset/MutatorObject000... | \n", + "MutatorB2000_0 | \n", + "MutatorB2000_0_rx102.14_ry19.54_rz305.56_s0.67... | \n", + "
| 4 | \n", + "MutatorObject000-Image04.png | \n", + "MutatorObject000 | \n", + "abddf8cb648ee7ab4c29b563e16fe3b23145b11e07779d... | \n", + "108.26 | \n", + "43.83 | \n", + "273.33 | \n", + "0.78 | \n", + "0.30 | \n", + "0.37 | \n", + "images/MutatorHighVarImageset/MutatorObject000... | \n", + "MutatorB2000_0 | \n", + "MutatorB2000_0_rx108.26_ry43.83_rz273.33_s0.78... | \n", + "
| ... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
| 12795 | \n", + "MutatorObject127-Image95.png | \n", + "MutatorObject127 | \n", + "f1dfd9515fa8075df7aa08f4652c7a6f28b64211ae6167... | \n", + "92.38 | \n", + "309.66 | \n", + "19.61 | \n", + "0.78 | \n", + "0.10 | \n", + "-0.35 | \n", + "images/MutatorHighVarImageset/MutatorObject127... | \n", + "MutatorB2000_4998 | \n", + "MutatorB2000_4998_rx92.38_ry309.66_rz19.61_s0.... | \n", + "
| 12796 | \n", + "MutatorObject127-Image96.png | \n", + "MutatorObject127 | \n", + "6dff558c524bd58fc54d40374b11912575e69c7e70425d... | \n", + "94.04 | \n", + "274.02 | \n", + "11.67 | \n", + "0.96 | \n", + "-0.09 | \n", + "0.35 | \n", + "images/MutatorHighVarImageset/MutatorObject127... | \n", + "MutatorB2000_4998 | \n", + "MutatorB2000_4998_rx94.04_ry274.02_rz11.67_s0.... | \n", + "
| 12797 | \n", + "MutatorObject127-Image97.png | \n", + "MutatorObject127 | \n", + "a74d53268aae7222df6e933ba92cd364eb7d29e15e7edc... | \n", + "95.11 | \n", + "208.91 | \n", + "346.27 | \n", + "0.51 | \n", + "0.09 | \n", + "0.09 | \n", + "images/MutatorHighVarImageset/MutatorObject127... | \n", + "MutatorB2000_4998 | \n", + "MutatorB2000_4998_rx95.11_ry208.91_rz346.27_s0... | \n", + "
| 12798 | \n", + "MutatorObject127-Image98.png | \n", + "MutatorObject127 | \n", + "4a53f1cada4db5cea540368bdaad2054cc8051a711e3a0... | \n", + "96.62 | \n", + "270.95 | \n", + "214.11 | \n", + "0.67 | \n", + "-0.26 | \n", + "-0.18 | \n", + "images/MutatorHighVarImageset/MutatorObject127... | \n", + "MutatorB2000_4998 | \n", + "MutatorB2000_4998_rx96.62_ry270.95_rz214.11_s0... | \n", + "
| 12799 | \n", + "MutatorObject127-Image99.png | \n", + "MutatorObject127 | \n", + "3373a6a5da7d78d5e30958976514d7d6e785bbefd3977d... | \n", + "97.26 | \n", + "348.00 | \n", + "267.09 | \n", + "0.98 | \n", + "0.13 | \n", + "-0.29 | \n", + "images/MutatorHighVarImageset/MutatorObject127... | \n", + "MutatorB2000_4998 | \n", + "MutatorB2000_4998_rx97.26_ry348.00_rz267.09_s0... | \n", + "
12800 rows × 12 columns
\n", + "| \n", + " | image_id | \n", + "category | \n", + "sha256 | \n", + "base_image_id | \n", + "transformation | \n", + "transformation_level | \n", + "original_category_name | \n", + "original_filename | \n", + "relpath | \n", + "
|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", + "MutatorOneshotObject00-backgrounds-0.1-0.png | \n", + "MutatorOneshotObject00 | \n", + "1577bf576db2b88cc5801d3f02eb375b6e8fcc161b0dd4... | \n", + "MutatorOneshotObject00-original.png | \n", + "backgrounds | \n", + "0.100000 | \n", + "MutatorB2000_46 | \n", + "MutatorB2000_46_rx0.00000_ry0.00000_rz0.00000_... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| 1 | \n", + "MutatorOneshotObject00-backgrounds-0.1-1.png | \n", + "MutatorOneshotObject00 | \n", + "db76eef9cb6580ba9b689506852eef20a31df9371ee29a... | \n", + "MutatorOneshotObject00-original.png | \n", + "backgrounds | \n", + "0.100000 | \n", + "MutatorB2000_46 | \n", + "MutatorB2000_46_rx0.00000_ry0.00000_rz0.00000_... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| 2 | \n", + "MutatorOneshotObject00-backgrounds-0.215443-0.png | \n", + "MutatorOneshotObject00 | \n", + "ce14b235f218f6ab9789e8681000545317449339d579ac... | \n", + "MutatorOneshotObject00-original.png | \n", + "backgrounds | \n", + "0.215443 | \n", + "MutatorB2000_46 | \n", + "MutatorB2000_46_rx0.00000_ry0.00000_rz0.00000_... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| 3 | \n", + "MutatorOneshotObject00-backgrounds-0.215443-1.png | \n", + "MutatorOneshotObject00 | \n", + "f99d0949a742bf9240a87226735bc122e21a49c4c464e1... | \n", + "MutatorOneshotObject00-original.png | \n", + "backgrounds | \n", + "0.215443 | \n", + "MutatorB2000_46 | \n", + "MutatorB2000_46_rx0.00000_ry0.00000_rz0.00000_... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| 4 | \n", + "MutatorOneshotObject00-backgrounds-0.464159-0.png | \n", + "MutatorOneshotObject00 | \n", + "f290df90e4d32f42a3008d2696afa5e8c2e7b5391215c0... | \n", + "MutatorOneshotObject00-original.png | \n", + "backgrounds | \n", + "0.464159 | \n", + "MutatorB2000_46 | \n", + "MutatorB2000_46_rx0.00000_ry0.00000_rz0.00000_... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| ... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
| 3899 | \n", + "MutatorOneshotObject63-outplanerotation-90.0-3... | \n", + "MutatorOneshotObject63 | \n", + "1cbb3ed038c52b1b64aa3ee8c4b6948d53d8339e872e12... | \n", + "MutatorOneshotObject63-original.png | \n", + "outplanerotation | \n", + "90.000000 | \n", + "MutatorB2000_4792 | \n", + "MutatorB2000_4792_rx90.00000_ry0.00000_rz0.000... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| 3900 | \n", + "MutatorOneshotObject63-scale-0.125-0.png | \n", + "MutatorOneshotObject63 | \n", + "c928c3e293faf146fea3452d583021edc01928f6d91dff... | \n", + "MutatorOneshotObject63-original.png | \n", + "scale | \n", + "0.125000 | \n", + "MutatorB2000_4792 | \n", + "MutatorB2000_4792_rx0.00000_ry0.00000_rz0.0000... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| 3901 | \n", + "MutatorOneshotObject63-scale-0.25-0.png | \n", + "MutatorOneshotObject63 | \n", + "929a7df3077bf2af726320c6fef57f04f2c43541c04830... | \n", + "MutatorOneshotObject63-original.png | \n", + "scale | \n", + "0.250000 | \n", + "MutatorB2000_4792 | \n", + "MutatorB2000_4792_rx0.00000_ry0.00000_rz0.0000... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| 3902 | \n", + "MutatorOneshotObject63-scale-0.5-0.png | \n", + "MutatorOneshotObject63 | \n", + "e4fcf112d188822385ad433a1f390b5fd8095883bbf418... | \n", + "MutatorOneshotObject63-original.png | \n", + "scale | \n", + "0.500000 | \n", + "MutatorB2000_4792 | \n", + "MutatorB2000_4792_rx0.00000_ry0.00000_rz0.0000... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
| 3903 | \n", + "MutatorOneshotObject63-scale-1.5-0.png | \n", + "MutatorOneshotObject63 | \n", + "68b34b82ba92d25a8f09185a888a0605b01ca09bf26362... | \n", + "MutatorOneshotObject63-original.png | \n", + "scale | \n", + "1.500000 | \n", + "MutatorB2000_4792 | \n", + "MutatorB2000_4792_rx0.00000_ry0.00000_rz0.0000... | \n", + "images/MutatorOneShotImageset/MutatorOneshotOb... | \n", + "
3904 rows × 9 columns
\n", + "| \n", + " | trial | \n", + "assignment_id | \n", + "worker_id | \n", + "subtask | \n", + "image_id | \n", + "trial_type | \n", + "stimulus_duration_msec | \n", + "reaction_time_msec | \n", + "timed_out | \n", + "perf | \n", + "timestamp_start | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|
| 156000 | \n", + "0 | \n", + "3018Q3ZVOJ00HY15URPTWYSDSTCARE | \n", + "cab9074c252435e4079d81051102452d8b585ea1a11a6b... | \n", + "MutatorObject034,MutatorObject035 | \n", + "MutatorObject035-Image40.png | \n", + "main | \n", + "200 | \n", + "880.0 | \n", + "False | \n", + "True | \n", + "1639397027 | \n", + "
| 156001 | \n", + "1 | \n", + "3018Q3ZVOJ00HY15URPTWYSDSTCARE | \n", + "cab9074c252435e4079d81051102452d8b585ea1a11a6b... | \n", + "MutatorObject034,MutatorObject035 | \n", + "MutatorObject035-Image28.png | \n", + "main | \n", + "200 | \n", + "1475.0 | \n", + "False | \n", + "False | \n", + "1639397029 | \n", + "
| 156002 | \n", + "2 | \n", + "3018Q3ZVOJ00HY15URPTWYSDSTCARE | \n", + "cab9074c252435e4079d81051102452d8b585ea1a11a6b... | \n", + "MutatorObject034,MutatorObject035 | \n", + "MutatorObject034-Image65.png | \n", + "main | \n", + "200 | \n", + "1037.0 | \n", + "False | \n", + "True | \n", + "1639397032 | \n", + "
| 156003 | \n", + "3 | \n", + "3018Q3ZVOJ00HY15URPTWYSDSTCARE | \n", + "cab9074c252435e4079d81051102452d8b585ea1a11a6b... | \n", + "MutatorObject034,MutatorObject035 | \n", + "MutatorObject034-Image55.png | \n", + "main | \n", + "200 | \n", + "922.0 | \n", + "False | \n", + "True | \n", + "1639397034 | \n", + "
| 156004 | \n", + "4 | \n", + "3018Q3ZVOJ00HY15URPTWYSDSTCARE | \n", + "cab9074c252435e4079d81051102452d8b585ea1a11a6b... | \n", + "MutatorObject034,MutatorObject035 | \n", + "MutatorObject035-Image75.png | \n", + "main | \n", + "200 | \n", + "728.0 | \n", + "False | \n", + "True | \n", + "1639397036 | \n", + "
| ... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
| 317194 | \n", + "95 | \n", + "3ZY8KE4ISKDKXLP3S7RPNVWLITLVQY | \n", + "50320c2ab5b97e8ad2694b2b333c6fb3e7bdaa1ba648e8... | \n", + "MutatorObject097,MutatorObject098 | \n", + "MutatorObject097-Image91.png | \n", + "main | \n", + "200 | \n", + "289.0 | \n", + "False | \n", + "False | \n", + "1639510528 | \n", + "
| 317195 | \n", + "96 | \n", + "3ZY8KE4ISKDKXLP3S7RPNVWLITLVQY | \n", + "50320c2ab5b97e8ad2694b2b333c6fb3e7bdaa1ba648e8... | \n", + "MutatorObject097,MutatorObject098 | \n", + "MutatorObject098-Image70.png | \n", + "main | \n", + "200 | \n", + "399.0 | \n", + "False | \n", + "True | \n", + "1639510529 | \n", + "
| 317196 | \n", + "97 | \n", + "3ZY8KE4ISKDKXLP3S7RPNVWLITLVQY | \n", + "50320c2ab5b97e8ad2694b2b333c6fb3e7bdaa1ba648e8... | \n", + "MutatorObject097,MutatorObject098 | \n", + "MutatorObject097-Image05.png | \n", + "main | \n", + "200 | \n", + "279.0 | \n", + "False | \n", + "True | \n", + "1639510530 | \n", + "
| 317197 | \n", + "98 | \n", + "3ZY8KE4ISKDKXLP3S7RPNVWLITLVQY | \n", + "50320c2ab5b97e8ad2694b2b333c6fb3e7bdaa1ba648e8... | \n", + "MutatorObject097,MutatorObject098 | \n", + "MutatorObject097-Image58.png | \n", + "main | \n", + "200 | \n", + "441.0 | \n", + "False | \n", + "False | \n", + "1639510531 | \n", + "
| 317198 | \n", + "99 | \n", + "3ZY8KE4ISKDKXLP3S7RPNVWLITLVQY | \n", + "50320c2ab5b97e8ad2694b2b333c6fb3e7bdaa1ba648e8... | \n", + "MutatorObject097,MutatorObject098 | \n", + "MutatorObject097-Image82.png | \n", + "main | \n", + "200 | \n", + "316.0 | \n", + "False | \n", + "True | \n", + "1639510532 | \n", + "
319900 rows × 11 columns
\n", + "| \n", + " | trial | \n", + "assignment_id | \n", + "slot | \n", + "worker_id | \n", + "subtask | \n", + "image_id | \n", + "trial_type | \n", + "stimulus_duration_msec | \n", + "reaction_time_msec | \n", + "timed_out | \n", + "perf | \n", + "timestamp_start | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", + "0 | \n", + "3018Q3ZVOJ00HY15URPTWYSD0NIRAX | \n", + "1 | \n", + "009362951d33e90bceaaf84f4d4373c58ffc464f60ec34... | \n", + "MutatorOneshotObject24,MutatorOneshotObject29 | \n", + "MutatorOneshotObject29-original.png | \n", + "support | \n", + "200 | \n", + "728.0 | \n", + "False | \n", + "True | \n", + "1623768767 | \n", + "
| 1 | \n", + "1 | \n", + "3018Q3ZVOJ00HY15URPTWYSD0NIRAX | \n", + "1 | \n", + "009362951d33e90bceaaf84f4d4373c58ffc464f60ec34... | \n", + "MutatorOneshotObject24,MutatorOneshotObject29 | \n", + "MutatorOneshotObject24-original.png | \n", + "support | \n", + "200 | \n", + "663.0 | \n", + "False | \n", + "True | \n", + "1623768770 | \n", + "
| 2 | \n", + "2 | \n", + "3018Q3ZVOJ00HY15URPTWYSD0NIRAX | \n", + "1 | \n", + "009362951d33e90bceaaf84f4d4373c58ffc464f60ec34... | \n", + "MutatorOneshotObject24,MutatorOneshotObject29 | \n", + "MutatorOneshotObject29-original.png | \n", + "support | \n", + "200 | \n", + "211.0 | \n", + "False | \n", + "True | \n", + "1623768772 | \n", + "
| 3 | \n", + "3 | \n", + "3018Q3ZVOJ00HY15URPTWYSD0NIRAX | \n", + "1 | \n", + "009362951d33e90bceaaf84f4d4373c58ffc464f60ec34... | \n", + "MutatorOneshotObject24,MutatorOneshotObject29 | \n", + "MutatorOneshotObject29-original.png | \n", + "support | \n", + "200 | \n", + "298.0 | \n", + "False | \n", + "True | \n", + "1623768773 | \n", + "
| 4 | \n", + "4 | \n", + "3018Q3ZVOJ00HY15URPTWYSD0NIRAX | \n", + "1 | \n", + "009362951d33e90bceaaf84f4d4373c58ffc464f60ec34... | \n", + "MutatorOneshotObject24,MutatorOneshotObject29 | \n", + "MutatorOneshotObject29-original.png | \n", + "support | \n", + "200 | \n", + "127.0 | \n", + "False | \n", + "True | \n", + "1623768775 | \n", + "
| ... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
| 50935 | \n", + "15 | \n", + "3ZWFC4W1UVHVDPID57BLAZ34X3VRFA | \n", + "4 | \n", + "e43cc225dbf11ef57616e082e51622e8f1e7d9c9b27b2c... | \n", + "MutatorOneshotObject09,MutatorOneshotObject58 | \n", + "MutatorOneshotObject58-outplanerotation-135.0-... | \n", + "generalization | \n", + "200 | \n", + "653.0 | \n", + "False | \n", + "False | \n", + "1623769458 | \n", + "
| 50936 | \n", + "16 | \n", + "3ZWFC4W1UVHVDPID57BLAZ34X3VRFA | \n", + "4 | \n", + "e43cc225dbf11ef57616e082e51622e8f1e7d9c9b27b2c... | \n", + "MutatorOneshotObject09,MutatorOneshotObject58 | \n", + "MutatorOneshotObject09-contrast-0.8-0.png | \n", + "generalization | \n", + "200 | \n", + "296.0 | \n", + "False | \n", + "False | \n", + "1623769461 | \n", + "
| 50937 | \n", + "17 | \n", + "3ZWFC4W1UVHVDPID57BLAZ34X3VRFA | \n", + "4 | \n", + "e43cc225dbf11ef57616e082e51622e8f1e7d9c9b27b2c... | \n", + "MutatorOneshotObject09,MutatorOneshotObject58 | \n", + "MutatorOneshotObject09-noise-0.375-0.png | \n", + "generalization | \n", + "200 | \n", + "601.0 | \n", + "False | \n", + "True | \n", + "1623769463 | \n", + "
| 50938 | \n", + "18 | \n", + "3ZWFC4W1UVHVDPID57BLAZ34X3VRFA | \n", + "4 | \n", + "e43cc225dbf11ef57616e082e51622e8f1e7d9c9b27b2c... | \n", + "MutatorOneshotObject09,MutatorOneshotObject58 | \n", + "MutatorOneshotObject58-blur-0.0625-0.png | \n", + "generalization | \n", + "200 | \n", + "1535.0 | \n", + "False | \n", + "False | \n", + "1623769464 | \n", + "
| 50939 | \n", + "19 | \n", + "3ZWFC4W1UVHVDPID57BLAZ34X3VRFA | \n", + "4 | \n", + "e43cc225dbf11ef57616e082e51622e8f1e7d9c9b27b2c... | \n", + "MutatorOneshotObject09,MutatorOneshotObject58 | \n", + "MutatorOneshotObject09-original.png | \n", + "catch | \n", + "200 | \n", + "293.0 | \n", + "False | \n", + "True | \n", + "1623769468 | \n", + "
50940 rows × 12 columns
\n", + "