brainscore-vision 2.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1009) hide show
  1. brainscore_vision/__init__.py +105 -0
  2. brainscore_vision/__main__.py +20 -0
  3. brainscore_vision/benchmark_helpers/__init__.py +67 -0
  4. brainscore_vision/benchmark_helpers/neural_common.py +70 -0
  5. brainscore_vision/benchmark_helpers/properties_common.py +424 -0
  6. brainscore_vision/benchmark_helpers/screen.py +126 -0
  7. brainscore_vision/benchmark_helpers/test_helper.py +160 -0
  8. brainscore_vision/benchmarks/README.md +7 -0
  9. brainscore_vision/benchmarks/__init__.py +122 -0
  10. brainscore_vision/benchmarks/baker2022/__init__.py +9 -0
  11. brainscore_vision/benchmarks/baker2022/benchmark.py +125 -0
  12. brainscore_vision/benchmarks/baker2022/requirements.txt +1 -0
  13. brainscore_vision/benchmarks/baker2022/test.py +90 -0
  14. brainscore_vision/benchmarks/bmd2024/__init__.py +8 -0
  15. brainscore_vision/benchmarks/bmd2024/benchmark.py +51 -0
  16. brainscore_vision/benchmarks/bmd2024/test.py +29 -0
  17. brainscore_vision/benchmarks/bracci2019/__init__.py +8 -0
  18. brainscore_vision/benchmarks/bracci2019/benchmark.py +286 -0
  19. brainscore_vision/benchmarks/bracci2019/requirements.txt +3 -0
  20. brainscore_vision/benchmarks/cadena2017/__init__.py +5 -0
  21. brainscore_vision/benchmarks/cadena2017/benchmark.py +91 -0
  22. brainscore_vision/benchmarks/cadena2017/test.py +35 -0
  23. brainscore_vision/benchmarks/coggan2024_behavior/__init__.py +8 -0
  24. brainscore_vision/benchmarks/coggan2024_behavior/benchmark.py +133 -0
  25. brainscore_vision/benchmarks/coggan2024_behavior/test.py +21 -0
  26. brainscore_vision/benchmarks/coggan2024_fMRI/__init__.py +15 -0
  27. brainscore_vision/benchmarks/coggan2024_fMRI/benchmark.py +201 -0
  28. brainscore_vision/benchmarks/coggan2024_fMRI/test.py +25 -0
  29. brainscore_vision/benchmarks/ferguson2024/__init__.py +24 -0
  30. brainscore_vision/benchmarks/ferguson2024/benchmark.py +210 -0
  31. brainscore_vision/benchmarks/ferguson2024/helpers/helpers.py +251 -0
  32. brainscore_vision/benchmarks/ferguson2024/requirements.txt +5 -0
  33. brainscore_vision/benchmarks/ferguson2024/test.py +114 -0
  34. brainscore_vision/benchmarks/freemanziemba2013/__init__.py +10 -0
  35. brainscore_vision/benchmarks/freemanziemba2013/benchmarks/benchmark.py +53 -0
  36. brainscore_vision/benchmarks/freemanziemba2013/benchmarks/public_benchmarks.py +37 -0
  37. brainscore_vision/benchmarks/freemanziemba2013/test.py +98 -0
  38. brainscore_vision/benchmarks/geirhos2021/__init__.py +59 -0
  39. brainscore_vision/benchmarks/geirhos2021/benchmark.py +132 -0
  40. brainscore_vision/benchmarks/geirhos2021/test.py +189 -0
  41. brainscore_vision/benchmarks/hebart2023/__init__.py +4 -0
  42. brainscore_vision/benchmarks/hebart2023/benchmark.py +72 -0
  43. brainscore_vision/benchmarks/hebart2023/test.py +19 -0
  44. brainscore_vision/benchmarks/hermann2020/__init__.py +6 -0
  45. brainscore_vision/benchmarks/hermann2020/benchmark.py +63 -0
  46. brainscore_vision/benchmarks/hermann2020/test.py +28 -0
  47. brainscore_vision/benchmarks/igustibagus2024/__init__.py +11 -0
  48. brainscore_vision/benchmarks/igustibagus2024/domain_transfer_analysis.py +306 -0
  49. brainscore_vision/benchmarks/igustibagus2024/domain_transfer_neural.py +134 -0
  50. brainscore_vision/benchmarks/igustibagus2024/test.py +45 -0
  51. brainscore_vision/benchmarks/imagenet/__init__.py +4 -0
  52. brainscore_vision/benchmarks/imagenet/benchmark.py +50 -0
  53. brainscore_vision/benchmarks/imagenet/imagenet2012.csv +50001 -0
  54. brainscore_vision/benchmarks/imagenet/test.py +32 -0
  55. brainscore_vision/benchmarks/imagenet_c/__init__.py +7 -0
  56. brainscore_vision/benchmarks/imagenet_c/benchmark.py +204 -0
  57. brainscore_vision/benchmarks/imagenet_c/test.py +57 -0
  58. brainscore_vision/benchmarks/islam2021/__init__.py +11 -0
  59. brainscore_vision/benchmarks/islam2021/benchmark.py +107 -0
  60. brainscore_vision/benchmarks/islam2021/test.py +47 -0
  61. brainscore_vision/benchmarks/kar2019/__init__.py +4 -0
  62. brainscore_vision/benchmarks/kar2019/benchmark.py +88 -0
  63. brainscore_vision/benchmarks/kar2019/test.py +93 -0
  64. brainscore_vision/benchmarks/majajhong2015/__init__.py +18 -0
  65. brainscore_vision/benchmarks/majajhong2015/benchmark.py +96 -0
  66. brainscore_vision/benchmarks/majajhong2015/test.py +103 -0
  67. brainscore_vision/benchmarks/malania2007/__init__.py +13 -0
  68. brainscore_vision/benchmarks/malania2007/benchmark.py +235 -0
  69. brainscore_vision/benchmarks/malania2007/test.py +64 -0
  70. brainscore_vision/benchmarks/maniquet2024/__init__.py +6 -0
  71. brainscore_vision/benchmarks/maniquet2024/benchmark.py +199 -0
  72. brainscore_vision/benchmarks/maniquet2024/test.py +17 -0
  73. brainscore_vision/benchmarks/marques2020/__init__.py +76 -0
  74. brainscore_vision/benchmarks/marques2020/benchmarks/cavanaugh2002a_benchmark.py +119 -0
  75. brainscore_vision/benchmarks/marques2020/benchmarks/devalois1982a_benchmark.py +84 -0
  76. brainscore_vision/benchmarks/marques2020/benchmarks/devalois1982b_benchmark.py +88 -0
  77. brainscore_vision/benchmarks/marques2020/benchmarks/freemanZiemba2013_benchmark.py +138 -0
  78. brainscore_vision/benchmarks/marques2020/benchmarks/ringach2002_benchmark.py +167 -0
  79. brainscore_vision/benchmarks/marques2020/benchmarks/schiller1976_benchmark.py +100 -0
  80. brainscore_vision/benchmarks/marques2020/test.py +135 -0
  81. brainscore_vision/benchmarks/objectnet/__init__.py +4 -0
  82. brainscore_vision/benchmarks/objectnet/benchmark.py +52 -0
  83. brainscore_vision/benchmarks/objectnet/test.py +33 -0
  84. brainscore_vision/benchmarks/rajalingham2018/__init__.py +10 -0
  85. brainscore_vision/benchmarks/rajalingham2018/benchmarks/benchmark.py +74 -0
  86. brainscore_vision/benchmarks/rajalingham2018/benchmarks/public_benchmark.py +10 -0
  87. brainscore_vision/benchmarks/rajalingham2018/test.py +125 -0
  88. brainscore_vision/benchmarks/rajalingham2018/test_resources/alexnet-probabilities.nc +0 -0
  89. brainscore_vision/benchmarks/rajalingham2018/test_resources/identifier=alexnet,stimuli_identifier=objectome-240.nc +0 -0
  90. brainscore_vision/benchmarks/rajalingham2018/test_resources/identifier=resnet18,stimuli_identifier=objectome-240.nc +0 -0
  91. brainscore_vision/benchmarks/rajalingham2018/test_resources/identifier=resnet34,stimuli_identifier=objectome-240.nc +0 -0
  92. brainscore_vision/benchmarks/rajalingham2018/test_resources/resnet18-probabilities.nc +0 -0
  93. brainscore_vision/benchmarks/rajalingham2018/test_resources/resnet34-probabilities.nc +0 -0
  94. brainscore_vision/benchmarks/rajalingham2020/__init__.py +4 -0
  95. brainscore_vision/benchmarks/rajalingham2020/benchmark.py +52 -0
  96. brainscore_vision/benchmarks/rajalingham2020/test.py +39 -0
  97. brainscore_vision/benchmarks/sanghavi2020/__init__.py +17 -0
  98. brainscore_vision/benchmarks/sanghavi2020/benchmarks/sanghavi2020_benchmark.py +44 -0
  99. brainscore_vision/benchmarks/sanghavi2020/benchmarks/sanghavijozwik2020_benchmark.py +44 -0
  100. brainscore_vision/benchmarks/sanghavi2020/benchmarks/sanghavimurty2020_benchmark.py +44 -0
  101. brainscore_vision/benchmarks/sanghavi2020/test.py +83 -0
  102. brainscore_vision/benchmarks/scialom2024/__init__.py +52 -0
  103. brainscore_vision/benchmarks/scialom2024/benchmark.py +97 -0
  104. brainscore_vision/benchmarks/scialom2024/test.py +162 -0
  105. brainscore_vision/data/__init__.py +0 -0
  106. brainscore_vision/data/baker2022/__init__.py +40 -0
  107. brainscore_vision/data/baker2022/data_packaging/inverted_distortion_data_assembly.py +43 -0
  108. brainscore_vision/data/baker2022/data_packaging/inverted_distortion_stimulus_set.py +81 -0
  109. brainscore_vision/data/baker2022/data_packaging/mapping.py +60 -0
  110. brainscore_vision/data/baker2022/data_packaging/normal_distortion_data_assembly.py +46 -0
  111. brainscore_vision/data/baker2022/data_packaging/normal_distortion_stimulus_set.py +94 -0
  112. brainscore_vision/data/baker2022/test.py +135 -0
  113. brainscore_vision/data/barbumayo2019/BarbuMayo2019.py +26 -0
  114. brainscore_vision/data/barbumayo2019/__init__.py +23 -0
  115. brainscore_vision/data/barbumayo2019/test.py +10 -0
  116. brainscore_vision/data/bashivankar2019/__init__.py +52 -0
  117. brainscore_vision/data/bashivankar2019/data_packaging/2020-08-17_npc_v4_data.h5.png +0 -0
  118. brainscore_vision/data/bashivankar2019/data_packaging/requirements.txt +4 -0
  119. brainscore_vision/data/bashivankar2019/data_packaging/synthetic.py +162 -0
  120. brainscore_vision/data/bashivankar2019/test.py +15 -0
  121. brainscore_vision/data/bmd2024/__init__.py +69 -0
  122. brainscore_vision/data/bmd2024/data_packaging/BMD_2024_data_assembly.py +91 -0
  123. brainscore_vision/data/bmd2024/data_packaging/BMD_2024_simulus_set.py +48 -0
  124. brainscore_vision/data/bmd2024/data_packaging/stim_meta.csv +401 -0
  125. brainscore_vision/data/bmd2024/test.py +130 -0
  126. brainscore_vision/data/bracci2019/__init__.py +36 -0
  127. brainscore_vision/data/bracci2019/data_packaging.py +221 -0
  128. brainscore_vision/data/bracci2019/test.py +16 -0
  129. brainscore_vision/data/cadena2017/__init__.py +52 -0
  130. brainscore_vision/data/cadena2017/data_packaging/2018-08-07_tolias_v1.ipynb +25880 -0
  131. brainscore_vision/data/cadena2017/data_packaging/analysis.py +26 -0
  132. brainscore_vision/data/cadena2017/test.py +24 -0
  133. brainscore_vision/data/cichy2019/__init__.py +38 -0
  134. brainscore_vision/data/cichy2019/test.py +8 -0
  135. brainscore_vision/data/coggan2024_behavior/__init__.py +36 -0
  136. brainscore_vision/data/coggan2024_behavior/data_packaging.py +166 -0
  137. brainscore_vision/data/coggan2024_behavior/test.py +32 -0
  138. brainscore_vision/data/coggan2024_fMRI/__init__.py +27 -0
  139. brainscore_vision/data/coggan2024_fMRI/data_packaging.py +123 -0
  140. brainscore_vision/data/coggan2024_fMRI/test.py +25 -0
  141. brainscore_vision/data/david2004/__init__.py +34 -0
  142. brainscore_vision/data/david2004/data_packaging/2018-05-10_gallant_data.ipynb +3647 -0
  143. brainscore_vision/data/david2004/data_packaging/2018-05-23_gallant_data.ipynb +3149 -0
  144. brainscore_vision/data/david2004/data_packaging/2018-06-05_gallant_data.ipynb +3628 -0
  145. brainscore_vision/data/david2004/data_packaging/__init__.py +61 -0
  146. brainscore_vision/data/david2004/data_packaging/convertGallant.m +100 -0
  147. brainscore_vision/data/david2004/data_packaging/convertGallantV1Aligned.m +58 -0
  148. brainscore_vision/data/david2004/data_packaging/lib/DataHash_20160618/DataHash.m +484 -0
  149. brainscore_vision/data/david2004/data_packaging/lib/DataHash_20160618/license.txt +24 -0
  150. brainscore_vision/data/david2004/data_packaging/lib/GetMD5/GetMD5.c +895 -0
  151. brainscore_vision/data/david2004/data_packaging/lib/GetMD5/GetMD5.m +107 -0
  152. brainscore_vision/data/david2004/data_packaging/lib/GetMD5/GetMD5.mexw64 +0 -0
  153. brainscore_vision/data/david2004/data_packaging/lib/GetMD5/GetMD5_helper.m +91 -0
  154. brainscore_vision/data/david2004/data_packaging/lib/GetMD5/InstallMex.m +307 -0
  155. brainscore_vision/data/david2004/data_packaging/lib/GetMD5/license.txt +24 -0
  156. brainscore_vision/data/david2004/data_packaging/lib/GetMD5/uTest_GetMD5.m +290 -0
  157. brainscore_vision/data/david2004/data_packaging/lib/glob/glob.m +472 -0
  158. brainscore_vision/data/david2004/data_packaging/lib/glob/license.txt +27 -0
  159. brainscore_vision/data/david2004/data_packaging/xr_align_debug.py +137 -0
  160. brainscore_vision/data/david2004/test.py +8 -0
  161. brainscore_vision/data/deng2009/__init__.py +22 -0
  162. brainscore_vision/data/deng2009/deng2009imagenet.py +33 -0
  163. brainscore_vision/data/deng2009/test.py +9 -0
  164. brainscore_vision/data/ferguson2024/__init__.py +401 -0
  165. brainscore_vision/data/ferguson2024/data_packaging/data_packaging.py +164 -0
  166. brainscore_vision/data/ferguson2024/data_packaging/fitting_stimuli.py +20 -0
  167. brainscore_vision/data/ferguson2024/requirements.txt +2 -0
  168. brainscore_vision/data/ferguson2024/test.py +155 -0
  169. brainscore_vision/data/freemanziemba2013/__init__.py +133 -0
  170. brainscore_vision/data/freemanziemba2013/data_packaging/2018-10-05_movshon.ipynb +2002 -0
  171. brainscore_vision/data/freemanziemba2013/data_packaging/2020-02-21_movshon_aperture.ipynb +4730 -0
  172. brainscore_vision/data/freemanziemba2013/data_packaging/2020-02-26_movshon_aperture_test.ipynb +2228 -0
  173. brainscore_vision/data/freemanziemba2013/data_packaging/aperture_correct.py +160 -0
  174. brainscore_vision/data/freemanziemba2013/data_packaging/data_packaging.py +57 -0
  175. brainscore_vision/data/freemanziemba2013/data_packaging/movshon.py +202 -0
  176. brainscore_vision/data/freemanziemba2013/test.py +97 -0
  177. brainscore_vision/data/geirhos2021/__init__.py +358 -0
  178. brainscore_vision/data/geirhos2021/creating_geirhos_ids.ipynb +468 -0
  179. brainscore_vision/data/geirhos2021/data_packaging/colour/colour_data_assembly.py +87 -0
  180. brainscore_vision/data/geirhos2021/data_packaging/colour/colour_stimulus_set.py +81 -0
  181. brainscore_vision/data/geirhos2021/data_packaging/contrast/contrast_data_assembly.py +83 -0
  182. brainscore_vision/data/geirhos2021/data_packaging/contrast/contrast_stimulus_set.py +82 -0
  183. brainscore_vision/data/geirhos2021/data_packaging/cue-conflict/cue-conflict_data_assembly.py +100 -0
  184. brainscore_vision/data/geirhos2021/data_packaging/cue-conflict/cue-conflict_stimulus_set.py +84 -0
  185. brainscore_vision/data/geirhos2021/data_packaging/edge/edge_data_assembly.py +96 -0
  186. brainscore_vision/data/geirhos2021/data_packaging/edge/edge_stimulus_set.py +69 -0
  187. brainscore_vision/data/geirhos2021/data_packaging/eidolonI/eidolonI_data_assembly.py +92 -0
  188. brainscore_vision/data/geirhos2021/data_packaging/eidolonI/eidolonI_stimulus_set.py +82 -0
  189. brainscore_vision/data/geirhos2021/data_packaging/eidolonII/eidolonII_data_assembly.py +92 -0
  190. brainscore_vision/data/geirhos2021/data_packaging/eidolonII/eidolonII_stimulus_set.py +82 -0
  191. brainscore_vision/data/geirhos2021/data_packaging/eidolonIII/eidolonIII_data_assembly.py +92 -0
  192. brainscore_vision/data/geirhos2021/data_packaging/eidolonIII/eidolonIII_stimulus_set.py +82 -0
  193. brainscore_vision/data/geirhos2021/data_packaging/false-colour/false-colour_data_assembly.py +83 -0
  194. brainscore_vision/data/geirhos2021/data_packaging/false-colour/false-colour_stimulus_set.py +87 -0
  195. brainscore_vision/data/geirhos2021/data_packaging/high-pass/high-pass_data_assembly.py +84 -0
  196. brainscore_vision/data/geirhos2021/data_packaging/high-pass/high-pass_stimulus_set.py +82 -0
  197. brainscore_vision/data/geirhos2021/data_packaging/low-pass/low-pass_data_assembly.py +84 -0
  198. brainscore_vision/data/geirhos2021/data_packaging/low-pass/low-pass_stimulus_set.py +81 -0
  199. brainscore_vision/data/geirhos2021/data_packaging/phase-scrambling/phase-scrambling_data_assembly.py +84 -0
  200. brainscore_vision/data/geirhos2021/data_packaging/phase-scrambling/phase-scrambling_stimulus_set.py +82 -0
  201. brainscore_vision/data/geirhos2021/data_packaging/power-equalisation/power-equalisation_data_assembly.py +88 -0
  202. brainscore_vision/data/geirhos2021/data_packaging/power-equalisation/power-equalisation_stimulus_set.py +82 -0
  203. brainscore_vision/data/geirhos2021/data_packaging/rotation/rotation_data_assembly.py +87 -0
  204. brainscore_vision/data/geirhos2021/data_packaging/rotation/rotation_stimulus_set.py +82 -0
  205. brainscore_vision/data/geirhos2021/data_packaging/silhouette/silhouette_data_assembly.py +100 -0
  206. brainscore_vision/data/geirhos2021/data_packaging/silhouette/silhouette_stimulus_set.py +71 -0
  207. brainscore_vision/data/geirhos2021/data_packaging/sketch/sketch_data_assembly.py +88 -0
  208. brainscore_vision/data/geirhos2021/data_packaging/sketch/sketch_stimulus_set.py +75 -0
  209. brainscore_vision/data/geirhos2021/data_packaging/stylized/stylized_data_assembly.py +87 -0
  210. brainscore_vision/data/geirhos2021/data_packaging/stylized/stylized_stimulus_set.py +75 -0
  211. brainscore_vision/data/geirhos2021/data_packaging/uniform-noise/uniform-noise_data_assembly.py +86 -0
  212. brainscore_vision/data/geirhos2021/data_packaging/uniform-noise/uniform-noise_stimulus_set.py +82 -0
  213. brainscore_vision/data/geirhos2021/geirhos_hashes.csv +52 -0
  214. brainscore_vision/data/geirhos2021/test.py +330 -0
  215. brainscore_vision/data/hebart2023/__init__.py +23 -0
  216. brainscore_vision/data/hebart2023/packaging/data_assembly.py +40 -0
  217. brainscore_vision/data/hebart2023/packaging/stimulus_set.py +72 -0
  218. brainscore_vision/data/hebart2023/test.py +42 -0
  219. brainscore_vision/data/hendrycks2019/__init__.py +45 -0
  220. brainscore_vision/data/hendrycks2019/test.py +26 -0
  221. brainscore_vision/data/igustibagus2024/__init__.py +23 -0
  222. brainscore_vision/data/igustibagus2024/dependencies/data_pico/stimulus_dicarlo_domain_transfer.csv +3139 -0
  223. brainscore_vision/data/igustibagus2024/investigation_consistency.ipynb +346 -0
  224. brainscore_vision/data/igustibagus2024/merged_assembly/__init__.py +0 -0
  225. brainscore_vision/data/igustibagus2024/merged_assembly/create_merged_assembly.ipynb +649 -0
  226. brainscore_vision/data/igustibagus2024/merged_assembly/create_merged_assembly_and_stim.py +152 -0
  227. brainscore_vision/data/igustibagus2024/merged_assembly/create_stimulus_set_with_background-id.py +45 -0
  228. brainscore_vision/data/igustibagus2024/merged_assembly/helpers_background_id.py +849 -0
  229. brainscore_vision/data/igustibagus2024/merged_assembly/merged_stimulus_set.csv +3139 -0
  230. brainscore_vision/data/igustibagus2024/oleo_pico_exploration.ipynb +410 -0
  231. brainscore_vision/data/igustibagus2024/test.py +26 -0
  232. brainscore_vision/data/imagenetslim15000/ImageNetSlim15000.py +30 -0
  233. brainscore_vision/data/imagenetslim15000/__init__.py +11 -0
  234. brainscore_vision/data/imagenetslim15000/test.py +8 -0
  235. brainscore_vision/data/islam2021/__init__.py +18 -0
  236. brainscore_vision/data/islam2021/data_packaging.py +64 -0
  237. brainscore_vision/data/islam2021/test.py +11 -0
  238. brainscore_vision/data/kar2018/__init__.py +58 -0
  239. brainscore_vision/data/kar2018/data_packaging/kar_coco.py +97 -0
  240. brainscore_vision/data/kar2018/data_packaging/kar_hvm.py +77 -0
  241. brainscore_vision/data/kar2018/data_packaging/requirements.txt +1 -0
  242. brainscore_vision/data/kar2018/test.py +10 -0
  243. brainscore_vision/data/kar2019/__init__.py +43 -0
  244. brainscore_vision/data/kar2019/data_packaging.py +116 -0
  245. brainscore_vision/data/kar2019/test.py +8 -0
  246. brainscore_vision/data/kuzovkin2018/__init__.py +36 -0
  247. brainscore_vision/data/kuzovkin2018/createAssembliesBrainScore.py +103 -0
  248. brainscore_vision/data/kuzovkin2018/test.py +8 -0
  249. brainscore_vision/data/majajhong2015/__init__.py +113 -0
  250. brainscore_vision/data/majajhong2015/data_packaging/darren10ms.py +32 -0
  251. brainscore_vision/data/majajhong2015/data_packaging/data_packaging.py +65 -0
  252. brainscore_vision/data/majajhong2015/test.py +38 -0
  253. brainscore_vision/data/malania2007/__init__.py +254 -0
  254. brainscore_vision/data/malania2007/data_packaging/malania_data_assembly.py +79 -0
  255. brainscore_vision/data/malania2007/data_packaging/malania_stimulus_set.py +79 -0
  256. brainscore_vision/data/malania2007/test.py +147 -0
  257. brainscore_vision/data/maniquet2024/__init__.py +57 -0
  258. brainscore_vision/data/maniquet2024/data_packaging.py +151 -0
  259. brainscore_vision/data/maniquet2024/test.py +16 -0
  260. brainscore_vision/data/marques2020/__init__.py +123 -0
  261. brainscore_vision/data/marques2020/data_packaging/marques_cavanaugh2002a.py +84 -0
  262. brainscore_vision/data/marques2020/data_packaging/marques_devalois1982a.py +44 -0
  263. brainscore_vision/data/marques2020/data_packaging/marques_devalois1982b.py +54 -0
  264. brainscore_vision/data/marques2020/data_packaging/marques_freemanZiemba2013.py +252 -0
  265. brainscore_vision/data/marques2020/data_packaging/marques_gen_stim.py +95 -0
  266. brainscore_vision/data/marques2020/data_packaging/marques_ringach2002.py +95 -0
  267. brainscore_vision/data/marques2020/data_packaging/marques_schiller1976c.py +60 -0
  268. brainscore_vision/data/marques2020/data_packaging/marques_stim_common.py +389 -0
  269. brainscore_vision/data/marques2020/data_packaging/marques_utils.py +21 -0
  270. brainscore_vision/data/marques2020/data_packaging/setup.py +13 -0
  271. brainscore_vision/data/marques2020/test.py +54 -0
  272. brainscore_vision/data/rajalingham2018/__init__.py +56 -0
  273. brainscore_vision/data/rajalingham2018/rajalingham2018objectome.py +193 -0
  274. brainscore_vision/data/rajalingham2018/test.py +10 -0
  275. brainscore_vision/data/rajalingham2020/__init__.py +39 -0
  276. brainscore_vision/data/rajalingham2020/rajalingham2020orthographic_IT.py +97 -0
  277. brainscore_vision/data/rajalingham2020/test.py +8 -0
  278. brainscore_vision/data/rust2012/2020-12-28_rust.ipynb +3301 -0
  279. brainscore_vision/data/rust2012/__init__.py +45 -0
  280. brainscore_vision/data/rust2012/rust305.py +35 -0
  281. brainscore_vision/data/rust2012/test.py +47 -0
  282. brainscore_vision/data/sanghavi2020/__init__.py +119 -0
  283. brainscore_vision/data/sanghavi2020/data_packaging/environment.yml +36 -0
  284. brainscore_vision/data/sanghavi2020/data_packaging/requirements.txt +4 -0
  285. brainscore_vision/data/sanghavi2020/data_packaging/sanghavi2020.py +101 -0
  286. brainscore_vision/data/sanghavi2020/data_packaging/sanghavijozwik2020.py +148 -0
  287. brainscore_vision/data/sanghavi2020/data_packaging/sanghavikar2020.py +131 -0
  288. brainscore_vision/data/sanghavi2020/data_packaging/sanghavimurty2020.py +120 -0
  289. brainscore_vision/data/sanghavi2020/data_packaging/sanghavimurty2020things.py +138 -0
  290. brainscore_vision/data/sanghavi2020/data_packaging/sanghavimurty2020things1.py +118 -0
  291. brainscore_vision/data/sanghavi2020/data_packaging/sanghavimurty2020things2.py +118 -0
  292. brainscore_vision/data/sanghavi2020/test.py +13 -0
  293. brainscore_vision/data/scialom2024/__init__.py +386 -0
  294. brainscore_vision/data/scialom2024/data_packaging/scialom_data_assembly.py +164 -0
  295. brainscore_vision/data/scialom2024/data_packaging/scialom_stimulus_set.py +117 -0
  296. brainscore_vision/data/scialom2024/test.py +301 -0
  297. brainscore_vision/data/seibert2019/__init__.py +25 -0
  298. brainscore_vision/data/seibert2019/data_packaging/2020-10-13_juvenile.ipynb +35703 -0
  299. brainscore_vision/data/seibert2019/data_packaging/2020-11-18_juvenile_scratch.txt +556 -0
  300. brainscore_vision/data/seibert2019/data_packaging/2020-11-22_juvenile_dldata.ipynb +3614 -0
  301. brainscore_vision/data/seibert2019/data_packaging/juvenile.py +103 -0
  302. brainscore_vision/data/seibert2019/test.py +35 -0
  303. brainscore_vision/data/zhang2018/__init__.py +38 -0
  304. brainscore_vision/data/zhang2018/test.py +29 -0
  305. brainscore_vision/data_helpers/__init__.py +0 -0
  306. brainscore_vision/data_helpers/lookup_legacy.py +15 -0
  307. brainscore_vision/data_helpers/s3.py +79 -0
  308. brainscore_vision/metric_helpers/__init__.py +5 -0
  309. brainscore_vision/metric_helpers/temporal.py +119 -0
  310. brainscore_vision/metric_helpers/transformations.py +379 -0
  311. brainscore_vision/metric_helpers/utils.py +71 -0
  312. brainscore_vision/metric_helpers/xarray_utils.py +151 -0
  313. brainscore_vision/metrics/__init__.py +7 -0
  314. brainscore_vision/metrics/accuracy/__init__.py +4 -0
  315. brainscore_vision/metrics/accuracy/metric.py +16 -0
  316. brainscore_vision/metrics/accuracy/test.py +11 -0
  317. brainscore_vision/metrics/accuracy_distance/__init__.py +4 -0
  318. brainscore_vision/metrics/accuracy_distance/metric.py +109 -0
  319. brainscore_vision/metrics/accuracy_distance/test.py +57 -0
  320. brainscore_vision/metrics/baker_accuracy_delta/__init__.py +4 -0
  321. brainscore_vision/metrics/baker_accuracy_delta/metric.py +94 -0
  322. brainscore_vision/metrics/baker_accuracy_delta/requirements.txt +1 -0
  323. brainscore_vision/metrics/baker_accuracy_delta/test.py +1 -0
  324. brainscore_vision/metrics/cka/__init__.py +14 -0
  325. brainscore_vision/metrics/cka/metric.py +105 -0
  326. brainscore_vision/metrics/cka/test.py +28 -0
  327. brainscore_vision/metrics/dimensionality/__init__.py +13 -0
  328. brainscore_vision/metrics/dimensionality/metric.py +45 -0
  329. brainscore_vision/metrics/distribution_similarity/__init__.py +14 -0
  330. brainscore_vision/metrics/distribution_similarity/metric.py +84 -0
  331. brainscore_vision/metrics/distribution_similarity/test.py +10 -0
  332. brainscore_vision/metrics/error_consistency/__init__.py +13 -0
  333. brainscore_vision/metrics/error_consistency/metric.py +93 -0
  334. brainscore_vision/metrics/error_consistency/test.py +39 -0
  335. brainscore_vision/metrics/i1i2/__init__.py +16 -0
  336. brainscore_vision/metrics/i1i2/metric.py +299 -0
  337. brainscore_vision/metrics/i1i2/requirements.txt +2 -0
  338. brainscore_vision/metrics/i1i2/test.py +36 -0
  339. brainscore_vision/metrics/i1i2/test_resources/alexnet-probabilities.nc +0 -0
  340. brainscore_vision/metrics/i1i2/test_resources/resnet18-probabilities.nc +0 -0
  341. brainscore_vision/metrics/i1i2/test_resources/resnet34-probabilities.nc +0 -0
  342. brainscore_vision/metrics/internal_consistency/__init__.py +8 -0
  343. brainscore_vision/metrics/internal_consistency/ceiling.py +127 -0
  344. brainscore_vision/metrics/internal_consistency/requirements.txt +1 -0
  345. brainscore_vision/metrics/internal_consistency/test.py +39 -0
  346. brainscore_vision/metrics/maniquet2024_metrics/__init__.py +19 -0
  347. brainscore_vision/metrics/maniquet2024_metrics/metric.py +416 -0
  348. brainscore_vision/metrics/maniquet2024_metrics/test.py +8 -0
  349. brainscore_vision/metrics/mask_regression/__init__.py +16 -0
  350. brainscore_vision/metrics/mask_regression/metric.py +242 -0
  351. brainscore_vision/metrics/mask_regression/requirements.txt +1 -0
  352. brainscore_vision/metrics/mask_regression/test.py +0 -0
  353. brainscore_vision/metrics/ost/__init__.py +23 -0
  354. brainscore_vision/metrics/ost/metric.py +350 -0
  355. brainscore_vision/metrics/ost/requirements.txt +2 -0
  356. brainscore_vision/metrics/ost/test.py +0 -0
  357. brainscore_vision/metrics/rdm/__init__.py +14 -0
  358. brainscore_vision/metrics/rdm/metric.py +101 -0
  359. brainscore_vision/metrics/rdm/requirements.txt +2 -0
  360. brainscore_vision/metrics/rdm/test.py +63 -0
  361. brainscore_vision/metrics/regression_correlation/__init__.py +48 -0
  362. brainscore_vision/metrics/regression_correlation/mask_regression.py +232 -0
  363. brainscore_vision/metrics/regression_correlation/metric.py +125 -0
  364. brainscore_vision/metrics/regression_correlation/requirements.txt +3 -0
  365. brainscore_vision/metrics/regression_correlation/test.py +36 -0
  366. brainscore_vision/metrics/threshold/__init__.py +5 -0
  367. brainscore_vision/metrics/threshold/metric.py +481 -0
  368. brainscore_vision/metrics/threshold/test.py +71 -0
  369. brainscore_vision/metrics/value_delta/__init__.py +4 -0
  370. brainscore_vision/metrics/value_delta/metric.py +30 -0
  371. brainscore_vision/metrics/value_delta/requirements.txt +1 -0
  372. brainscore_vision/metrics/value_delta/test.py +40 -0
  373. brainscore_vision/model_helpers/__init__.py +3 -0
  374. brainscore_vision/model_helpers/activations/__init__.py +1 -0
  375. brainscore_vision/model_helpers/activations/core.py +635 -0
  376. brainscore_vision/model_helpers/activations/pca.py +117 -0
  377. brainscore_vision/model_helpers/activations/pytorch.py +152 -0
  378. brainscore_vision/model_helpers/activations/temporal/__init__.py +0 -0
  379. brainscore_vision/model_helpers/activations/temporal/core/__init__.py +3 -0
  380. brainscore_vision/model_helpers/activations/temporal/core/executor.py +219 -0
  381. brainscore_vision/model_helpers/activations/temporal/core/extractor.py +282 -0
  382. brainscore_vision/model_helpers/activations/temporal/core/inferencer/__init__.py +2 -0
  383. brainscore_vision/model_helpers/activations/temporal/core/inferencer/base.py +274 -0
  384. brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/__init__.py +2 -0
  385. brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/base.py +134 -0
  386. brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/temporal_context/__init__.py +2 -0
  387. brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/temporal_context/base.py +99 -0
  388. brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/temporal_context/block.py +77 -0
  389. brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/temporal_context/causal.py +86 -0
  390. brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/time_aligner.py +73 -0
  391. brainscore_vision/model_helpers/activations/temporal/inputs/__init__.py +3 -0
  392. brainscore_vision/model_helpers/activations/temporal/inputs/base.py +17 -0
  393. brainscore_vision/model_helpers/activations/temporal/inputs/image.py +50 -0
  394. brainscore_vision/model_helpers/activations/temporal/inputs/video.py +186 -0
  395. brainscore_vision/model_helpers/activations/temporal/model/__init__.py +2 -0
  396. brainscore_vision/model_helpers/activations/temporal/model/base.py +33 -0
  397. brainscore_vision/model_helpers/activations/temporal/model/pytorch.py +107 -0
  398. brainscore_vision/model_helpers/activations/temporal/utils.py +228 -0
  399. brainscore_vision/model_helpers/brain_transformation/__init__.py +97 -0
  400. brainscore_vision/model_helpers/brain_transformation/behavior.py +348 -0
  401. brainscore_vision/model_helpers/brain_transformation/imagenet_classes.txt +1000 -0
  402. brainscore_vision/model_helpers/brain_transformation/neural.py +159 -0
  403. brainscore_vision/model_helpers/brain_transformation/temporal.py +199 -0
  404. brainscore_vision/model_helpers/check_submission/__init__.py +0 -0
  405. brainscore_vision/model_helpers/check_submission/check_models.py +87 -0
  406. brainscore_vision/model_helpers/check_submission/images/1.png +0 -0
  407. brainscore_vision/model_helpers/check_submission/images/10.png +0 -0
  408. brainscore_vision/model_helpers/check_submission/images/11.png +0 -0
  409. brainscore_vision/model_helpers/check_submission/images/12.png +0 -0
  410. brainscore_vision/model_helpers/check_submission/images/13.png +0 -0
  411. brainscore_vision/model_helpers/check_submission/images/14.png +0 -0
  412. brainscore_vision/model_helpers/check_submission/images/15.png +0 -0
  413. brainscore_vision/model_helpers/check_submission/images/16.png +0 -0
  414. brainscore_vision/model_helpers/check_submission/images/17.png +0 -0
  415. brainscore_vision/model_helpers/check_submission/images/18.png +0 -0
  416. brainscore_vision/model_helpers/check_submission/images/19.png +0 -0
  417. brainscore_vision/model_helpers/check_submission/images/2.png +0 -0
  418. brainscore_vision/model_helpers/check_submission/images/20.png +0 -0
  419. brainscore_vision/model_helpers/check_submission/images/3.png +0 -0
  420. brainscore_vision/model_helpers/check_submission/images/4.png +0 -0
  421. brainscore_vision/model_helpers/check_submission/images/5.png +0 -0
  422. brainscore_vision/model_helpers/check_submission/images/6.png +0 -0
  423. brainscore_vision/model_helpers/check_submission/images/7.png +0 -0
  424. brainscore_vision/model_helpers/check_submission/images/8.png +0 -0
  425. brainscore_vision/model_helpers/check_submission/images/9.png +0 -0
  426. brainscore_vision/model_helpers/conftest.py +3 -0
  427. brainscore_vision/model_helpers/generic_plugin_tests.py +119 -0
  428. brainscore_vision/model_helpers/s3.py +62 -0
  429. brainscore_vision/model_helpers/utils/__init__.py +15 -0
  430. brainscore_vision/model_helpers/utils/s3.py +42 -0
  431. brainscore_vision/model_interface.py +214 -0
  432. brainscore_vision/models/AdvProp_efficientne_b6/__init__.py +5 -0
  433. brainscore_vision/models/AdvProp_efficientne_b6/model.py +75 -0
  434. brainscore_vision/models/AdvProp_efficientne_b6/requirements.txt +1 -0
  435. brainscore_vision/models/AdvProp_efficientne_b6/test.py +9 -0
  436. brainscore_vision/models/AlexNet_SIN/__init__.py +8 -0
  437. brainscore_vision/models/AlexNet_SIN/model.py +29 -0
  438. brainscore_vision/models/AlexNet_SIN/requirements.txt +2 -0
  439. brainscore_vision/models/AlexNet_SIN/test.py +1 -0
  440. brainscore_vision/models/Soumyadeep_inf_1/__init__.py +5 -0
  441. brainscore_vision/models/Soumyadeep_inf_1/model.py +60 -0
  442. brainscore_vision/models/Soumyadeep_inf_1/setup.py +26 -0
  443. brainscore_vision/models/Soumyadeep_inf_1/test.py +1 -0
  444. brainscore_vision/models/ViT_L_32_imagenet1k/__init__.py +8 -0
  445. brainscore_vision/models/ViT_L_32_imagenet1k/model.py +43 -0
  446. brainscore_vision/models/ViT_L_32_imagenet1k/requirements.txt +4 -0
  447. brainscore_vision/models/ViT_L_32_imagenet1k/test.py +8 -0
  448. brainscore_vision/models/__init__.py +0 -0
  449. brainscore_vision/models/alexnet/__init__.py +8 -0
  450. brainscore_vision/models/alexnet/model.py +28 -0
  451. brainscore_vision/models/alexnet/requirements.txt +2 -0
  452. brainscore_vision/models/alexnet/test.py +15 -0
  453. brainscore_vision/models/alexnet_7be5be79/__init__.py +7 -0
  454. brainscore_vision/models/alexnet_7be5be79/model.py +44 -0
  455. brainscore_vision/models/alexnet_7be5be79/setup.py +26 -0
  456. brainscore_vision/models/alexnet_7be5be79/test.py +1 -0
  457. brainscore_vision/models/alexnet_7be5be79_convs/__init__.py +5 -0
  458. brainscore_vision/models/alexnet_7be5be79_convs/model.py +42 -0
  459. brainscore_vision/models/alexnet_7be5be79_convs/setup.py +25 -0
  460. brainscore_vision/models/alexnet_7be5be79_convs/test.py +1 -0
  461. brainscore_vision/models/alexnet_ks_torevert/__init__.py +8 -0
  462. brainscore_vision/models/alexnet_ks_torevert/model.py +28 -0
  463. brainscore_vision/models/alexnet_ks_torevert/requirements.txt +2 -0
  464. brainscore_vision/models/alexnet_ks_torevert/test.py +15 -0
  465. brainscore_vision/models/alexnet_simclr_run1/__init__.py +7 -0
  466. brainscore_vision/models/alexnet_simclr_run1/model.py +267 -0
  467. brainscore_vision/models/alexnet_simclr_run1/requirements.txt +2 -0
  468. brainscore_vision/models/alexnet_simclr_run1/test.py +1 -0
  469. brainscore_vision/models/alexnet_testing/__init__.py +8 -0
  470. brainscore_vision/models/alexnet_testing/model.py +28 -0
  471. brainscore_vision/models/alexnet_testing/requirements.txt +2 -0
  472. brainscore_vision/models/alexnet_testing/setup.py +24 -0
  473. brainscore_vision/models/alexnet_testing/test.py +15 -0
  474. brainscore_vision/models/antialias_resnet152/__init__.py +7 -0
  475. brainscore_vision/models/antialias_resnet152/model.py +35 -0
  476. brainscore_vision/models/antialias_resnet152/requirements.txt +3 -0
  477. brainscore_vision/models/antialias_resnet152/test.py +8 -0
  478. brainscore_vision/models/antialiased_rnext101_32x8d/__init__.py +7 -0
  479. brainscore_vision/models/antialiased_rnext101_32x8d/model.py +35 -0
  480. brainscore_vision/models/antialiased_rnext101_32x8d/requirements.txt +1 -0
  481. brainscore_vision/models/antialiased_rnext101_32x8d/test.py +8 -0
  482. brainscore_vision/models/bp_resnet50_julios/__init__.py +5 -0
  483. brainscore_vision/models/bp_resnet50_julios/model.py +52 -0
  484. brainscore_vision/models/bp_resnet50_julios/setup.py +24 -0
  485. brainscore_vision/models/bp_resnet50_julios/test.py +1 -0
  486. brainscore_vision/models/clip/__init__.py +5 -0
  487. brainscore_vision/models/clip/model.py +179 -0
  488. brainscore_vision/models/clip/requirements.txt +4 -0
  489. brainscore_vision/models/clip/test.py +1 -0
  490. brainscore_vision/models/clipvision/__init__.py +5 -0
  491. brainscore_vision/models/clipvision/model.py +179 -0
  492. brainscore_vision/models/clipvision/requirements.txt +4 -0
  493. brainscore_vision/models/clipvision/test.py +1 -0
  494. brainscore_vision/models/cornet_s/__init__.py +8 -0
  495. brainscore_vision/models/cornet_s/helpers/helpers.py +215 -0
  496. brainscore_vision/models/cornet_s/model.py +77 -0
  497. brainscore_vision/models/cornet_s/requirements.txt +7 -0
  498. brainscore_vision/models/cornet_s/test.py +8 -0
  499. brainscore_vision/models/cornet_s_ynshah/__init__.py +388 -0
  500. brainscore_vision/models/cornet_s_ynshah/model.py +192 -0
  501. brainscore_vision/models/cornet_s_ynshah/setup.py +24 -0
  502. brainscore_vision/models/cornet_s_ynshah/test.py +0 -0
  503. brainscore_vision/models/custom_model_cv_18_dagger_408/__init__.py +7 -0
  504. brainscore_vision/models/custom_model_cv_18_dagger_408/model.py +75 -0
  505. brainscore_vision/models/custom_model_cv_18_dagger_408/requirements.txt +4 -0
  506. brainscore_vision/models/custom_model_cv_18_dagger_408/test.py +8 -0
  507. brainscore_vision/models/cv_18_dagger_408_pretrained/__init__.py +8 -0
  508. brainscore_vision/models/cv_18_dagger_408_pretrained/model.py +57 -0
  509. brainscore_vision/models/cv_18_dagger_408_pretrained/requirements.txt +3 -0
  510. brainscore_vision/models/cv_18_dagger_408_pretrained/test.py +25 -0
  511. brainscore_vision/models/cvt_cvt_w24_384_in22k_finetuned_in1k_4/__init__.py +9 -0
  512. brainscore_vision/models/cvt_cvt_w24_384_in22k_finetuned_in1k_4/model.py +134 -0
  513. brainscore_vision/models/cvt_cvt_w24_384_in22k_finetuned_in1k_4/requirements.txt +4 -0
  514. brainscore_vision/models/cvt_cvt_w24_384_in22k_finetuned_in1k_4/test.py +8 -0
  515. brainscore_vision/models/dbp_resnet50_julios/__init__.py +5 -0
  516. brainscore_vision/models/dbp_resnet50_julios/model.py +52 -0
  517. brainscore_vision/models/dbp_resnet50_julios/setup.py +24 -0
  518. brainscore_vision/models/dbp_resnet50_julios/test.py +1 -0
  519. brainscore_vision/models/densenet_201_pytorch/__init__.py +7 -0
  520. brainscore_vision/models/densenet_201_pytorch/model.py +59 -0
  521. brainscore_vision/models/densenet_201_pytorch/requirements.txt +3 -0
  522. brainscore_vision/models/densenet_201_pytorch/test.py +8 -0
  523. brainscore_vision/models/eBarlow_Vanilla/__init__.py +9 -0
  524. brainscore_vision/models/eBarlow_Vanilla/model.py +50 -0
  525. brainscore_vision/models/eBarlow_Vanilla/requirements.txt +2 -0
  526. brainscore_vision/models/eBarlow_Vanilla/setup.py +24 -0
  527. brainscore_vision/models/eBarlow_Vanilla/test.py +1 -0
  528. brainscore_vision/models/eBarlow_Vanilla_1/__init__.py +9 -0
  529. brainscore_vision/models/eBarlow_Vanilla_1/model.py +64 -0
  530. brainscore_vision/models/eBarlow_Vanilla_1/setup.py +24 -0
  531. brainscore_vision/models/eBarlow_Vanilla_1/test.py +1 -0
  532. brainscore_vision/models/eBarlow_Vanilla_1_full/__init__.py +9 -0
  533. brainscore_vision/models/eBarlow_Vanilla_1_full/model.py +84 -0
  534. brainscore_vision/models/eBarlow_Vanilla_1_full/setup.py +25 -0
  535. brainscore_vision/models/eBarlow_Vanilla_1_full/test.py +1 -0
  536. brainscore_vision/models/eBarlow_Vanilla_2/__init__.py +9 -0
  537. brainscore_vision/models/eBarlow_Vanilla_2/model.py +64 -0
  538. brainscore_vision/models/eBarlow_Vanilla_2/setup.py +24 -0
  539. brainscore_vision/models/eBarlow_Vanilla_2/test.py +1 -0
  540. brainscore_vision/models/eBarlow_augself_linear_1/__init__.py +9 -0
  541. brainscore_vision/models/eBarlow_augself_linear_1/model.py +65 -0
  542. brainscore_vision/models/eBarlow_augself_linear_1/setup.py +24 -0
  543. brainscore_vision/models/eBarlow_augself_linear_1/test.py +1 -0
  544. brainscore_vision/models/eBarlow_augself_mlp_1/__init__.py +9 -0
  545. brainscore_vision/models/eBarlow_augself_mlp_1/model.py +65 -0
  546. brainscore_vision/models/eBarlow_augself_mlp_1/setup.py +24 -0
  547. brainscore_vision/models/eBarlow_augself_mlp_1/test.py +1 -0
  548. brainscore_vision/models/eBarlow_lmda_0001_1/__init__.py +9 -0
  549. brainscore_vision/models/eBarlow_lmda_0001_1/model.py +65 -0
  550. brainscore_vision/models/eBarlow_lmda_0001_1/setup.py +24 -0
  551. brainscore_vision/models/eBarlow_lmda_0001_1/test.py +1 -0
  552. brainscore_vision/models/eBarlow_lmda_001_1/__init__.py +9 -0
  553. brainscore_vision/models/eBarlow_lmda_001_1/model.py +65 -0
  554. brainscore_vision/models/eBarlow_lmda_001_1/setup.py +24 -0
  555. brainscore_vision/models/eBarlow_lmda_001_1/test.py +1 -0
  556. brainscore_vision/models/eBarlow_lmda_001_2/__init__.py +9 -0
  557. brainscore_vision/models/eBarlow_lmda_001_2/model.py +65 -0
  558. brainscore_vision/models/eBarlow_lmda_001_2/setup.py +24 -0
  559. brainscore_vision/models/eBarlow_lmda_001_2/test.py +1 -0
  560. brainscore_vision/models/eBarlow_lmda_001_3/__init__.py +9 -0
  561. brainscore_vision/models/eBarlow_lmda_001_3/model.py +65 -0
  562. brainscore_vision/models/eBarlow_lmda_001_3/setup.py +24 -0
  563. brainscore_vision/models/eBarlow_lmda_001_3/test.py +1 -0
  564. brainscore_vision/models/eBarlow_lmda_01/__init__.py +9 -0
  565. brainscore_vision/models/eBarlow_lmda_01/model.py +50 -0
  566. brainscore_vision/models/eBarlow_lmda_01/requirements.txt +2 -0
  567. brainscore_vision/models/eBarlow_lmda_01/setup.py +24 -0
  568. brainscore_vision/models/eBarlow_lmda_01/test.py +1 -0
  569. brainscore_vision/models/eBarlow_lmda_01_1/__init__.py +9 -0
  570. brainscore_vision/models/eBarlow_lmda_01_1/model.py +65 -0
  571. brainscore_vision/models/eBarlow_lmda_01_1/setup.py +24 -0
  572. brainscore_vision/models/eBarlow_lmda_01_1/test.py +1 -0
  573. brainscore_vision/models/eBarlow_lmda_01_2/__init__.py +9 -0
  574. brainscore_vision/models/eBarlow_lmda_01_2/model.py +65 -0
  575. brainscore_vision/models/eBarlow_lmda_01_2/setup.py +24 -0
  576. brainscore_vision/models/eBarlow_lmda_01_2/test.py +1 -0
  577. brainscore_vision/models/eBarlow_lmda_02_1/__init__.py +9 -0
  578. brainscore_vision/models/eBarlow_lmda_02_1/model.py +65 -0
  579. brainscore_vision/models/eBarlow_lmda_02_1/setup.py +24 -0
  580. brainscore_vision/models/eBarlow_lmda_02_1/test.py +1 -0
  581. brainscore_vision/models/eBarlow_lmda_02_1000ep/__init__.py +9 -0
  582. brainscore_vision/models/eBarlow_lmda_02_1000ep/model.py +84 -0
  583. brainscore_vision/models/eBarlow_lmda_02_1000ep/setup.py +25 -0
  584. brainscore_vision/models/eBarlow_lmda_02_1000ep/test.py +1 -0
  585. brainscore_vision/models/eBarlow_lmda_02_1_full/__init__.py +9 -0
  586. brainscore_vision/models/eBarlow_lmda_02_1_full/model.py +85 -0
  587. brainscore_vision/models/eBarlow_lmda_02_1_full/setup.py +25 -0
  588. brainscore_vision/models/eBarlow_lmda_02_1_full/test.py +1 -0
  589. brainscore_vision/models/eBarlow_lmda_02_200_full/__init__.py +9 -0
  590. brainscore_vision/models/eBarlow_lmda_02_200_full/model.py +85 -0
  591. brainscore_vision/models/eBarlow_lmda_02_200_full/setup.py +25 -0
  592. brainscore_vision/models/eBarlow_lmda_02_200_full/test.py +1 -0
  593. brainscore_vision/models/eBarlow_lmda_03_1/__init__.py +9 -0
  594. brainscore_vision/models/eBarlow_lmda_03_1/model.py +65 -0
  595. brainscore_vision/models/eBarlow_lmda_03_1/setup.py +24 -0
  596. brainscore_vision/models/eBarlow_lmda_03_1/test.py +1 -0
  597. brainscore_vision/models/eBarlow_lmda_04_1/__init__.py +9 -0
  598. brainscore_vision/models/eBarlow_lmda_04_1/model.py +65 -0
  599. brainscore_vision/models/eBarlow_lmda_04_1/setup.py +24 -0
  600. brainscore_vision/models/eBarlow_lmda_04_1/test.py +1 -0
  601. brainscore_vision/models/eBarlow_lmda_05_1/__init__.py +9 -0
  602. brainscore_vision/models/eBarlow_lmda_05_1/model.py +65 -0
  603. brainscore_vision/models/eBarlow_lmda_05_1/setup.py +24 -0
  604. brainscore_vision/models/eBarlow_lmda_05_1/test.py +1 -0
  605. brainscore_vision/models/eMMCR_Mom_Vanilla_1/__init__.py +9 -0
  606. brainscore_vision/models/eMMCR_Mom_Vanilla_1/model.py +64 -0
  607. brainscore_vision/models/eMMCR_Mom_Vanilla_1/setup.py +24 -0
  608. brainscore_vision/models/eMMCR_Mom_Vanilla_1/test.py +1 -0
  609. brainscore_vision/models/eMMCR_Mom_Vanilla_2/__init__.py +9 -0
  610. brainscore_vision/models/eMMCR_Mom_Vanilla_2/model.py +64 -0
  611. brainscore_vision/models/eMMCR_Mom_Vanilla_2/setup.py +24 -0
  612. brainscore_vision/models/eMMCR_Mom_Vanilla_2/test.py +1 -0
  613. brainscore_vision/models/eMMCR_Mom_lmda_0001_1/__init__.py +9 -0
  614. brainscore_vision/models/eMMCR_Mom_lmda_0001_1/model.py +65 -0
  615. brainscore_vision/models/eMMCR_Mom_lmda_0001_1/setup.py +24 -0
  616. brainscore_vision/models/eMMCR_Mom_lmda_0001_1/test.py +1 -0
  617. brainscore_vision/models/eMMCR_Mom_lmda_001_1/__init__.py +9 -0
  618. brainscore_vision/models/eMMCR_Mom_lmda_001_1/model.py +65 -0
  619. brainscore_vision/models/eMMCR_Mom_lmda_001_1/setup.py +24 -0
  620. brainscore_vision/models/eMMCR_Mom_lmda_001_1/test.py +1 -0
  621. brainscore_vision/models/eMMCR_Mom_lmda_01_1/__init__.py +9 -0
  622. brainscore_vision/models/eMMCR_Mom_lmda_01_1/model.py +65 -0
  623. brainscore_vision/models/eMMCR_Mom_lmda_01_1/setup.py +24 -0
  624. brainscore_vision/models/eMMCR_Mom_lmda_01_1/test.py +1 -0
  625. brainscore_vision/models/eMMCR_Mom_lmda_01_2/__init__.py +9 -0
  626. brainscore_vision/models/eMMCR_Mom_lmda_01_2/model.py +65 -0
  627. brainscore_vision/models/eMMCR_Mom_lmda_01_2/setup.py +24 -0
  628. brainscore_vision/models/eMMCR_Mom_lmda_01_2/test.py +1 -0
  629. brainscore_vision/models/eMMCR_Mom_lmda_02_1/__init__.py +9 -0
  630. brainscore_vision/models/eMMCR_Mom_lmda_02_1/model.py +65 -0
  631. brainscore_vision/models/eMMCR_Mom_lmda_02_1/setup.py +24 -0
  632. brainscore_vision/models/eMMCR_Mom_lmda_02_1/test.py +1 -0
  633. brainscore_vision/models/eMMCR_Mom_lmda_03_1/__init__.py +9 -0
  634. brainscore_vision/models/eMMCR_Mom_lmda_03_1/model.py +65 -0
  635. brainscore_vision/models/eMMCR_Mom_lmda_03_1/setup.py +24 -0
  636. brainscore_vision/models/eMMCR_Mom_lmda_03_1/test.py +1 -0
  637. brainscore_vision/models/eMMCR_Mom_lmda_04_1/__init__.py +9 -0
  638. brainscore_vision/models/eMMCR_Mom_lmda_04_1/model.py +65 -0
  639. brainscore_vision/models/eMMCR_Mom_lmda_04_1/setup.py +24 -0
  640. brainscore_vision/models/eMMCR_Mom_lmda_04_1/test.py +1 -0
  641. brainscore_vision/models/eMMCR_Mom_lmda_05_1/__init__.py +9 -0
  642. brainscore_vision/models/eMMCR_Mom_lmda_05_1/model.py +65 -0
  643. brainscore_vision/models/eMMCR_Mom_lmda_05_1/setup.py +24 -0
  644. brainscore_vision/models/eMMCR_Mom_lmda_05_1/test.py +1 -0
  645. brainscore_vision/models/eMMCR_Vanilla/__init__.py +9 -0
  646. brainscore_vision/models/eMMCR_Vanilla/model.py +50 -0
  647. brainscore_vision/models/eMMCR_Vanilla/setup.py +24 -0
  648. brainscore_vision/models/eMMCR_Vanilla/test.py +1 -0
  649. brainscore_vision/models/eMMCR_VanillaV2/__init__.py +9 -0
  650. brainscore_vision/models/eMMCR_VanillaV2/model.py +50 -0
  651. brainscore_vision/models/eMMCR_VanillaV2/setup.py +24 -0
  652. brainscore_vision/models/eMMCR_VanillaV2/test.py +1 -0
  653. brainscore_vision/models/eMMCR_Vanilla_1/__init__.py +9 -0
  654. brainscore_vision/models/eMMCR_Vanilla_1/model.py +64 -0
  655. brainscore_vision/models/eMMCR_Vanilla_1/setup.py +24 -0
  656. brainscore_vision/models/eMMCR_Vanilla_1/test.py +1 -0
  657. brainscore_vision/models/eMMCR_Vanilla_2/__init__.py +9 -0
  658. brainscore_vision/models/eMMCR_Vanilla_2/model.py +64 -0
  659. brainscore_vision/models/eMMCR_Vanilla_2/setup.py +24 -0
  660. brainscore_vision/models/eMMCR_Vanilla_2/test.py +1 -0
  661. brainscore_vision/models/eMMCR_lmda_01/__init__.py +9 -0
  662. brainscore_vision/models/eMMCR_lmda_01/model.py +50 -0
  663. brainscore_vision/models/eMMCR_lmda_01/setup.py +24 -0
  664. brainscore_vision/models/eMMCR_lmda_01/test.py +1 -0
  665. brainscore_vision/models/eMMCR_lmda_01V2/__init__.py +9 -0
  666. brainscore_vision/models/eMMCR_lmda_01V2/model.py +50 -0
  667. brainscore_vision/models/eMMCR_lmda_01V2/requirements.txt +2 -0
  668. brainscore_vision/models/eMMCR_lmda_01V2/setup.py +24 -0
  669. brainscore_vision/models/eMMCR_lmda_01V2/test.py +1 -0
  670. brainscore_vision/models/eMMCR_lmda_01_1/__init__.py +9 -0
  671. brainscore_vision/models/eMMCR_lmda_01_1/model.py +65 -0
  672. brainscore_vision/models/eMMCR_lmda_01_1/setup.py +24 -0
  673. brainscore_vision/models/eMMCR_lmda_01_1/test.py +1 -0
  674. brainscore_vision/models/eMMCR_lmda_01_2/__init__.py +9 -0
  675. brainscore_vision/models/eMMCR_lmda_01_2/model.py +65 -0
  676. brainscore_vision/models/eMMCR_lmda_01_2/setup.py +24 -0
  677. brainscore_vision/models/eMMCR_lmda_01_2/test.py +1 -0
  678. brainscore_vision/models/eMMCR_lmda_01_3/__init__.py +9 -0
  679. brainscore_vision/models/eMMCR_lmda_01_3/model.py +65 -0
  680. brainscore_vision/models/eMMCR_lmda_01_3/setup.py +24 -0
  681. brainscore_vision/models/eMMCR_lmda_01_3/test.py +1 -0
  682. brainscore_vision/models/eSimCLR_Vanilla_1/__init__.py +9 -0
  683. brainscore_vision/models/eSimCLR_Vanilla_1/model.py +64 -0
  684. brainscore_vision/models/eSimCLR_Vanilla_1/setup.py +24 -0
  685. brainscore_vision/models/eSimCLR_Vanilla_1/test.py +1 -0
  686. brainscore_vision/models/eSimCLR_Vanilla_2/__init__.py +9 -0
  687. brainscore_vision/models/eSimCLR_Vanilla_2/model.py +64 -0
  688. brainscore_vision/models/eSimCLR_Vanilla_2/setup.py +24 -0
  689. brainscore_vision/models/eSimCLR_Vanilla_2/test.py +1 -0
  690. brainscore_vision/models/eSimCLR_lmda_0001_1/__init__.py +9 -0
  691. brainscore_vision/models/eSimCLR_lmda_0001_1/model.py +65 -0
  692. brainscore_vision/models/eSimCLR_lmda_0001_1/setup.py +24 -0
  693. brainscore_vision/models/eSimCLR_lmda_0001_1/test.py +1 -0
  694. brainscore_vision/models/eSimCLR_lmda_001_1/__init__.py +9 -0
  695. brainscore_vision/models/eSimCLR_lmda_001_1/model.py +65 -0
  696. brainscore_vision/models/eSimCLR_lmda_001_1/setup.py +24 -0
  697. brainscore_vision/models/eSimCLR_lmda_001_1/test.py +1 -0
  698. brainscore_vision/models/eSimCLR_lmda_01_1/__init__.py +9 -0
  699. brainscore_vision/models/eSimCLR_lmda_01_1/model.py +65 -0
  700. brainscore_vision/models/eSimCLR_lmda_01_1/setup.py +24 -0
  701. brainscore_vision/models/eSimCLR_lmda_01_1/test.py +1 -0
  702. brainscore_vision/models/eSimCLR_lmda_01_2/__init__.py +9 -0
  703. brainscore_vision/models/eSimCLR_lmda_01_2/model.py +65 -0
  704. brainscore_vision/models/eSimCLR_lmda_01_2/setup.py +24 -0
  705. brainscore_vision/models/eSimCLR_lmda_01_2/test.py +1 -0
  706. brainscore_vision/models/eSimCLR_lmda_02_1/__init__.py +9 -0
  707. brainscore_vision/models/eSimCLR_lmda_02_1/model.py +65 -0
  708. brainscore_vision/models/eSimCLR_lmda_02_1/setup.py +24 -0
  709. brainscore_vision/models/eSimCLR_lmda_02_1/test.py +1 -0
  710. brainscore_vision/models/eSimCLR_lmda_02_1_1/__init__.py +9 -0
  711. brainscore_vision/models/eSimCLR_lmda_02_1_1/model.py +65 -0
  712. brainscore_vision/models/eSimCLR_lmda_02_1_1/setup.py +24 -0
  713. brainscore_vision/models/eSimCLR_lmda_02_1_1/test.py +1 -0
  714. brainscore_vision/models/eSimCLR_lmda_03_1/__init__.py +9 -0
  715. brainscore_vision/models/eSimCLR_lmda_03_1/model.py +65 -0
  716. brainscore_vision/models/eSimCLR_lmda_03_1/setup.py +24 -0
  717. brainscore_vision/models/eSimCLR_lmda_03_1/test.py +1 -0
  718. brainscore_vision/models/eSimCLR_lmda_04_1/__init__.py +9 -0
  719. brainscore_vision/models/eSimCLR_lmda_04_1/model.py +65 -0
  720. brainscore_vision/models/eSimCLR_lmda_04_1/setup.py +24 -0
  721. brainscore_vision/models/eSimCLR_lmda_04_1/test.py +1 -0
  722. brainscore_vision/models/eSimCLR_lmda_04_1_1/__init__.py +9 -0
  723. brainscore_vision/models/eSimCLR_lmda_04_1_1/model.py +65 -0
  724. brainscore_vision/models/eSimCLR_lmda_04_1_1/setup.py +24 -0
  725. brainscore_vision/models/eSimCLR_lmda_04_1_1/test.py +1 -0
  726. brainscore_vision/models/eSimCLR_lmda_05_1/__init__.py +9 -0
  727. brainscore_vision/models/eSimCLR_lmda_05_1/model.py +65 -0
  728. brainscore_vision/models/eSimCLR_lmda_05_1/setup.py +24 -0
  729. brainscore_vision/models/eSimCLR_lmda_05_1/test.py +1 -0
  730. brainscore_vision/models/effnetb1_272x240/__init__.py +5 -0
  731. brainscore_vision/models/effnetb1_272x240/model.py +126 -0
  732. brainscore_vision/models/effnetb1_272x240/requirements.txt +3 -0
  733. brainscore_vision/models/effnetb1_272x240/test.py +9 -0
  734. brainscore_vision/models/effnetb1_cutmix_augmix_sam_e1_5avg_424x377/__init__.py +9 -0
  735. brainscore_vision/models/effnetb1_cutmix_augmix_sam_e1_5avg_424x377/model.py +111 -0
  736. brainscore_vision/models/effnetb1_cutmix_augmix_sam_e1_5avg_424x377/requirements.txt +6 -0
  737. brainscore_vision/models/effnetb1_cutmix_augmix_sam_e1_5avg_424x377/test.py +8 -0
  738. brainscore_vision/models/effnetb1_cutmixpatch_SAM_robust32_avge6e8e9e10_manylayers_324x288/__init__.py +5 -0
  739. brainscore_vision/models/effnetb1_cutmixpatch_SAM_robust32_avge6e8e9e10_manylayers_324x288/model.py +142 -0
  740. brainscore_vision/models/effnetb1_cutmixpatch_SAM_robust32_avge6e8e9e10_manylayers_324x288/requirements.txt +5 -0
  741. brainscore_vision/models/effnetb1_cutmixpatch_SAM_robust32_avge6e8e9e10_manylayers_324x288/test.py +8 -0
  742. brainscore_vision/models/effnetb1_cutmixpatch_augmix_robust32_avge4e7_manylayers_324x288/__init__.py +9 -0
  743. brainscore_vision/models/effnetb1_cutmixpatch_augmix_robust32_avge4e7_manylayers_324x288/model.py +140 -0
  744. brainscore_vision/models/effnetb1_cutmixpatch_augmix_robust32_avge4e7_manylayers_324x288/requirements.txt +5 -0
  745. brainscore_vision/models/effnetb1_cutmixpatch_augmix_robust32_avge4e7_manylayers_324x288/test.py +8 -0
  746. brainscore_vision/models/focalnet_tiny_in1k_submission/__init__.py +5 -0
  747. brainscore_vision/models/focalnet_tiny_in1k_submission/model.py +62 -0
  748. brainscore_vision/models/focalnet_tiny_in1k_submission/requirements.txt +3 -0
  749. brainscore_vision/models/focalnet_tiny_in1k_submission/test.py +8 -0
  750. brainscore_vision/models/hmax/__init__.py +7 -0
  751. brainscore_vision/models/hmax/helpers/hmax.py +438 -0
  752. brainscore_vision/models/hmax/helpers/pytorch.py +216 -0
  753. brainscore_vision/models/hmax/model.py +69 -0
  754. brainscore_vision/models/hmax/requirements.txt +5 -0
  755. brainscore_vision/models/hmax/test.py +8 -0
  756. brainscore_vision/models/inception_v3_pytorch/__init__.py +7 -0
  757. brainscore_vision/models/inception_v3_pytorch/model.py +68 -0
  758. brainscore_vision/models/inception_v3_pytorch/requirements.txt +3 -0
  759. brainscore_vision/models/inception_v3_pytorch/test.py +8 -0
  760. brainscore_vision/models/mobilenet_v2_1_4_224_pytorch/__init__.py +7 -0
  761. brainscore_vision/models/mobilenet_v2_1_4_224_pytorch/model.py +60 -0
  762. brainscore_vision/models/mobilenet_v2_1_4_224_pytorch/requirements.txt +3 -0
  763. brainscore_vision/models/mobilenet_v2_1_4_224_pytorch/test.py +8 -0
  764. brainscore_vision/models/mobilevit_small/__init__.py +7 -0
  765. brainscore_vision/models/mobilevit_small/model.py +49 -0
  766. brainscore_vision/models/mobilevit_small/requirements.txt +3 -0
  767. brainscore_vision/models/mobilevit_small/test.py +8 -0
  768. brainscore_vision/models/pixels/__init__.py +8 -0
  769. brainscore_vision/models/pixels/model.py +35 -0
  770. brainscore_vision/models/pixels/test.py +15 -0
  771. brainscore_vision/models/pnasnet_large_pytorch/__init__.py +7 -0
  772. brainscore_vision/models/pnasnet_large_pytorch/model.py +59 -0
  773. brainscore_vision/models/pnasnet_large_pytorch/requirements.txt +3 -0
  774. brainscore_vision/models/pnasnet_large_pytorch/test.py +8 -0
  775. brainscore_vision/models/r101_eBarlow_Vanilla_1/__init__.py +9 -0
  776. brainscore_vision/models/r101_eBarlow_Vanilla_1/model.py +64 -0
  777. brainscore_vision/models/r101_eBarlow_Vanilla_1/setup.py +25 -0
  778. brainscore_vision/models/r101_eBarlow_Vanilla_1/test.py +1 -0
  779. brainscore_vision/models/r101_eBarlow_lmda_01_1/__init__.py +9 -0
  780. brainscore_vision/models/r101_eBarlow_lmda_01_1/model.py +65 -0
  781. brainscore_vision/models/r101_eBarlow_lmda_01_1/setup.py +25 -0
  782. brainscore_vision/models/r101_eBarlow_lmda_01_1/test.py +1 -0
  783. brainscore_vision/models/r101_eBarlow_lmda_02_1/__init__.py +9 -0
  784. brainscore_vision/models/r101_eBarlow_lmda_02_1/model.py +65 -0
  785. brainscore_vision/models/r101_eBarlow_lmda_02_1/setup.py +25 -0
  786. brainscore_vision/models/r101_eBarlow_lmda_02_1/test.py +1 -0
  787. brainscore_vision/models/r101_eBarlow_lmda_02_1_copy/__init__.py +9 -0
  788. brainscore_vision/models/r101_eBarlow_lmda_02_1_copy/model.py +67 -0
  789. brainscore_vision/models/r101_eBarlow_lmda_02_1_copy/setup.py +25 -0
  790. brainscore_vision/models/r101_eBarlow_lmda_02_1_copy/test.py +1 -0
  791. brainscore_vision/models/r34_eMMCR_Mom_Vanilla_1/__init__.py +9 -0
  792. brainscore_vision/models/r34_eMMCR_Mom_Vanilla_1/model.py +66 -0
  793. brainscore_vision/models/r34_eMMCR_Mom_Vanilla_1/setup.py +25 -0
  794. brainscore_vision/models/r34_eMMCR_Mom_Vanilla_1/test.py +1 -0
  795. brainscore_vision/models/r34_eMMCR_Mom_lmda_01_1/__init__.py +9 -0
  796. brainscore_vision/models/r34_eMMCR_Mom_lmda_01_1/model.py +66 -0
  797. brainscore_vision/models/r34_eMMCR_Mom_lmda_01_1/setup.py +25 -0
  798. brainscore_vision/models/r34_eMMCR_Mom_lmda_01_1/test.py +1 -0
  799. brainscore_vision/models/r34_eMMCR_Mom_lmda_02_1/__init__.py +9 -0
  800. brainscore_vision/models/r34_eMMCR_Mom_lmda_02_1/model.py +66 -0
  801. brainscore_vision/models/r34_eMMCR_Mom_lmda_02_1/setup.py +25 -0
  802. brainscore_vision/models/r34_eMMCR_Mom_lmda_02_1/test.py +1 -0
  803. brainscore_vision/models/r50_tvpt/__init__.py +9 -0
  804. brainscore_vision/models/r50_tvpt/model.py +47 -0
  805. brainscore_vision/models/r50_tvpt/setup.py +24 -0
  806. brainscore_vision/models/r50_tvpt/test.py +1 -0
  807. brainscore_vision/models/regnet/__init__.py +14 -0
  808. brainscore_vision/models/regnet/model.py +17 -0
  809. brainscore_vision/models/regnet/requirements.txt +2 -0
  810. brainscore_vision/models/regnet/test.py +17 -0
  811. brainscore_vision/models/resnet18_imagenet21kP/__init__.py +6 -0
  812. brainscore_vision/models/resnet18_imagenet21kP/model.py +119 -0
  813. brainscore_vision/models/resnet18_imagenet21kP/setup.py +18 -0
  814. brainscore_vision/models/resnet18_imagenet21kP/test.py +0 -0
  815. brainscore_vision/models/resnet50_eMMCR_Vanilla/__init__.py +5 -0
  816. brainscore_vision/models/resnet50_eMMCR_Vanilla/model.py +59 -0
  817. brainscore_vision/models/resnet50_eMMCR_Vanilla/setup.py +24 -0
  818. brainscore_vision/models/resnet50_eMMCR_Vanilla/test.py +1 -0
  819. brainscore_vision/models/resnet50_eMMCR_VanillaV2/__init__.py +9 -0
  820. brainscore_vision/models/resnet50_eMMCR_VanillaV2/model.py +72 -0
  821. brainscore_vision/models/resnet50_eMMCR_VanillaV2/setup.py +24 -0
  822. brainscore_vision/models/resnet50_eMMCR_VanillaV2/test.py +1 -0
  823. brainscore_vision/models/resnet50_eMMCR_eqp10_lm1/__init__.py +9 -0
  824. brainscore_vision/models/resnet50_eMMCR_eqp10_lm1/model.py +72 -0
  825. brainscore_vision/models/resnet50_eMMCR_eqp10_lm1/setup.py +24 -0
  826. brainscore_vision/models/resnet50_eMMCR_eqp10_lm1/test.py +1 -0
  827. brainscore_vision/models/resnet50_julios/__init__.py +5 -0
  828. brainscore_vision/models/resnet50_julios/model.py +54 -0
  829. brainscore_vision/models/resnet50_julios/setup.py +24 -0
  830. brainscore_vision/models/resnet50_julios/test.py +1 -0
  831. brainscore_vision/models/resnet50_tutorial/__init__.py +5 -0
  832. brainscore_vision/models/resnet50_tutorial/model.py +34 -0
  833. brainscore_vision/models/resnet50_tutorial/requirements.txt +2 -0
  834. brainscore_vision/models/resnet50_tutorial/test.py +8 -0
  835. brainscore_vision/models/resnet_152_v2_pytorch/__init__.py +7 -0
  836. brainscore_vision/models/resnet_152_v2_pytorch/model.py +59 -0
  837. brainscore_vision/models/resnet_152_v2_pytorch/requirements.txt +2 -0
  838. brainscore_vision/models/resnet_152_v2_pytorch/test.py +8 -0
  839. brainscore_vision/models/resnet_50_robust/__init__.py +7 -0
  840. brainscore_vision/models/resnet_50_robust/model.py +55 -0
  841. brainscore_vision/models/resnet_50_robust/requirements.txt +3 -0
  842. brainscore_vision/models/resnet_50_robust/test.py +8 -0
  843. brainscore_vision/models/resnext101_32x16d_wsl/__init__.py +7 -0
  844. brainscore_vision/models/resnext101_32x16d_wsl/model.py +38 -0
  845. brainscore_vision/models/resnext101_32x16d_wsl/requirements.txt +2 -0
  846. brainscore_vision/models/resnext101_32x16d_wsl/test.py +8 -0
  847. brainscore_vision/models/resnext101_32x32d_wsl/__init__.py +7 -0
  848. brainscore_vision/models/resnext101_32x32d_wsl/model.py +40 -0
  849. brainscore_vision/models/resnext101_32x32d_wsl/requirements.txt +2 -0
  850. brainscore_vision/models/resnext101_32x32d_wsl/test.py +8 -0
  851. brainscore_vision/models/resnext101_32x48d_wsl/__init__.py +7 -0
  852. brainscore_vision/models/resnext101_32x48d_wsl/model.py +38 -0
  853. brainscore_vision/models/resnext101_32x48d_wsl/requirements.txt +3 -0
  854. brainscore_vision/models/resnext101_32x48d_wsl/test.py +8 -0
  855. brainscore_vision/models/resnext101_32x8d_wsl/__init__.py +7 -0
  856. brainscore_vision/models/resnext101_32x8d_wsl/model.py +44 -0
  857. brainscore_vision/models/resnext101_32x8d_wsl/requirements.txt +2 -0
  858. brainscore_vision/models/resnext101_32x8d_wsl/test.py +8 -0
  859. brainscore_vision/models/temporal_model_AVID_CMA/__init__.py +17 -0
  860. brainscore_vision/models/temporal_model_AVID_CMA/model.py +92 -0
  861. brainscore_vision/models/temporal_model_AVID_CMA/requirements.txt +3 -0
  862. brainscore_vision/models/temporal_model_AVID_CMA/test.py +18 -0
  863. brainscore_vision/models/temporal_model_GDT/__init__.py +16 -0
  864. brainscore_vision/models/temporal_model_GDT/model.py +72 -0
  865. brainscore_vision/models/temporal_model_GDT/requirements.txt +3 -0
  866. brainscore_vision/models/temporal_model_GDT/test.py +17 -0
  867. brainscore_vision/models/temporal_model_S3D_text_video/__init__.py +14 -0
  868. brainscore_vision/models/temporal_model_S3D_text_video/model.py +65 -0
  869. brainscore_vision/models/temporal_model_S3D_text_video/requirements.txt +1 -0
  870. brainscore_vision/models/temporal_model_S3D_text_video/test.py +15 -0
  871. brainscore_vision/models/temporal_model_SeLaVi/__init__.py +17 -0
  872. brainscore_vision/models/temporal_model_SeLaVi/model.py +68 -0
  873. brainscore_vision/models/temporal_model_SeLaVi/requirements.txt +3 -0
  874. brainscore_vision/models/temporal_model_SeLaVi/test.py +18 -0
  875. brainscore_vision/models/temporal_model_VideoMAE/__init__.py +15 -0
  876. brainscore_vision/models/temporal_model_VideoMAE/model.py +100 -0
  877. brainscore_vision/models/temporal_model_VideoMAE/requirements.txt +6 -0
  878. brainscore_vision/models/temporal_model_VideoMAE/test.py +16 -0
  879. brainscore_vision/models/temporal_model_VideoMAEv2/__init__.py +14 -0
  880. brainscore_vision/models/temporal_model_VideoMAEv2/model.py +109 -0
  881. brainscore_vision/models/temporal_model_VideoMAEv2/requirements.txt +4 -0
  882. brainscore_vision/models/temporal_model_VideoMAEv2/test.py +16 -0
  883. brainscore_vision/models/temporal_model_mae_st/__init__.py +15 -0
  884. brainscore_vision/models/temporal_model_mae_st/model.py +120 -0
  885. brainscore_vision/models/temporal_model_mae_st/requirements.txt +3 -0
  886. brainscore_vision/models/temporal_model_mae_st/test.py +16 -0
  887. brainscore_vision/models/temporal_model_mmaction2/__init__.py +23 -0
  888. brainscore_vision/models/temporal_model_mmaction2/mmaction2.csv +24 -0
  889. brainscore_vision/models/temporal_model_mmaction2/model.py +226 -0
  890. brainscore_vision/models/temporal_model_mmaction2/requirements.txt +5 -0
  891. brainscore_vision/models/temporal_model_mmaction2/test.py +24 -0
  892. brainscore_vision/models/temporal_model_openstl/__init__.py +18 -0
  893. brainscore_vision/models/temporal_model_openstl/model.py +206 -0
  894. brainscore_vision/models/temporal_model_openstl/requirements.txt +3 -0
  895. brainscore_vision/models/temporal_model_openstl/test.py +19 -0
  896. brainscore_vision/models/temporal_model_torchvision/__init__.py +19 -0
  897. brainscore_vision/models/temporal_model_torchvision/model.py +92 -0
  898. brainscore_vision/models/temporal_model_torchvision/requirements.txt +2 -0
  899. brainscore_vision/models/temporal_model_torchvision/test.py +20 -0
  900. brainscore_vision/models/tv_efficientnet_b1/__init__.py +5 -0
  901. brainscore_vision/models/tv_efficientnet_b1/model.py +54 -0
  902. brainscore_vision/models/tv_efficientnet_b1/setup.py +24 -0
  903. brainscore_vision/models/tv_efficientnet_b1/test.py +1 -0
  904. brainscore_vision/models/voneresnet_50_non_stochastic/__init__.py +7 -0
  905. brainscore_vision/models/voneresnet_50_non_stochastic/model.py +104 -0
  906. brainscore_vision/models/voneresnet_50_non_stochastic/requirements.txt +8 -0
  907. brainscore_vision/models/voneresnet_50_non_stochastic/test.py +8 -0
  908. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/LICENSE +674 -0
  909. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/README.md +105 -0
  910. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/run.py +136 -0
  911. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/setup.py +41 -0
  912. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/train.py +383 -0
  913. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/__init__.py +71 -0
  914. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/back_ends.py +337 -0
  915. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/modules.py +126 -0
  916. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/params.py +100 -0
  917. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/utils.py +32 -0
  918. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/vonenet.py +68 -0
  919. brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet_tutorial-activations.ipynb +352 -0
  920. brainscore_vision/models/yudixie_resnet18_240719_0/__init__.py +11 -0
  921. brainscore_vision/models/yudixie_resnet18_240719_0/model.py +60 -0
  922. brainscore_vision/models/yudixie_resnet18_240719_0/setup.py +25 -0
  923. brainscore_vision/models/yudixie_resnet18_240719_0/test.py +1 -0
  924. brainscore_vision/models/yudixie_resnet18_240719_1/__init__.py +11 -0
  925. brainscore_vision/models/yudixie_resnet18_240719_1/model.py +60 -0
  926. brainscore_vision/models/yudixie_resnet18_240719_1/setup.py +25 -0
  927. brainscore_vision/models/yudixie_resnet18_240719_1/test.py +1 -0
  928. brainscore_vision/models/yudixie_resnet18_240719_10/__init__.py +11 -0
  929. brainscore_vision/models/yudixie_resnet18_240719_10/model.py +60 -0
  930. brainscore_vision/models/yudixie_resnet18_240719_10/setup.py +25 -0
  931. brainscore_vision/models/yudixie_resnet18_240719_10/test.py +1 -0
  932. brainscore_vision/models/yudixie_resnet18_240719_2/__init__.py +11 -0
  933. brainscore_vision/models/yudixie_resnet18_240719_2/model.py +60 -0
  934. brainscore_vision/models/yudixie_resnet18_240719_2/setup.py +25 -0
  935. brainscore_vision/models/yudixie_resnet18_240719_2/test.py +1 -0
  936. brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240222/__init__.py +7 -0
  937. brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240222/model.py +66 -0
  938. brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240222/setup.py +24 -0
  939. brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240222/test.py +1 -0
  940. brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240312/__init__.py +7 -0
  941. brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240312/model.py +68 -0
  942. brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240312/setup.py +24 -0
  943. brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240312/test.py +1 -0
  944. brainscore_vision/submission/__init__.py +0 -0
  945. brainscore_vision/submission/actions_helpers.py +153 -0
  946. brainscore_vision/submission/config.py +7 -0
  947. brainscore_vision/submission/endpoints.py +58 -0
  948. brainscore_vision/utils/__init__.py +91 -0
  949. brainscore_vision-2.1.dist-info/LICENSE +11 -0
  950. brainscore_vision-2.1.dist-info/METADATA +152 -0
  951. brainscore_vision-2.1.dist-info/RECORD +1009 -0
  952. brainscore_vision-2.1.dist-info/WHEEL +5 -0
  953. brainscore_vision-2.1.dist-info/top_level.txt +4 -0
  954. docs/Makefile +20 -0
  955. docs/source/conf.py +78 -0
  956. docs/source/index.rst +21 -0
  957. docs/source/modules/api_reference.rst +10 -0
  958. docs/source/modules/benchmarks.rst +8 -0
  959. docs/source/modules/brainscore_submission.png +0 -0
  960. docs/source/modules/developer_clarifications.rst +36 -0
  961. docs/source/modules/metrics.rst +8 -0
  962. docs/source/modules/model_interface.rst +8 -0
  963. docs/source/modules/submission.rst +112 -0
  964. docs/source/modules/tutorial_screenshots/brain-score_logo.png +0 -0
  965. docs/source/modules/tutorial_screenshots/final_submit.png +0 -0
  966. docs/source/modules/tutorial_screenshots/init_py.png +0 -0
  967. docs/source/modules/tutorial_screenshots/mms.png +0 -0
  968. docs/source/modules/tutorial_screenshots/setup.png +0 -0
  969. docs/source/modules/tutorial_screenshots/sms.png +0 -0
  970. docs/source/modules/tutorial_screenshots/subfolders.png +0 -0
  971. docs/source/modules/utils.rst +22 -0
  972. migrations/2020-12-20_pkl_to_nc.py +90 -0
  973. tests/__init__.py +6 -0
  974. tests/conftest.py +26 -0
  975. tests/test_benchmark_helpers/__init__.py +0 -0
  976. tests/test_benchmark_helpers/test_screen.py +75 -0
  977. tests/test_examples.py +41 -0
  978. tests/test_integration.py +43 -0
  979. tests/test_metric_helpers/__init__.py +0 -0
  980. tests/test_metric_helpers/test_temporal.py +80 -0
  981. tests/test_metric_helpers/test_transformations.py +171 -0
  982. tests/test_metric_helpers/test_xarray_utils.py +85 -0
  983. tests/test_model_helpers/__init__.py +6 -0
  984. tests/test_model_helpers/activations/__init__.py +0 -0
  985. tests/test_model_helpers/activations/test___init__.py +404 -0
  986. tests/test_model_helpers/brain_transformation/__init__.py +0 -0
  987. tests/test_model_helpers/brain_transformation/test___init__.py +18 -0
  988. tests/test_model_helpers/brain_transformation/test_behavior.py +181 -0
  989. tests/test_model_helpers/brain_transformation/test_neural.py +70 -0
  990. tests/test_model_helpers/brain_transformation/test_temporal.py +66 -0
  991. tests/test_model_helpers/temporal/__init__.py +0 -0
  992. tests/test_model_helpers/temporal/activations/__init__.py +0 -0
  993. tests/test_model_helpers/temporal/activations/test_extractor.py +96 -0
  994. tests/test_model_helpers/temporal/activations/test_inferencer.py +189 -0
  995. tests/test_model_helpers/temporal/activations/test_inputs.py +103 -0
  996. tests/test_model_helpers/temporal/brain_transformation/__init__.py +0 -0
  997. tests/test_model_helpers/temporal/brain_transformation/test_temporal_ops.py +122 -0
  998. tests/test_model_helpers/temporal/test_utils.py +61 -0
  999. tests/test_model_helpers/test_generic_plugin_tests.py +310 -0
  1000. tests/test_model_helpers/test_imports.py +10 -0
  1001. tests/test_model_helpers/test_s3.py +38 -0
  1002. tests/test_models.py +15 -0
  1003. tests/test_stimuli.py +0 -0
  1004. tests/test_submission/__init__.py +0 -0
  1005. tests/test_submission/mock_config.py +3 -0
  1006. tests/test_submission/test_actions_helpers.py +67 -0
  1007. tests/test_submission/test_db.py +54 -0
  1008. tests/test_submission/test_endpoints.py +125 -0
  1009. tests/test_utils.py +21 -0
@@ -0,0 +1,895 @@
1
+ // GetMD5.c
2
+ // GetMD5 - 128 bit MD5 checksum: file, string, array, byte stream
3
+ // This function calculates a 128 bit checksum for arrays or files.
4
+ // Digest = GetMD5(Data, Mode, Format)
5
+ // INPUT:
6
+ // Data: File name or array.
7
+ // Mode: String to declare the type of the 1st input. Not case-sensitive.
8
+ // 'File': Data is a file name as string.
9
+ // '8Bit': If Data is a CHAR array, only the 8 bit ASCII part is
10
+ // used. Then the digest is the same as for a ASCII text
11
+ // file e.g. created by: FWRITE(FID, Data, 'uchar').
12
+ // This is ignored if Data is not of type CHAR.
13
+ // 'Binary': The MD5 sum is obtained for the contents of Data.
14
+ // This works for numerical, CHAR and LOGICAL arrays.
15
+ // 'Array': Include the class and dimensions of Data in the MD5
16
+ // sum. This can be applied for (nested) structs, cells
17
+ // and sparse arrays also.
18
+ // Optional. Default: '8Bit' for CHAR, 'Binary' otherwise.
19
+ // Format: String, format of the output. Only the first character matters.
20
+ // The upper/lower case matters for 'hex' only.
21
+ // 'hex': [1 x 32] lowercase hexadecimal string.
22
+ // 'HEX': [1 x 32] uppercase hexadecimal string.
23
+ // 'double': [1 x 16] double vector with UINT8 values.
24
+ // 'uint8': [1 x 16] uint8 vector.
25
+ // 'base64': [1 x 22] string, encoded to base 64 (A:Z,a:z,0:9,+,/).
26
+ // The string is not padded to keep it short.
27
+ // Optional, default: 'hex'.
28
+ //
29
+ // OUTPUT:
30
+ // Digest: A 128 bit number is replied in the specified format.
31
+ //
32
+ // NOTE:
33
+ // * The M-file GetMD5_helper is called for sparse arrays, function handles,
34
+ // java and user-defined objects .
35
+ // * This is at least 2 times faster than the Java method.
36
+ //
37
+ // EXAMPLES:
38
+ // Three methods to get the MD5 of a file:
39
+ // 1. Direct file access (recommended):
40
+ // MD5 = GetMD5(which('GetMD5.m'), 'File')
41
+ // 2. Import the file to a CHAR array (no text mode for exact line breaks!):
42
+ // FID = fopen(which('GetMD5.m'), 'r');
43
+ // S = fread(FID, inf, 'uchar=>char');
44
+ // fclose(FID);
45
+ // MD5 = GetMD5(S, '8bit')
46
+ // 3. Import file as a byte stream:
47
+ // FID = fopen(which('GetMD5.m'), 'r');
48
+ // S = fread(FID, inf, 'uint8=>uint8');
49
+ // fclose(FID);
50
+ // MD5 = GetMD5(S, 'bin'); % 'bin' can be omitted here
51
+ //
52
+ // Test data:
53
+ // GetMD5(char(0:511), '8bit', 'HEX') % Consider 8bit part only
54
+ // % => F5C8E3C31C044BAE0E65569560B54332
55
+ // GetMD5(char(0:511), 'bin') % Matlab's CHAR are 16 bit!
56
+ // % => 3484769D4F7EBB88BBE942BB924834CD
57
+ // GetMD5(char(0:511), 'array') % Consider 16 bit, type and size
58
+ // % => b9a955ae730b25330d4f4ebb0a51e8f0
59
+ // GetMD5('abc') % implicit: 8bit for CHAR input
60
+ // % => 900150983cd24fb0d6963f7d28e17f72
61
+ //
62
+ // COMPILE:
63
+ // On demand a C-compiler must be installed at first, see: "mex -setup"
64
+ // Automatic: Call GetMD5 without inputs.
65
+ // Manually:
66
+ // mex -O GetMD5.c
67
+ // Consider C99 comments under Linux:
68
+ // mex -O CFLAGS="\$CFLAGS -std=c99" GetMD5.c
69
+ // Pre-compiled MEX files can be downloaded: http:\\www.n-simon.de\mex
70
+ // Run the unit-test uTest_GetMD5 after the compilation.
71
+ //
72
+ // Tested: Matlab 6.5, 7.7, 7.8, 7.13, 8.6, WinXP/32, Win7/64
73
+ // Compiler: LCC2.4/3.8, BCC5.5, OWC1.8, MSVC2008/2010
74
+ // Assumed Compatibility: higher Matlab versions, Mac, Linux
75
+ // Author: Jan Simon, Heidelberg, (C) 2006-2016 matlab.2010(a)n(MINUS)simon.de
76
+ // License: BSD. This program is based on:
77
+ // RFC 1321, MD5 Message-Digest Algorithm, April 1992
78
+ // RSA Data Security, Inc. MD5 Message Digest Algorithm
79
+ // Implementation: Alexander Peslyak
80
+ //
81
+ // See also: CalcCRC32, DataHash.
82
+ //
83
+ // Michael Kleder has published a Java call to compute the MD5 and SHA sums:
84
+ // http://www.mathworks.com/matlabcentral/fileexchange/8944
85
+
86
+ /*******************************************************************************
87
+ * The MD5-part is based on:
88
+ *
89
+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
90
+ * MD5 Message-Digest Algorithm (RFC 1321).
91
+ *
92
+ * Homepage:
93
+ * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
94
+ *
95
+ * Author:
96
+ * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
97
+ *
98
+ * This software was written by Alexander Peslyak in 2001. No copyright is
99
+ * claimed, and the software is hereby placed in the public domain.
100
+ *******************************************************************************
101
+ */
102
+
103
+ /*
104
+ % $JRev: R5f V:061 Sum:0K6boVfyKe5t Date:17-Oct-2017 00:06:02 $
105
+ % $License: BSD (use/copy/change/redistribute on own risk, mention the author) $
106
+ % $UnitTest: uTest_GetMD5 $
107
+ % $File: Tools\Mex\Source\GetMD5.c $
108
+ % History:
109
+ % 011: 20-Oct-2006 20:50, [16 x 1] -> [1 x 16] replied as double.
110
+ % 012: 01-Nov-2006 23:10, BUGFIX: hex output for 'Hex' input now.
111
+ % 015: 02-Oct-2008 14:47, Base64 output.
112
+ % 017: 19-Oct-2008 22:33, Accept numerical arrays as byte stream.
113
+ % 023: 15-Dec-2009 16:53, BUGFIX: UINT32 has 32 bits on 64 bit systems now.
114
+ % Thanks to Sebastiaan Breedveld!
115
+ % 030: 17-Mar-2010 11:38, UINT8 output.
116
+ % 032: 06-Jul-2010 23:23, Indirect CONST pointer in ToHex for BCC5.5.
117
+ % 037: 14-May-2011 13:14, Default input type: char->byte.
118
+ % 042: 27-Jan-2015 23:00, 64 bit arrays, nicer error messages, 10% faster.
119
+ % "CalcMD5" -> "GetMD5".
120
+ % 046: 16-Feb-2015 00:10, "Array" type: consider type and dimensions.
121
+ % The "Array" type works for cells and structs also.
122
+ % 050: 09-Mar-2015 23:08, Faster hash code of Alexander Peslyak.
123
+ % 060: 04-Jun-2016 22:22, Fixed compile error on Macs.
124
+ % Thanks to Jonas Zimmermann.
125
+ % 061: 16-Oct-2017 23:56, Compilation failed if _LITTLE_ENDIAN is undefined.
126
+ */
127
+
128
+ #define __STDC_WANT_LIB_EXT1__ 1
129
+
130
+ // Headers:
131
+ #include <stdlib.h>
132
+ #include <stdio.h>
133
+ #include <string.h>
134
+ #include <ctype.h>
135
+ #include "mex.h"
136
+
137
+ // Assume 32 bit addressing for Matlab 6.5:
138
+ // See MEX option "compatibleArrayDims" for MEX in Matlab >= 7.7.
139
+ #ifndef MWSIZE_MAX
140
+ # define mwSize int32_T // Defined in tmwtypes.h
141
+ # define mwIndex int32_T
142
+ # define MWSIZE_MAX MAX_int32_T
143
+ #endif
144
+
145
+ // Directive for endianess:
146
+ #if !defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
147
+ # define _LITTLE_ENDIAN
148
+ #endif
149
+
150
+ // Safe string length for fieldnames:
151
+ #if defined _MSC_VER || \
152
+ (defined(__STDC_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1)
153
+ # define STRING_LENGTH(s,n) strnlen_s(s,n)
154
+ #else
155
+ # define STRING_LENGTH(s,n) strlen(s)
156
+ #endif
157
+
158
+ // Strange objects can cause an infinite recursion and kill Matlab. So limit the
159
+ // recursion depths for a useful error message:
160
+ #define MAX_RECURSION 500
161
+ static int RecursionCount;
162
+
163
+ // MD5 part: -------------------------------------------------------------------
164
+ typedef struct {
165
+ uint32_T lo, hi;
166
+ uint32_T a, b, c, d;
167
+ uchar_T buffer[64];
168
+ uint32_T block[16];
169
+ } MD5_CTX;
170
+
171
+ // Prototypes:
172
+ void MD5_Init(MD5_CTX *ctx);
173
+ void MD5_Update(MD5_CTX *ctx, uchar_T *data, mwSize size);
174
+ void MD5_Final(uchar_T *digest, MD5_CTX *ctx);
175
+ static uchar_T *MD5_Body(MD5_CTX *ctx, uchar_T *data, mwSize size);
176
+
177
+ /* The basic MD5 functions.
178
+ *
179
+ * F and G are optimized compared to their RFC 1321 definitions for
180
+ * architectures that lack an AND-NOT instruction, just like in Colin Plumb's
181
+ * implementation.
182
+ */
183
+ #define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
184
+ #define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y))))
185
+ #define H(x, y, z) ((x) ^ (y) ^ (z))
186
+ #define I(x, y, z) ((y) ^ ((x) | ~(z)))
187
+
188
+ /* The MD5 transformation for all four rounds. */
189
+ #define STEP(f, a, b, c, d, x, t, s) \
190
+ (a) += f((b), (c), (d)) + (x) + (t); \
191
+ (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
192
+ (a) += (b);
193
+
194
+ /* SET reads 4 input bytes in little-endian byte order and stores them in a
195
+ * properly aligned word in host byte order.
196
+ *
197
+ * The check for little-endian architectures that tolerate unaligned memory
198
+ * accesses is just an optimization. Nothing will break if it doesn't work.
199
+ */
200
+ #ifdef _LITTLE_ENDIAN
201
+ # define SET(n) (*(uint32_T *)&ptr[(n) * 4])
202
+ # define GET(n) SET(n)
203
+ #else
204
+ # define SET(n) \
205
+ (ctx->block[(n)] = \
206
+ (uint32_T)ptr[(n) * 4] | \
207
+ ((uint32_T)ptr[(n) * 4 + 1] << 8) | \
208
+ ((uint32_T)ptr[(n) * 4 + 2] << 16) | \
209
+ ((uint32_T)ptr[(n) * 4 + 3] << 24))
210
+ # define GET(n) (ctx->block[(n)])
211
+ #endif
212
+
213
+ // Matlab part: ----------------------------------------------------------------
214
+ // Length of the file buffer (must be < 2^31 for 32 bit machines):
215
+ #define BUFFER_LEN 1024
216
+ static uchar_T buffer[BUFFER_LEN];
217
+
218
+ typedef enum {ASCII_m, ARRAY_m, BINARY_m, FILE_m} Method_t;
219
+
220
+ typedef struct StringRec {
221
+ const char_T *string;
222
+ int index;
223
+ } StringRec;
224
+
225
+ // Error and warning messages:
226
+ #define ERR_HEAD "*** GetMD5[mex]: "
227
+ #define ERR_ID "JSimon:GetMD5:"
228
+ #define ERROR(id,msg) mexErrMsgIdAndTxt(ERR_ID id, ERR_HEAD msg);
229
+ #define ERROR3(id,msg,arg) mexErrMsgIdAndTxt(ERR_ID id, ERR_HEAD msg, arg);
230
+
231
+ #define WARN_HEAD "### GetMD5[mex]: "
232
+ #define WARN(id,msg) mexWarnMsgIdAndTxt(ERR_ID id, WARN_HEAD msg);
233
+
234
+ // Prototypes:
235
+ void ToHex (const uchar_T In[16], char *Out, int LowerCase);
236
+ void ToBase64(const uchar_T In[16], char *Out);
237
+
238
+ void ProcessBin (uchar_T *data, mwSize N, uchar_T digest[16]);
239
+ void ProcessFile (char *FileName, uchar_T digest[16]);
240
+ void ProcessChar (mxChar *data, mwSize N, uchar_T digest[16]);
241
+ void ProcessArray(const mxArray *V, uchar_T digest[16]);
242
+ void ArrayCore (MD5_CTX *context, const mxArray *V);
243
+ void StructCore (MD5_CTX *context, const mxArray *V, mwSize nElem);
244
+ int CompareStringRec(const void *a, const void *b);
245
+
246
+ // =============================== FUNCTIONS ===================================
247
+
248
+ // *****************************************************************************
249
+ // ** MD5 part:
250
+ // *****************************************************************************
251
+
252
+ // MD5 initialization. Begins an MD5 operation, writing a new context:
253
+ void MD5_Init(MD5_CTX *ctx)
254
+ {
255
+ // Load magic initialization constants:
256
+ ctx->a = 0x67452301;
257
+ ctx->b = 0xefcdab89;
258
+ ctx->c = 0x98badcfe;
259
+ ctx->d = 0x10325476;
260
+
261
+ ctx->lo = 0;
262
+ ctx->hi = 0;
263
+ }
264
+
265
+ // This processes one or more 64-byte data blocks, but does NOT update
266
+ // the bit counters. There are no alignment requirements.
267
+ static uchar_T *MD5_Body(MD5_CTX *ctx, uchar_T *data, mwSize size)
268
+ {
269
+ uchar_T *ptr;
270
+ uint32_T a, b, c, d,
271
+ saved_a, saved_b, saved_c, saved_d;
272
+
273
+ ptr = data;
274
+
275
+ a = ctx->a;
276
+ b = ctx->b;
277
+ c = ctx->c;
278
+ d = ctx->d;
279
+
280
+ do {
281
+ saved_a = a;
282
+ saved_b = b;
283
+ saved_c = c;
284
+ saved_d = d;
285
+
286
+ // Round 1
287
+ STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
288
+ STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
289
+ STEP(F, c, d, a, b, SET(2), 0x242070db, 17)
290
+ STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22)
291
+ STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7)
292
+ STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12)
293
+ STEP(F, c, d, a, b, SET(6), 0xa8304613, 17)
294
+ STEP(F, b, c, d, a, SET(7), 0xfd469501, 22)
295
+ STEP(F, a, b, c, d, SET(8), 0x698098d8, 7)
296
+ STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12)
297
+ STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17)
298
+ STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22)
299
+ STEP(F, a, b, c, d, SET(12), 0x6b901122, 7)
300
+ STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
301
+ STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
302
+ STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
303
+
304
+ // Round 2
305
+ STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
306
+ STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
307
+ STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14)
308
+ STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20)
309
+ STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5)
310
+ STEP(G, d, a, b, c, GET(10), 0x02441453, 9)
311
+ STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14)
312
+ STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20)
313
+ STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5)
314
+ STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9)
315
+ STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14)
316
+ STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20)
317
+ STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5)
318
+ STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
319
+ STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
320
+ STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
321
+
322
+ // Round 3
323
+ STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
324
+ STEP(H, d, a, b, c, GET(8), 0x8771f681, 11)
325
+ STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16)
326
+ STEP(H, b, c, d, a, GET(14), 0xfde5380c, 23)
327
+ STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4)
328
+ STEP(H, d, a, b, c, GET(4), 0x4bdecfa9, 11)
329
+ STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16)
330
+ STEP(H, b, c, d, a, GET(10), 0xbebfbc70, 23)
331
+ STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4)
332
+ STEP(H, d, a, b, c, GET(0), 0xeaa127fa, 11)
333
+ STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16)
334
+ STEP(H, b, c, d, a, GET(6), 0x04881d05, 23)
335
+ STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4)
336
+ STEP(H, d, a, b, c, GET(12), 0xe6db99e5, 11)
337
+ STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
338
+ STEP(H, b, c, d, a, GET(2), 0xc4ac5665, 23)
339
+
340
+ // Round 4
341
+ STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
342
+ STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
343
+ STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15)
344
+ STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21)
345
+ STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6)
346
+ STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10)
347
+ STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15)
348
+ STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21)
349
+ STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6)
350
+ STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10)
351
+ STEP(I, c, d, a, b, GET(6), 0xa3014314, 15)
352
+ STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21)
353
+ STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6)
354
+ STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
355
+ STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
356
+ STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
357
+
358
+ a += saved_a;
359
+ b += saved_b;
360
+ c += saved_c;
361
+ d += saved_d;
362
+
363
+ ptr += 64;
364
+ } while (size -= 64);
365
+
366
+ ctx->a = a;
367
+ ctx->b = b;
368
+ ctx->c = c;
369
+ ctx->d = d;
370
+
371
+ return ptr;
372
+ }
373
+
374
+ void MD5_Update(MD5_CTX *ctx, uchar_T *data, mwSize size)
375
+ {
376
+ uint32_T saved_lo;
377
+ mwSize used, free;
378
+
379
+ // Update number of bytes:
380
+ saved_lo = ctx->lo;
381
+ if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo) {
382
+ ctx->hi++;
383
+ }
384
+ ctx->hi += (uint32_T) (size >> 29);
385
+
386
+ // Process blocks with less than 64 bytes:
387
+ used = (saved_lo & 0x3f);
388
+ if (used) {
389
+ free = 64 - used;
390
+ if (size < free) {
391
+ memcpy(&ctx->buffer[used], data, size);
392
+ return;
393
+ }
394
+
395
+ memcpy(&ctx->buffer[used], data, free);
396
+ data = data + free;
397
+ size -= free;
398
+ MD5_Body(ctx, ctx->buffer, 64);
399
+ }
400
+
401
+ // Process the rest of the data in 64 byte blocks:
402
+ if (size >= 64) {
403
+ data = MD5_Body(ctx, data, size & ~(mwSize)0x3f);
404
+ size &= 0x3f;
405
+ }
406
+
407
+ // Copy remaining bytes to the buffer:
408
+ memcpy(ctx->buffer, data, size);
409
+ }
410
+
411
+ void MD5_Final(uchar_T *result, MD5_CTX *ctx)
412
+ {
413
+ mwSize used, free;
414
+
415
+ // Padding:
416
+ used = ctx->lo & 0x3f;
417
+ ctx->buffer[used++] = 0x80;
418
+ free = 64 - used;
419
+ if (free < 8) {
420
+ memset(&ctx->buffer[used], 0, free);
421
+ MD5_Body(ctx, ctx->buffer, 64);
422
+ used = 0;
423
+ free = 64;
424
+ }
425
+
426
+ memset(&ctx->buffer[used], 0, free - 8);
427
+
428
+ // Encode number of bits:
429
+ ctx->lo <<= 3;
430
+ ctx->buffer[56] = ctx->lo;
431
+ ctx->buffer[57] = ctx->lo >> 8;
432
+ ctx->buffer[58] = ctx->lo >> 16;
433
+ ctx->buffer[59] = ctx->lo >> 24;
434
+ ctx->buffer[60] = ctx->hi;
435
+ ctx->buffer[61] = ctx->hi >> 8;
436
+ ctx->buffer[62] = ctx->hi >> 16;
437
+ ctx->buffer[63] = ctx->hi >> 24;
438
+
439
+ MD5_Body(ctx, ctx->buffer, 64);
440
+
441
+ // Copy hash to the output:
442
+ result[0] = ctx->a;
443
+ result[1] = ctx->a >> 8;
444
+ result[2] = ctx->a >> 16;
445
+ result[3] = ctx->a >> 24;
446
+ result[4] = ctx->b;
447
+ result[5] = ctx->b >> 8;
448
+ result[6] = ctx->b >> 16;
449
+ result[7] = ctx->b >> 24;
450
+ result[8] = ctx->c;
451
+ result[9] = ctx->c >> 8;
452
+ result[10] = ctx->c >> 16;
453
+ result[11] = ctx->c >> 24;
454
+ result[12] = ctx->d;
455
+ result[13] = ctx->d >> 8;
456
+ result[14] = ctx->d >> 16;
457
+ result[15] = ctx->d >> 24;
458
+
459
+ // Clean up sensitive data:
460
+ memset(ctx, 0, sizeof(*ctx));
461
+ }
462
+
463
+ // *****************************************************************************
464
+ // ** Matlab part:
465
+ // *****************************************************************************
466
+
467
+ // 8Bit ASCII part of CHAR: ====================================================
468
+ void ProcessChar(mxChar *array, mwSize inputLen, uchar_T digest[16])
469
+ {
470
+ // Process string: Matlab stores strings as mxChar, which are 2 bytes per
471
+ // character. This function considers the first byte of each CHAR only, which
472
+ // is equivalent to calculate the sum after a conversion to a ASCII uchar_T
473
+ // string.
474
+ MD5_CTX context;
475
+ mwSize Chunk;
476
+ uchar_T *bufferP, *bufferEnd = buffer + BUFFER_LEN, *arrayP;
477
+
478
+ arrayP = (uchar_T *) array; // uchar_T *, not mxChar *!
479
+
480
+ MD5_Init(&context);
481
+
482
+ // Copy chunks of input data - only the first byte of each mxChar:
483
+ Chunk = inputLen / BUFFER_LEN;
484
+ while (Chunk--) {
485
+ bufferP = buffer;
486
+ while (bufferP < bufferEnd) {
487
+ *bufferP++ = *arrayP;
488
+ arrayP += 2;
489
+ }
490
+
491
+ MD5_Update(&context, buffer, (mwSize) BUFFER_LEN);
492
+ }
493
+
494
+ // Last chunk:
495
+ Chunk = inputLen % BUFFER_LEN;
496
+ if (Chunk != 0) {
497
+ bufferEnd = buffer + Chunk;
498
+ bufferP = buffer;
499
+ while (bufferP < bufferEnd) {
500
+ *bufferP++ = *arrayP;
501
+ arrayP += 2;
502
+ }
503
+
504
+ MD5_Update(&context, buffer, Chunk);
505
+ }
506
+
507
+ MD5_Final(digest, &context);
508
+ }
509
+
510
+ // Array of any type: ==========================================================
511
+ void ProcessArray(const mxArray *V, uchar_T digest[16])
512
+ {
513
+ // The type, dimension and contents of the array are considered. This works
514
+ // for cells and structs also.
515
+ // Here only the initialization and finalization of the context is performed,
516
+ // while the actual processing is done in ArrayCore, which allows recursion
517
+ // for cells and structs.
518
+ MD5_CTX context;
519
+
520
+ RecursionCount = 0; // Reset global recursion counter
521
+
522
+ MD5_Init(&context);
523
+ ArrayCore(&context, V);
524
+ MD5_Final(digest, &context);
525
+ }
526
+
527
+ // -----------------------------------------------------------------------------
528
+ void ArrayCore(MD5_CTX *context, const mxArray *V)
529
+ {
530
+ // Process an array considering the type and dimensions. Cells and Structs
531
+ // call this function recursively for each cell element or field.
532
+ // The header before the data block is: [ClassName, nDim, Dims]. The ClassName
533
+ // is a string, because the ClassID number has been changed during different
534
+ // Matlab versions in the past.
535
+ // Sparse arrays, function handles, java- and user-defined classes are
536
+ // forwarded to the M-function GetMD5_helper, where the user can defined how
537
+ // the data is converted to a byte stream.
538
+
539
+ uchar_T *dataReal, *dataImag;
540
+ mxClassID ClassID;
541
+ const mwSize *Dim, nullDim[2] = {0,0};
542
+ mwSize nDim, nElem, iElem, i, lenHeader;
543
+ int64_T *header;
544
+ size_t ElemSize, Len;
545
+ int nField, iField, ok;
546
+ mxArray *Arg[1];
547
+ const char *FieldName, *ClassName;
548
+
549
+ // Get header information of the array:
550
+ if (V != NULL) {
551
+ nDim = mxGetNumberOfDimensions(V);
552
+ nElem = mxGetNumberOfElements(V);
553
+ ClassID = mxGetClassID(V);
554
+ ClassName = mxGetClassName(V);
555
+ ElemSize = mxGetElementSize(V);
556
+ Dim = mxGetDimensions(V);
557
+ dataReal = (uchar_T *) mxGetData(V);
558
+ dataImag = (uchar_T *) mxGetImagData(V);
559
+
560
+ } else { // NULL pointer is equivalent to [0 x 0] double matrix:
561
+ nDim = 2;
562
+ nElem = 0;
563
+ ClassID = mxDOUBLE_CLASS;
564
+ ClassName = "double";
565
+ ElemSize = sizeof(double);
566
+ Dim = nullDim;
567
+ dataReal = (uchar_T *) NULL;
568
+ dataImag = (uchar_T *) NULL;
569
+ }
570
+
571
+ // Consider class as name, not as ClassID, because the later might change with
572
+ // the Matlab version:
573
+ Len = strlen(ClassName);
574
+ MD5_Update(context, (uchar_T *) ClassName, Len * sizeof(char));
575
+
576
+ // Encode dimensions as [nDim, Dim]:
577
+ // Convert values to int64_T to get the same hash under 32 and 64 bit systems:
578
+ lenHeader = 1 + nDim;
579
+ header = (int64_T *) mxCalloc(lenHeader, sizeof(int64_T));
580
+ header[0] = (int64_T) nDim;
581
+ for (i = 0; i < nDim; i++) {
582
+ header[i + 1] = (int64_T) Dim[i];
583
+ }
584
+ MD5_Update(context, (uchar_T *) header, lenHeader * sizeof(int64_T));
585
+ mxFree(header);
586
+
587
+ // Forward sparse arrays to M-helper function:
588
+ if (mxIsSparse(V)) {
589
+ ClassID = mxUNKNOWN_CLASS;
590
+ }
591
+
592
+ // Include the contents of the array:
593
+ switch (ClassID) {
594
+ case mxLOGICAL_CLASS: // Elementary array: ------------------------------
595
+ case mxCHAR_CLASS:
596
+ case mxDOUBLE_CLASS:
597
+ case mxSINGLE_CLASS:
598
+ case mxINT8_CLASS:
599
+ case mxUINT8_CLASS:
600
+ case mxINT16_CLASS:
601
+ case mxUINT16_CLASS:
602
+ case mxINT32_CLASS:
603
+ case mxUINT32_CLASS:
604
+ case mxINT64_CLASS:
605
+ case mxUINT64_CLASS:
606
+ MD5_Update(context, dataReal, nElem * ElemSize);
607
+ if (mxIsComplex(V)) {
608
+ MD5_Update(context, dataImag, nElem * ElemSize);
609
+ }
610
+ break;
611
+
612
+ case mxCELL_CLASS: // Cell array - recursion: --------------------------
613
+ for (iElem = 0; iElem < nElem; iElem++) {
614
+ ArrayCore(context, mxGetCell(V, iElem));
615
+ }
616
+ break;
617
+
618
+ case mxSTRUCT_CLASS: // Struct array: Fieldnames + recursion: ------------
619
+ StructCore(context, V, nElem);
620
+ break;
621
+
622
+ default: // mxFUNCTION_CLASS, mxVOID_CLASS, mxUNKNOWN_CLASS: -------------
623
+ // Treat deep recursion as an error:
624
+ if (++RecursionCount > MAX_RECURSION) {
625
+ ERROR("DeepRecursion", "Cannot serialize recursive data type.\n"
626
+ "Try: GetMD5(getByteStreamFromArray(Data))");
627
+ }
628
+
629
+ // Call the M-helper function to be more flexible:
630
+ ok = mexCallMATLAB(1, Arg, 1, &V, "GetMD5_helper");
631
+ if (ok != 0) {
632
+ ERROR("HelperFailed", "Calling GetMD5_helper failed.");
633
+ }
634
+
635
+ // Get hash for array replied by the helper:
636
+ ArrayCore(context, Arg[0]);
637
+
638
+ // Clean up:
639
+ if (Arg[0] != NULL) {
640
+ mxDestroyArray(Arg[0]);
641
+ }
642
+ }
643
+ }
644
+
645
+ // Core function to process structs: ===========================================
646
+ void StructCore(MD5_CTX *context, const mxArray *V, mwSize nElem)
647
+ {
648
+ // Sort field names alphabetically to avoid effects of teh order of fields.
649
+ const char *FieldName;
650
+ int nField, iField, FieldIndex;
651
+ mwSize iElem;
652
+ size_t FieldNameLen;
653
+ StringRec *FieldList;
654
+
655
+ // Create list of field names and a handle array, which points to this list.
656
+ // Then sorting the handles allows to get the sorting index:
657
+ nField = mxGetNumberOfFields(V);
658
+ FieldList = (StringRec *) mxMalloc(nField * sizeof(StringRec));
659
+ for (iField = 0; iField < nField; iField++) {
660
+ FieldList[iField].string = mxGetFieldNameByNumber(V, iField);
661
+ FieldList[iField].index = iField;
662
+ }
663
+
664
+ // Sort the strings:
665
+ // (Sorting must not be stable, because the fieldnames are unique)
666
+ qsort(FieldList, nField, sizeof(StringRec), CompareStringRec);
667
+
668
+ // Loop over fields:
669
+ for (iField = 0; iField < nField; iField++) {
670
+ // Encode field name:
671
+ FieldName = FieldList[iField].string;
672
+ FieldIndex = FieldList[iField].index;
673
+ FieldNameLen = STRING_LENGTH(FieldName, 63);
674
+ MD5_Update(context, (uchar_T *) FieldName, FieldNameLen);
675
+
676
+ // Loop over struct array:
677
+ for (iElem = 0; iElem < nElem; iElem++) {
678
+ ArrayCore(context, mxGetFieldByNumber(V, iElem, FieldIndex));
679
+ }
680
+ }
681
+
682
+ // Release memory:
683
+ mxFree(FieldList);
684
+ }
685
+
686
+ // Comparison for qsort(): =====================================================
687
+ int CompareStringRec(const void *va, const void *vb)
688
+ {
689
+ const StringRec *a = (const StringRec *)va,
690
+ *b = (const StringRec *)vb;
691
+ return strcmp(a->string, b->string);
692
+ }
693
+
694
+ // Elementary array as byte stream: ============================================
695
+ void ProcessBin(uchar_T *array, mwSize inputLen, uchar_T digest[16])
696
+ {
697
+ // Only the contents of the array is considered. Therefore double(0) and
698
+ // single([0,0]) reply the same hash. This works for numeric, char and logical
699
+ // arrays only, neitehr cells nor structs.
700
+ MD5_CTX context;
701
+
702
+ MD5_Init(&context);
703
+ MD5_Update(&context, array, inputLen);
704
+ MD5_Final(digest, &context);
705
+ }
706
+
707
+ // File as byte stream: ========================================================
708
+ void ProcessFile(char *filename, uchar_T digest[16])
709
+ {
710
+ FILE *FID;
711
+ MD5_CTX context;
712
+ mwSize len;
713
+
714
+ // Open the file in binary mode:
715
+ if ((FID = fopen(filename, "rb")) == NULL) {
716
+ ERROR3("MissFile", "Cannot open file: [%s]", filename);
717
+ }
718
+
719
+ MD5_Init(&context);
720
+ while ((len = fread(buffer, 1, BUFFER_LEN, FID)) != 0) {
721
+ MD5_Update(&context, buffer, len);
722
+ }
723
+ MD5_Final(digest, &context);
724
+
725
+ fclose(FID);
726
+ }
727
+
728
+ // Output of 16 uchar_Ts as 32 character hexadecimals: ===========================
729
+ void ToHex(const uchar_T digest[16], char *output, int LowerCase)
730
+ {
731
+ char *outputEnd, *Fmt;
732
+ const uchar_T *s = digest;
733
+
734
+ Fmt = LowerCase ? "%02x" : "%02X";
735
+
736
+ for (outputEnd = output + 32; output < outputEnd; output += 2) {
737
+ sprintf(output, Fmt, *(s++));
738
+ }
739
+ }
740
+
741
+ // BASE64 encoded output: ======================================================
742
+ void ToBase64(const uchar_T In[16], char *Out)
743
+ {
744
+ // The base64 encoded string is shorter than the hex string.
745
+ // Needed length: ((len + 2) / 3 * 4) + 1, here fixed to 22+1 (trailing 0!).
746
+ static const uchar_T B64[] =
747
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
748
+
749
+ int i;
750
+ char *p;
751
+ const uchar_T *s;
752
+
753
+ p = Out;
754
+ s = In;
755
+ for (i = 0; i < 5; i++) {
756
+ *p++ = B64[(*s >> 2) & 0x3F];
757
+ *p++ = B64[((*s & 0x3) << 4) | ((s[1] & 0xF0) >> 4)];
758
+ *p++ = B64[((s[1] & 0xF) << 2) | ((s[2] & 0xC0) >> 6)];
759
+ *p++ = B64[s[2] & 0x3F];
760
+ s += 3;
761
+ }
762
+
763
+ *p++ = B64[(*s >> 2) & 0x3F];
764
+ *p++ = B64[((*s & 0x3) << 4)];
765
+ *p = '\0';
766
+ }
767
+
768
+ // Main function: ==============================================================
769
+ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
770
+ {
771
+ // Mex interface:
772
+ // - Define default values of optional arguments.
773
+ // - Forward input data to different calculators according to the input type.
774
+ // - Convert digest to output format.
775
+
776
+ char *FileName, outString[33];
777
+ uchar_T digest[16], *digestP, OutType = 'h';
778
+ double *outP, *outEnd;
779
+ Method_t Method = BINARY_m;
780
+ mwSize nByte;
781
+
782
+ // Check number of inputs and outputs: ---------------------------------------
783
+ if (nrhs == 0 || nrhs > 3) {
784
+ ERROR("BadNInput", "1 to 3 inputs required.");
785
+ }
786
+ if (nlhs > 1) {
787
+ ERROR("BadNOutput", "Too many output arguments.");
788
+ }
789
+
790
+ // Check type of inputs:
791
+ if (mxIsChar(prhs[0])) {
792
+ Method = ASCII_m; // Default for CHAR arrays
793
+ }
794
+
795
+ // Evaluate 1st character of 2nd input:
796
+ if (nrhs >= 2 && mxGetNumberOfElements(prhs[1]) > 0) {
797
+ if (mxIsChar(prhs[1]) == 0) {
798
+ ERROR("BadTypeInput2", "2nd input [Method] must be a string.");
799
+ }
800
+
801
+ switch (*(uchar_T *) mxGetData(prhs[1])) {
802
+ case '8':
803
+ if (!mxIsChar(prhs[0])) {
804
+ WARN("NoASCII", "ASCII Mode ignored: Data is no CHAR.");
805
+ Method = BINARY_m;
806
+ }
807
+ break;
808
+ case 'b':
809
+ case 'B': Method = BINARY_m; break;
810
+ case 'a':
811
+ case 'A': Method = ARRAY_m; break;
812
+ case 'f':
813
+ case 'F': Method = FILE_m; break;
814
+ default: ERROR("BadInput2", "Mode not recognized.");
815
+ }
816
+ }
817
+
818
+ // Output type - default: hex:
819
+ if (nrhs == 3 && !mxIsEmpty(prhs[2])) {
820
+ if (mxIsChar(prhs[2]) == 0) {
821
+ ERROR("BadTypeInput3", "3rd input must be a string.");
822
+ }
823
+
824
+ OutType = *(uchar_T *) mxGetData(prhs[2]); // Just 1st character
825
+ }
826
+
827
+ // Calculate check sum: ------------------------------------------------------
828
+ switch (Method) {
829
+ case FILE_m: // Input is a file name:
830
+ if ((FileName = mxArrayToString(prhs[0])) == NULL) {
831
+ ERROR("StringFail", "Cannot get file name as string.");
832
+ }
833
+ ProcessFile(FileName, digest);
834
+ mxFree(FileName);
835
+ break;
836
+
837
+ case ARRAY_m: // Type, dimensions and contents of the array:
838
+ ProcessArray(prhs[0], digest);
839
+ break;
840
+
841
+ case ASCII_m: // Consider ASCII part of 16-bit mxChar only:
842
+ ProcessChar((mxChar *) mxGetData(prhs[0]),
843
+ mxGetNumberOfElements(prhs[0]), digest);
844
+ break;
845
+
846
+ case BINARY_m: // Contents of the variable:
847
+ if (!(mxIsNumeric(prhs[0]) || mxIsChar(prhs[0]) || mxIsLogical(prhs[0]))
848
+ || mxIsComplex(prhs[0]) || mxIsSparse(prhs[0])) {
849
+ ERROR("BadDataType",
850
+ "Binary mode requires: non-sparse, real, numeric or CHAR data.");
851
+ }
852
+ nByte = mxGetNumberOfElements(prhs[0]) * mxGetElementSize(prhs[0]);
853
+ ProcessBin((uchar_T *) mxGetData(prhs[0]), nByte, digest);
854
+ break;
855
+
856
+ default:
857
+ ERROR("BadSwitch", "Programming error: Unknown switch case?!");
858
+ }
859
+
860
+ // Create output: ------------------------------------------------------------
861
+ switch (OutType) {
862
+ case 'H':
863
+ case 'h': // Hexadecimal upper/lower case:
864
+ ToHex(digest, outString, OutType == 'h');
865
+ plhs[0] = mxCreateString(outString);
866
+ break;
867
+
868
+ case 'D':
869
+ case 'd': // DOUBLE with integer values:
870
+ plhs[0] = mxCreateDoubleMatrix(1, 16, mxREAL);
871
+ outP = mxGetPr(plhs[0]);
872
+ digestP = digest;
873
+ for (outEnd = outP + 16; outP < outEnd; outP++) {
874
+ *outP = (double) *digestP++;
875
+ }
876
+ break;
877
+
878
+ case 'B':
879
+ case 'b': // Base64:
880
+ ToBase64(digest, outString); // Locally implemented
881
+ plhs[0] = mxCreateString(outString);
882
+ break;
883
+
884
+ case 'U':
885
+ case 'u': // UINT8:
886
+ plhs[0] = mxCreateNumericMatrix(1, 16, mxUINT8_CLASS, mxREAL);
887
+ memcpy(mxGetData(plhs[0]), digest, 16 * sizeof(uchar_T));
888
+ break;
889
+
890
+ default:
891
+ ERROR("BadOutputType", "Unknown output type.");
892
+ }
893
+
894
+ return;
895
+ }