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.
- brainscore_vision/__init__.py +105 -0
- brainscore_vision/__main__.py +20 -0
- brainscore_vision/benchmark_helpers/__init__.py +67 -0
- brainscore_vision/benchmark_helpers/neural_common.py +70 -0
- brainscore_vision/benchmark_helpers/properties_common.py +424 -0
- brainscore_vision/benchmark_helpers/screen.py +126 -0
- brainscore_vision/benchmark_helpers/test_helper.py +160 -0
- brainscore_vision/benchmarks/README.md +7 -0
- brainscore_vision/benchmarks/__init__.py +122 -0
- brainscore_vision/benchmarks/baker2022/__init__.py +9 -0
- brainscore_vision/benchmarks/baker2022/benchmark.py +125 -0
- brainscore_vision/benchmarks/baker2022/requirements.txt +1 -0
- brainscore_vision/benchmarks/baker2022/test.py +90 -0
- brainscore_vision/benchmarks/bmd2024/__init__.py +8 -0
- brainscore_vision/benchmarks/bmd2024/benchmark.py +51 -0
- brainscore_vision/benchmarks/bmd2024/test.py +29 -0
- brainscore_vision/benchmarks/bracci2019/__init__.py +8 -0
- brainscore_vision/benchmarks/bracci2019/benchmark.py +286 -0
- brainscore_vision/benchmarks/bracci2019/requirements.txt +3 -0
- brainscore_vision/benchmarks/cadena2017/__init__.py +5 -0
- brainscore_vision/benchmarks/cadena2017/benchmark.py +91 -0
- brainscore_vision/benchmarks/cadena2017/test.py +35 -0
- brainscore_vision/benchmarks/coggan2024_behavior/__init__.py +8 -0
- brainscore_vision/benchmarks/coggan2024_behavior/benchmark.py +133 -0
- brainscore_vision/benchmarks/coggan2024_behavior/test.py +21 -0
- brainscore_vision/benchmarks/coggan2024_fMRI/__init__.py +15 -0
- brainscore_vision/benchmarks/coggan2024_fMRI/benchmark.py +201 -0
- brainscore_vision/benchmarks/coggan2024_fMRI/test.py +25 -0
- brainscore_vision/benchmarks/ferguson2024/__init__.py +24 -0
- brainscore_vision/benchmarks/ferguson2024/benchmark.py +210 -0
- brainscore_vision/benchmarks/ferguson2024/helpers/helpers.py +251 -0
- brainscore_vision/benchmarks/ferguson2024/requirements.txt +5 -0
- brainscore_vision/benchmarks/ferguson2024/test.py +114 -0
- brainscore_vision/benchmarks/freemanziemba2013/__init__.py +10 -0
- brainscore_vision/benchmarks/freemanziemba2013/benchmarks/benchmark.py +53 -0
- brainscore_vision/benchmarks/freemanziemba2013/benchmarks/public_benchmarks.py +37 -0
- brainscore_vision/benchmarks/freemanziemba2013/test.py +98 -0
- brainscore_vision/benchmarks/geirhos2021/__init__.py +59 -0
- brainscore_vision/benchmarks/geirhos2021/benchmark.py +132 -0
- brainscore_vision/benchmarks/geirhos2021/test.py +189 -0
- brainscore_vision/benchmarks/hebart2023/__init__.py +4 -0
- brainscore_vision/benchmarks/hebart2023/benchmark.py +72 -0
- brainscore_vision/benchmarks/hebart2023/test.py +19 -0
- brainscore_vision/benchmarks/hermann2020/__init__.py +6 -0
- brainscore_vision/benchmarks/hermann2020/benchmark.py +63 -0
- brainscore_vision/benchmarks/hermann2020/test.py +28 -0
- brainscore_vision/benchmarks/igustibagus2024/__init__.py +11 -0
- brainscore_vision/benchmarks/igustibagus2024/domain_transfer_analysis.py +306 -0
- brainscore_vision/benchmarks/igustibagus2024/domain_transfer_neural.py +134 -0
- brainscore_vision/benchmarks/igustibagus2024/test.py +45 -0
- brainscore_vision/benchmarks/imagenet/__init__.py +4 -0
- brainscore_vision/benchmarks/imagenet/benchmark.py +50 -0
- brainscore_vision/benchmarks/imagenet/imagenet2012.csv +50001 -0
- brainscore_vision/benchmarks/imagenet/test.py +32 -0
- brainscore_vision/benchmarks/imagenet_c/__init__.py +7 -0
- brainscore_vision/benchmarks/imagenet_c/benchmark.py +204 -0
- brainscore_vision/benchmarks/imagenet_c/test.py +57 -0
- brainscore_vision/benchmarks/islam2021/__init__.py +11 -0
- brainscore_vision/benchmarks/islam2021/benchmark.py +107 -0
- brainscore_vision/benchmarks/islam2021/test.py +47 -0
- brainscore_vision/benchmarks/kar2019/__init__.py +4 -0
- brainscore_vision/benchmarks/kar2019/benchmark.py +88 -0
- brainscore_vision/benchmarks/kar2019/test.py +93 -0
- brainscore_vision/benchmarks/majajhong2015/__init__.py +18 -0
- brainscore_vision/benchmarks/majajhong2015/benchmark.py +96 -0
- brainscore_vision/benchmarks/majajhong2015/test.py +103 -0
- brainscore_vision/benchmarks/malania2007/__init__.py +13 -0
- brainscore_vision/benchmarks/malania2007/benchmark.py +235 -0
- brainscore_vision/benchmarks/malania2007/test.py +64 -0
- brainscore_vision/benchmarks/maniquet2024/__init__.py +6 -0
- brainscore_vision/benchmarks/maniquet2024/benchmark.py +199 -0
- brainscore_vision/benchmarks/maniquet2024/test.py +17 -0
- brainscore_vision/benchmarks/marques2020/__init__.py +76 -0
- brainscore_vision/benchmarks/marques2020/benchmarks/cavanaugh2002a_benchmark.py +119 -0
- brainscore_vision/benchmarks/marques2020/benchmarks/devalois1982a_benchmark.py +84 -0
- brainscore_vision/benchmarks/marques2020/benchmarks/devalois1982b_benchmark.py +88 -0
- brainscore_vision/benchmarks/marques2020/benchmarks/freemanZiemba2013_benchmark.py +138 -0
- brainscore_vision/benchmarks/marques2020/benchmarks/ringach2002_benchmark.py +167 -0
- brainscore_vision/benchmarks/marques2020/benchmarks/schiller1976_benchmark.py +100 -0
- brainscore_vision/benchmarks/marques2020/test.py +135 -0
- brainscore_vision/benchmarks/objectnet/__init__.py +4 -0
- brainscore_vision/benchmarks/objectnet/benchmark.py +52 -0
- brainscore_vision/benchmarks/objectnet/test.py +33 -0
- brainscore_vision/benchmarks/rajalingham2018/__init__.py +10 -0
- brainscore_vision/benchmarks/rajalingham2018/benchmarks/benchmark.py +74 -0
- brainscore_vision/benchmarks/rajalingham2018/benchmarks/public_benchmark.py +10 -0
- brainscore_vision/benchmarks/rajalingham2018/test.py +125 -0
- brainscore_vision/benchmarks/rajalingham2018/test_resources/alexnet-probabilities.nc +0 -0
- brainscore_vision/benchmarks/rajalingham2018/test_resources/identifier=alexnet,stimuli_identifier=objectome-240.nc +0 -0
- brainscore_vision/benchmarks/rajalingham2018/test_resources/identifier=resnet18,stimuli_identifier=objectome-240.nc +0 -0
- brainscore_vision/benchmarks/rajalingham2018/test_resources/identifier=resnet34,stimuli_identifier=objectome-240.nc +0 -0
- brainscore_vision/benchmarks/rajalingham2018/test_resources/resnet18-probabilities.nc +0 -0
- brainscore_vision/benchmarks/rajalingham2018/test_resources/resnet34-probabilities.nc +0 -0
- brainscore_vision/benchmarks/rajalingham2020/__init__.py +4 -0
- brainscore_vision/benchmarks/rajalingham2020/benchmark.py +52 -0
- brainscore_vision/benchmarks/rajalingham2020/test.py +39 -0
- brainscore_vision/benchmarks/sanghavi2020/__init__.py +17 -0
- brainscore_vision/benchmarks/sanghavi2020/benchmarks/sanghavi2020_benchmark.py +44 -0
- brainscore_vision/benchmarks/sanghavi2020/benchmarks/sanghavijozwik2020_benchmark.py +44 -0
- brainscore_vision/benchmarks/sanghavi2020/benchmarks/sanghavimurty2020_benchmark.py +44 -0
- brainscore_vision/benchmarks/sanghavi2020/test.py +83 -0
- brainscore_vision/benchmarks/scialom2024/__init__.py +52 -0
- brainscore_vision/benchmarks/scialom2024/benchmark.py +97 -0
- brainscore_vision/benchmarks/scialom2024/test.py +162 -0
- brainscore_vision/data/__init__.py +0 -0
- brainscore_vision/data/baker2022/__init__.py +40 -0
- brainscore_vision/data/baker2022/data_packaging/inverted_distortion_data_assembly.py +43 -0
- brainscore_vision/data/baker2022/data_packaging/inverted_distortion_stimulus_set.py +81 -0
- brainscore_vision/data/baker2022/data_packaging/mapping.py +60 -0
- brainscore_vision/data/baker2022/data_packaging/normal_distortion_data_assembly.py +46 -0
- brainscore_vision/data/baker2022/data_packaging/normal_distortion_stimulus_set.py +94 -0
- brainscore_vision/data/baker2022/test.py +135 -0
- brainscore_vision/data/barbumayo2019/BarbuMayo2019.py +26 -0
- brainscore_vision/data/barbumayo2019/__init__.py +23 -0
- brainscore_vision/data/barbumayo2019/test.py +10 -0
- brainscore_vision/data/bashivankar2019/__init__.py +52 -0
- brainscore_vision/data/bashivankar2019/data_packaging/2020-08-17_npc_v4_data.h5.png +0 -0
- brainscore_vision/data/bashivankar2019/data_packaging/requirements.txt +4 -0
- brainscore_vision/data/bashivankar2019/data_packaging/synthetic.py +162 -0
- brainscore_vision/data/bashivankar2019/test.py +15 -0
- brainscore_vision/data/bmd2024/__init__.py +69 -0
- brainscore_vision/data/bmd2024/data_packaging/BMD_2024_data_assembly.py +91 -0
- brainscore_vision/data/bmd2024/data_packaging/BMD_2024_simulus_set.py +48 -0
- brainscore_vision/data/bmd2024/data_packaging/stim_meta.csv +401 -0
- brainscore_vision/data/bmd2024/test.py +130 -0
- brainscore_vision/data/bracci2019/__init__.py +36 -0
- brainscore_vision/data/bracci2019/data_packaging.py +221 -0
- brainscore_vision/data/bracci2019/test.py +16 -0
- brainscore_vision/data/cadena2017/__init__.py +52 -0
- brainscore_vision/data/cadena2017/data_packaging/2018-08-07_tolias_v1.ipynb +25880 -0
- brainscore_vision/data/cadena2017/data_packaging/analysis.py +26 -0
- brainscore_vision/data/cadena2017/test.py +24 -0
- brainscore_vision/data/cichy2019/__init__.py +38 -0
- brainscore_vision/data/cichy2019/test.py +8 -0
- brainscore_vision/data/coggan2024_behavior/__init__.py +36 -0
- brainscore_vision/data/coggan2024_behavior/data_packaging.py +166 -0
- brainscore_vision/data/coggan2024_behavior/test.py +32 -0
- brainscore_vision/data/coggan2024_fMRI/__init__.py +27 -0
- brainscore_vision/data/coggan2024_fMRI/data_packaging.py +123 -0
- brainscore_vision/data/coggan2024_fMRI/test.py +25 -0
- brainscore_vision/data/david2004/__init__.py +34 -0
- brainscore_vision/data/david2004/data_packaging/2018-05-10_gallant_data.ipynb +3647 -0
- brainscore_vision/data/david2004/data_packaging/2018-05-23_gallant_data.ipynb +3149 -0
- brainscore_vision/data/david2004/data_packaging/2018-06-05_gallant_data.ipynb +3628 -0
- brainscore_vision/data/david2004/data_packaging/__init__.py +61 -0
- brainscore_vision/data/david2004/data_packaging/convertGallant.m +100 -0
- brainscore_vision/data/david2004/data_packaging/convertGallantV1Aligned.m +58 -0
- brainscore_vision/data/david2004/data_packaging/lib/DataHash_20160618/DataHash.m +484 -0
- brainscore_vision/data/david2004/data_packaging/lib/DataHash_20160618/license.txt +24 -0
- brainscore_vision/data/david2004/data_packaging/lib/GetMD5/GetMD5.c +895 -0
- brainscore_vision/data/david2004/data_packaging/lib/GetMD5/GetMD5.m +107 -0
- brainscore_vision/data/david2004/data_packaging/lib/GetMD5/GetMD5.mexw64 +0 -0
- brainscore_vision/data/david2004/data_packaging/lib/GetMD5/GetMD5_helper.m +91 -0
- brainscore_vision/data/david2004/data_packaging/lib/GetMD5/InstallMex.m +307 -0
- brainscore_vision/data/david2004/data_packaging/lib/GetMD5/license.txt +24 -0
- brainscore_vision/data/david2004/data_packaging/lib/GetMD5/uTest_GetMD5.m +290 -0
- brainscore_vision/data/david2004/data_packaging/lib/glob/glob.m +472 -0
- brainscore_vision/data/david2004/data_packaging/lib/glob/license.txt +27 -0
- brainscore_vision/data/david2004/data_packaging/xr_align_debug.py +137 -0
- brainscore_vision/data/david2004/test.py +8 -0
- brainscore_vision/data/deng2009/__init__.py +22 -0
- brainscore_vision/data/deng2009/deng2009imagenet.py +33 -0
- brainscore_vision/data/deng2009/test.py +9 -0
- brainscore_vision/data/ferguson2024/__init__.py +401 -0
- brainscore_vision/data/ferguson2024/data_packaging/data_packaging.py +164 -0
- brainscore_vision/data/ferguson2024/data_packaging/fitting_stimuli.py +20 -0
- brainscore_vision/data/ferguson2024/requirements.txt +2 -0
- brainscore_vision/data/ferguson2024/test.py +155 -0
- brainscore_vision/data/freemanziemba2013/__init__.py +133 -0
- brainscore_vision/data/freemanziemba2013/data_packaging/2018-10-05_movshon.ipynb +2002 -0
- brainscore_vision/data/freemanziemba2013/data_packaging/2020-02-21_movshon_aperture.ipynb +4730 -0
- brainscore_vision/data/freemanziemba2013/data_packaging/2020-02-26_movshon_aperture_test.ipynb +2228 -0
- brainscore_vision/data/freemanziemba2013/data_packaging/aperture_correct.py +160 -0
- brainscore_vision/data/freemanziemba2013/data_packaging/data_packaging.py +57 -0
- brainscore_vision/data/freemanziemba2013/data_packaging/movshon.py +202 -0
- brainscore_vision/data/freemanziemba2013/test.py +97 -0
- brainscore_vision/data/geirhos2021/__init__.py +358 -0
- brainscore_vision/data/geirhos2021/creating_geirhos_ids.ipynb +468 -0
- brainscore_vision/data/geirhos2021/data_packaging/colour/colour_data_assembly.py +87 -0
- brainscore_vision/data/geirhos2021/data_packaging/colour/colour_stimulus_set.py +81 -0
- brainscore_vision/data/geirhos2021/data_packaging/contrast/contrast_data_assembly.py +83 -0
- brainscore_vision/data/geirhos2021/data_packaging/contrast/contrast_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/data_packaging/cue-conflict/cue-conflict_data_assembly.py +100 -0
- brainscore_vision/data/geirhos2021/data_packaging/cue-conflict/cue-conflict_stimulus_set.py +84 -0
- brainscore_vision/data/geirhos2021/data_packaging/edge/edge_data_assembly.py +96 -0
- brainscore_vision/data/geirhos2021/data_packaging/edge/edge_stimulus_set.py +69 -0
- brainscore_vision/data/geirhos2021/data_packaging/eidolonI/eidolonI_data_assembly.py +92 -0
- brainscore_vision/data/geirhos2021/data_packaging/eidolonI/eidolonI_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/data_packaging/eidolonII/eidolonII_data_assembly.py +92 -0
- brainscore_vision/data/geirhos2021/data_packaging/eidolonII/eidolonII_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/data_packaging/eidolonIII/eidolonIII_data_assembly.py +92 -0
- brainscore_vision/data/geirhos2021/data_packaging/eidolonIII/eidolonIII_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/data_packaging/false-colour/false-colour_data_assembly.py +83 -0
- brainscore_vision/data/geirhos2021/data_packaging/false-colour/false-colour_stimulus_set.py +87 -0
- brainscore_vision/data/geirhos2021/data_packaging/high-pass/high-pass_data_assembly.py +84 -0
- brainscore_vision/data/geirhos2021/data_packaging/high-pass/high-pass_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/data_packaging/low-pass/low-pass_data_assembly.py +84 -0
- brainscore_vision/data/geirhos2021/data_packaging/low-pass/low-pass_stimulus_set.py +81 -0
- brainscore_vision/data/geirhos2021/data_packaging/phase-scrambling/phase-scrambling_data_assembly.py +84 -0
- brainscore_vision/data/geirhos2021/data_packaging/phase-scrambling/phase-scrambling_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/data_packaging/power-equalisation/power-equalisation_data_assembly.py +88 -0
- brainscore_vision/data/geirhos2021/data_packaging/power-equalisation/power-equalisation_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/data_packaging/rotation/rotation_data_assembly.py +87 -0
- brainscore_vision/data/geirhos2021/data_packaging/rotation/rotation_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/data_packaging/silhouette/silhouette_data_assembly.py +100 -0
- brainscore_vision/data/geirhos2021/data_packaging/silhouette/silhouette_stimulus_set.py +71 -0
- brainscore_vision/data/geirhos2021/data_packaging/sketch/sketch_data_assembly.py +88 -0
- brainscore_vision/data/geirhos2021/data_packaging/sketch/sketch_stimulus_set.py +75 -0
- brainscore_vision/data/geirhos2021/data_packaging/stylized/stylized_data_assembly.py +87 -0
- brainscore_vision/data/geirhos2021/data_packaging/stylized/stylized_stimulus_set.py +75 -0
- brainscore_vision/data/geirhos2021/data_packaging/uniform-noise/uniform-noise_data_assembly.py +86 -0
- brainscore_vision/data/geirhos2021/data_packaging/uniform-noise/uniform-noise_stimulus_set.py +82 -0
- brainscore_vision/data/geirhos2021/geirhos_hashes.csv +52 -0
- brainscore_vision/data/geirhos2021/test.py +330 -0
- brainscore_vision/data/hebart2023/__init__.py +23 -0
- brainscore_vision/data/hebart2023/packaging/data_assembly.py +40 -0
- brainscore_vision/data/hebart2023/packaging/stimulus_set.py +72 -0
- brainscore_vision/data/hebart2023/test.py +42 -0
- brainscore_vision/data/hendrycks2019/__init__.py +45 -0
- brainscore_vision/data/hendrycks2019/test.py +26 -0
- brainscore_vision/data/igustibagus2024/__init__.py +23 -0
- brainscore_vision/data/igustibagus2024/dependencies/data_pico/stimulus_dicarlo_domain_transfer.csv +3139 -0
- brainscore_vision/data/igustibagus2024/investigation_consistency.ipynb +346 -0
- brainscore_vision/data/igustibagus2024/merged_assembly/__init__.py +0 -0
- brainscore_vision/data/igustibagus2024/merged_assembly/create_merged_assembly.ipynb +649 -0
- brainscore_vision/data/igustibagus2024/merged_assembly/create_merged_assembly_and_stim.py +152 -0
- brainscore_vision/data/igustibagus2024/merged_assembly/create_stimulus_set_with_background-id.py +45 -0
- brainscore_vision/data/igustibagus2024/merged_assembly/helpers_background_id.py +849 -0
- brainscore_vision/data/igustibagus2024/merged_assembly/merged_stimulus_set.csv +3139 -0
- brainscore_vision/data/igustibagus2024/oleo_pico_exploration.ipynb +410 -0
- brainscore_vision/data/igustibagus2024/test.py +26 -0
- brainscore_vision/data/imagenetslim15000/ImageNetSlim15000.py +30 -0
- brainscore_vision/data/imagenetslim15000/__init__.py +11 -0
- brainscore_vision/data/imagenetslim15000/test.py +8 -0
- brainscore_vision/data/islam2021/__init__.py +18 -0
- brainscore_vision/data/islam2021/data_packaging.py +64 -0
- brainscore_vision/data/islam2021/test.py +11 -0
- brainscore_vision/data/kar2018/__init__.py +58 -0
- brainscore_vision/data/kar2018/data_packaging/kar_coco.py +97 -0
- brainscore_vision/data/kar2018/data_packaging/kar_hvm.py +77 -0
- brainscore_vision/data/kar2018/data_packaging/requirements.txt +1 -0
- brainscore_vision/data/kar2018/test.py +10 -0
- brainscore_vision/data/kar2019/__init__.py +43 -0
- brainscore_vision/data/kar2019/data_packaging.py +116 -0
- brainscore_vision/data/kar2019/test.py +8 -0
- brainscore_vision/data/kuzovkin2018/__init__.py +36 -0
- brainscore_vision/data/kuzovkin2018/createAssembliesBrainScore.py +103 -0
- brainscore_vision/data/kuzovkin2018/test.py +8 -0
- brainscore_vision/data/majajhong2015/__init__.py +113 -0
- brainscore_vision/data/majajhong2015/data_packaging/darren10ms.py +32 -0
- brainscore_vision/data/majajhong2015/data_packaging/data_packaging.py +65 -0
- brainscore_vision/data/majajhong2015/test.py +38 -0
- brainscore_vision/data/malania2007/__init__.py +254 -0
- brainscore_vision/data/malania2007/data_packaging/malania_data_assembly.py +79 -0
- brainscore_vision/data/malania2007/data_packaging/malania_stimulus_set.py +79 -0
- brainscore_vision/data/malania2007/test.py +147 -0
- brainscore_vision/data/maniquet2024/__init__.py +57 -0
- brainscore_vision/data/maniquet2024/data_packaging.py +151 -0
- brainscore_vision/data/maniquet2024/test.py +16 -0
- brainscore_vision/data/marques2020/__init__.py +123 -0
- brainscore_vision/data/marques2020/data_packaging/marques_cavanaugh2002a.py +84 -0
- brainscore_vision/data/marques2020/data_packaging/marques_devalois1982a.py +44 -0
- brainscore_vision/data/marques2020/data_packaging/marques_devalois1982b.py +54 -0
- brainscore_vision/data/marques2020/data_packaging/marques_freemanZiemba2013.py +252 -0
- brainscore_vision/data/marques2020/data_packaging/marques_gen_stim.py +95 -0
- brainscore_vision/data/marques2020/data_packaging/marques_ringach2002.py +95 -0
- brainscore_vision/data/marques2020/data_packaging/marques_schiller1976c.py +60 -0
- brainscore_vision/data/marques2020/data_packaging/marques_stim_common.py +389 -0
- brainscore_vision/data/marques2020/data_packaging/marques_utils.py +21 -0
- brainscore_vision/data/marques2020/data_packaging/setup.py +13 -0
- brainscore_vision/data/marques2020/test.py +54 -0
- brainscore_vision/data/rajalingham2018/__init__.py +56 -0
- brainscore_vision/data/rajalingham2018/rajalingham2018objectome.py +193 -0
- brainscore_vision/data/rajalingham2018/test.py +10 -0
- brainscore_vision/data/rajalingham2020/__init__.py +39 -0
- brainscore_vision/data/rajalingham2020/rajalingham2020orthographic_IT.py +97 -0
- brainscore_vision/data/rajalingham2020/test.py +8 -0
- brainscore_vision/data/rust2012/2020-12-28_rust.ipynb +3301 -0
- brainscore_vision/data/rust2012/__init__.py +45 -0
- brainscore_vision/data/rust2012/rust305.py +35 -0
- brainscore_vision/data/rust2012/test.py +47 -0
- brainscore_vision/data/sanghavi2020/__init__.py +119 -0
- brainscore_vision/data/sanghavi2020/data_packaging/environment.yml +36 -0
- brainscore_vision/data/sanghavi2020/data_packaging/requirements.txt +4 -0
- brainscore_vision/data/sanghavi2020/data_packaging/sanghavi2020.py +101 -0
- brainscore_vision/data/sanghavi2020/data_packaging/sanghavijozwik2020.py +148 -0
- brainscore_vision/data/sanghavi2020/data_packaging/sanghavikar2020.py +131 -0
- brainscore_vision/data/sanghavi2020/data_packaging/sanghavimurty2020.py +120 -0
- brainscore_vision/data/sanghavi2020/data_packaging/sanghavimurty2020things.py +138 -0
- brainscore_vision/data/sanghavi2020/data_packaging/sanghavimurty2020things1.py +118 -0
- brainscore_vision/data/sanghavi2020/data_packaging/sanghavimurty2020things2.py +118 -0
- brainscore_vision/data/sanghavi2020/test.py +13 -0
- brainscore_vision/data/scialom2024/__init__.py +386 -0
- brainscore_vision/data/scialom2024/data_packaging/scialom_data_assembly.py +164 -0
- brainscore_vision/data/scialom2024/data_packaging/scialom_stimulus_set.py +117 -0
- brainscore_vision/data/scialom2024/test.py +301 -0
- brainscore_vision/data/seibert2019/__init__.py +25 -0
- brainscore_vision/data/seibert2019/data_packaging/2020-10-13_juvenile.ipynb +35703 -0
- brainscore_vision/data/seibert2019/data_packaging/2020-11-18_juvenile_scratch.txt +556 -0
- brainscore_vision/data/seibert2019/data_packaging/2020-11-22_juvenile_dldata.ipynb +3614 -0
- brainscore_vision/data/seibert2019/data_packaging/juvenile.py +103 -0
- brainscore_vision/data/seibert2019/test.py +35 -0
- brainscore_vision/data/zhang2018/__init__.py +38 -0
- brainscore_vision/data/zhang2018/test.py +29 -0
- brainscore_vision/data_helpers/__init__.py +0 -0
- brainscore_vision/data_helpers/lookup_legacy.py +15 -0
- brainscore_vision/data_helpers/s3.py +79 -0
- brainscore_vision/metric_helpers/__init__.py +5 -0
- brainscore_vision/metric_helpers/temporal.py +119 -0
- brainscore_vision/metric_helpers/transformations.py +379 -0
- brainscore_vision/metric_helpers/utils.py +71 -0
- brainscore_vision/metric_helpers/xarray_utils.py +151 -0
- brainscore_vision/metrics/__init__.py +7 -0
- brainscore_vision/metrics/accuracy/__init__.py +4 -0
- brainscore_vision/metrics/accuracy/metric.py +16 -0
- brainscore_vision/metrics/accuracy/test.py +11 -0
- brainscore_vision/metrics/accuracy_distance/__init__.py +4 -0
- brainscore_vision/metrics/accuracy_distance/metric.py +109 -0
- brainscore_vision/metrics/accuracy_distance/test.py +57 -0
- brainscore_vision/metrics/baker_accuracy_delta/__init__.py +4 -0
- brainscore_vision/metrics/baker_accuracy_delta/metric.py +94 -0
- brainscore_vision/metrics/baker_accuracy_delta/requirements.txt +1 -0
- brainscore_vision/metrics/baker_accuracy_delta/test.py +1 -0
- brainscore_vision/metrics/cka/__init__.py +14 -0
- brainscore_vision/metrics/cka/metric.py +105 -0
- brainscore_vision/metrics/cka/test.py +28 -0
- brainscore_vision/metrics/dimensionality/__init__.py +13 -0
- brainscore_vision/metrics/dimensionality/metric.py +45 -0
- brainscore_vision/metrics/distribution_similarity/__init__.py +14 -0
- brainscore_vision/metrics/distribution_similarity/metric.py +84 -0
- brainscore_vision/metrics/distribution_similarity/test.py +10 -0
- brainscore_vision/metrics/error_consistency/__init__.py +13 -0
- brainscore_vision/metrics/error_consistency/metric.py +93 -0
- brainscore_vision/metrics/error_consistency/test.py +39 -0
- brainscore_vision/metrics/i1i2/__init__.py +16 -0
- brainscore_vision/metrics/i1i2/metric.py +299 -0
- brainscore_vision/metrics/i1i2/requirements.txt +2 -0
- brainscore_vision/metrics/i1i2/test.py +36 -0
- brainscore_vision/metrics/i1i2/test_resources/alexnet-probabilities.nc +0 -0
- brainscore_vision/metrics/i1i2/test_resources/resnet18-probabilities.nc +0 -0
- brainscore_vision/metrics/i1i2/test_resources/resnet34-probabilities.nc +0 -0
- brainscore_vision/metrics/internal_consistency/__init__.py +8 -0
- brainscore_vision/metrics/internal_consistency/ceiling.py +127 -0
- brainscore_vision/metrics/internal_consistency/requirements.txt +1 -0
- brainscore_vision/metrics/internal_consistency/test.py +39 -0
- brainscore_vision/metrics/maniquet2024_metrics/__init__.py +19 -0
- brainscore_vision/metrics/maniquet2024_metrics/metric.py +416 -0
- brainscore_vision/metrics/maniquet2024_metrics/test.py +8 -0
- brainscore_vision/metrics/mask_regression/__init__.py +16 -0
- brainscore_vision/metrics/mask_regression/metric.py +242 -0
- brainscore_vision/metrics/mask_regression/requirements.txt +1 -0
- brainscore_vision/metrics/mask_regression/test.py +0 -0
- brainscore_vision/metrics/ost/__init__.py +23 -0
- brainscore_vision/metrics/ost/metric.py +350 -0
- brainscore_vision/metrics/ost/requirements.txt +2 -0
- brainscore_vision/metrics/ost/test.py +0 -0
- brainscore_vision/metrics/rdm/__init__.py +14 -0
- brainscore_vision/metrics/rdm/metric.py +101 -0
- brainscore_vision/metrics/rdm/requirements.txt +2 -0
- brainscore_vision/metrics/rdm/test.py +63 -0
- brainscore_vision/metrics/regression_correlation/__init__.py +48 -0
- brainscore_vision/metrics/regression_correlation/mask_regression.py +232 -0
- brainscore_vision/metrics/regression_correlation/metric.py +125 -0
- brainscore_vision/metrics/regression_correlation/requirements.txt +3 -0
- brainscore_vision/metrics/regression_correlation/test.py +36 -0
- brainscore_vision/metrics/threshold/__init__.py +5 -0
- brainscore_vision/metrics/threshold/metric.py +481 -0
- brainscore_vision/metrics/threshold/test.py +71 -0
- brainscore_vision/metrics/value_delta/__init__.py +4 -0
- brainscore_vision/metrics/value_delta/metric.py +30 -0
- brainscore_vision/metrics/value_delta/requirements.txt +1 -0
- brainscore_vision/metrics/value_delta/test.py +40 -0
- brainscore_vision/model_helpers/__init__.py +3 -0
- brainscore_vision/model_helpers/activations/__init__.py +1 -0
- brainscore_vision/model_helpers/activations/core.py +635 -0
- brainscore_vision/model_helpers/activations/pca.py +117 -0
- brainscore_vision/model_helpers/activations/pytorch.py +152 -0
- brainscore_vision/model_helpers/activations/temporal/__init__.py +0 -0
- brainscore_vision/model_helpers/activations/temporal/core/__init__.py +3 -0
- brainscore_vision/model_helpers/activations/temporal/core/executor.py +219 -0
- brainscore_vision/model_helpers/activations/temporal/core/extractor.py +282 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/__init__.py +2 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/base.py +274 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/__init__.py +2 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/base.py +134 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/temporal_context/__init__.py +2 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/temporal_context/base.py +99 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/temporal_context/block.py +77 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/temporal_context/causal.py +86 -0
- brainscore_vision/model_helpers/activations/temporal/core/inferencer/video/time_aligner.py +73 -0
- brainscore_vision/model_helpers/activations/temporal/inputs/__init__.py +3 -0
- brainscore_vision/model_helpers/activations/temporal/inputs/base.py +17 -0
- brainscore_vision/model_helpers/activations/temporal/inputs/image.py +50 -0
- brainscore_vision/model_helpers/activations/temporal/inputs/video.py +186 -0
- brainscore_vision/model_helpers/activations/temporal/model/__init__.py +2 -0
- brainscore_vision/model_helpers/activations/temporal/model/base.py +33 -0
- brainscore_vision/model_helpers/activations/temporal/model/pytorch.py +107 -0
- brainscore_vision/model_helpers/activations/temporal/utils.py +228 -0
- brainscore_vision/model_helpers/brain_transformation/__init__.py +97 -0
- brainscore_vision/model_helpers/brain_transformation/behavior.py +348 -0
- brainscore_vision/model_helpers/brain_transformation/imagenet_classes.txt +1000 -0
- brainscore_vision/model_helpers/brain_transformation/neural.py +159 -0
- brainscore_vision/model_helpers/brain_transformation/temporal.py +199 -0
- brainscore_vision/model_helpers/check_submission/__init__.py +0 -0
- brainscore_vision/model_helpers/check_submission/check_models.py +87 -0
- brainscore_vision/model_helpers/check_submission/images/1.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/10.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/11.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/12.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/13.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/14.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/15.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/16.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/17.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/18.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/19.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/2.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/20.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/3.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/4.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/5.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/6.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/7.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/8.png +0 -0
- brainscore_vision/model_helpers/check_submission/images/9.png +0 -0
- brainscore_vision/model_helpers/conftest.py +3 -0
- brainscore_vision/model_helpers/generic_plugin_tests.py +119 -0
- brainscore_vision/model_helpers/s3.py +62 -0
- brainscore_vision/model_helpers/utils/__init__.py +15 -0
- brainscore_vision/model_helpers/utils/s3.py +42 -0
- brainscore_vision/model_interface.py +214 -0
- brainscore_vision/models/AdvProp_efficientne_b6/__init__.py +5 -0
- brainscore_vision/models/AdvProp_efficientne_b6/model.py +75 -0
- brainscore_vision/models/AdvProp_efficientne_b6/requirements.txt +1 -0
- brainscore_vision/models/AdvProp_efficientne_b6/test.py +9 -0
- brainscore_vision/models/AlexNet_SIN/__init__.py +8 -0
- brainscore_vision/models/AlexNet_SIN/model.py +29 -0
- brainscore_vision/models/AlexNet_SIN/requirements.txt +2 -0
- brainscore_vision/models/AlexNet_SIN/test.py +1 -0
- brainscore_vision/models/Soumyadeep_inf_1/__init__.py +5 -0
- brainscore_vision/models/Soumyadeep_inf_1/model.py +60 -0
- brainscore_vision/models/Soumyadeep_inf_1/setup.py +26 -0
- brainscore_vision/models/Soumyadeep_inf_1/test.py +1 -0
- brainscore_vision/models/ViT_L_32_imagenet1k/__init__.py +8 -0
- brainscore_vision/models/ViT_L_32_imagenet1k/model.py +43 -0
- brainscore_vision/models/ViT_L_32_imagenet1k/requirements.txt +4 -0
- brainscore_vision/models/ViT_L_32_imagenet1k/test.py +8 -0
- brainscore_vision/models/__init__.py +0 -0
- brainscore_vision/models/alexnet/__init__.py +8 -0
- brainscore_vision/models/alexnet/model.py +28 -0
- brainscore_vision/models/alexnet/requirements.txt +2 -0
- brainscore_vision/models/alexnet/test.py +15 -0
- brainscore_vision/models/alexnet_7be5be79/__init__.py +7 -0
- brainscore_vision/models/alexnet_7be5be79/model.py +44 -0
- brainscore_vision/models/alexnet_7be5be79/setup.py +26 -0
- brainscore_vision/models/alexnet_7be5be79/test.py +1 -0
- brainscore_vision/models/alexnet_7be5be79_convs/__init__.py +5 -0
- brainscore_vision/models/alexnet_7be5be79_convs/model.py +42 -0
- brainscore_vision/models/alexnet_7be5be79_convs/setup.py +25 -0
- brainscore_vision/models/alexnet_7be5be79_convs/test.py +1 -0
- brainscore_vision/models/alexnet_ks_torevert/__init__.py +8 -0
- brainscore_vision/models/alexnet_ks_torevert/model.py +28 -0
- brainscore_vision/models/alexnet_ks_torevert/requirements.txt +2 -0
- brainscore_vision/models/alexnet_ks_torevert/test.py +15 -0
- brainscore_vision/models/alexnet_simclr_run1/__init__.py +7 -0
- brainscore_vision/models/alexnet_simclr_run1/model.py +267 -0
- brainscore_vision/models/alexnet_simclr_run1/requirements.txt +2 -0
- brainscore_vision/models/alexnet_simclr_run1/test.py +1 -0
- brainscore_vision/models/alexnet_testing/__init__.py +8 -0
- brainscore_vision/models/alexnet_testing/model.py +28 -0
- brainscore_vision/models/alexnet_testing/requirements.txt +2 -0
- brainscore_vision/models/alexnet_testing/setup.py +24 -0
- brainscore_vision/models/alexnet_testing/test.py +15 -0
- brainscore_vision/models/antialias_resnet152/__init__.py +7 -0
- brainscore_vision/models/antialias_resnet152/model.py +35 -0
- brainscore_vision/models/antialias_resnet152/requirements.txt +3 -0
- brainscore_vision/models/antialias_resnet152/test.py +8 -0
- brainscore_vision/models/antialiased_rnext101_32x8d/__init__.py +7 -0
- brainscore_vision/models/antialiased_rnext101_32x8d/model.py +35 -0
- brainscore_vision/models/antialiased_rnext101_32x8d/requirements.txt +1 -0
- brainscore_vision/models/antialiased_rnext101_32x8d/test.py +8 -0
- brainscore_vision/models/bp_resnet50_julios/__init__.py +5 -0
- brainscore_vision/models/bp_resnet50_julios/model.py +52 -0
- brainscore_vision/models/bp_resnet50_julios/setup.py +24 -0
- brainscore_vision/models/bp_resnet50_julios/test.py +1 -0
- brainscore_vision/models/clip/__init__.py +5 -0
- brainscore_vision/models/clip/model.py +179 -0
- brainscore_vision/models/clip/requirements.txt +4 -0
- brainscore_vision/models/clip/test.py +1 -0
- brainscore_vision/models/clipvision/__init__.py +5 -0
- brainscore_vision/models/clipvision/model.py +179 -0
- brainscore_vision/models/clipvision/requirements.txt +4 -0
- brainscore_vision/models/clipvision/test.py +1 -0
- brainscore_vision/models/cornet_s/__init__.py +8 -0
- brainscore_vision/models/cornet_s/helpers/helpers.py +215 -0
- brainscore_vision/models/cornet_s/model.py +77 -0
- brainscore_vision/models/cornet_s/requirements.txt +7 -0
- brainscore_vision/models/cornet_s/test.py +8 -0
- brainscore_vision/models/cornet_s_ynshah/__init__.py +388 -0
- brainscore_vision/models/cornet_s_ynshah/model.py +192 -0
- brainscore_vision/models/cornet_s_ynshah/setup.py +24 -0
- brainscore_vision/models/cornet_s_ynshah/test.py +0 -0
- brainscore_vision/models/custom_model_cv_18_dagger_408/__init__.py +7 -0
- brainscore_vision/models/custom_model_cv_18_dagger_408/model.py +75 -0
- brainscore_vision/models/custom_model_cv_18_dagger_408/requirements.txt +4 -0
- brainscore_vision/models/custom_model_cv_18_dagger_408/test.py +8 -0
- brainscore_vision/models/cv_18_dagger_408_pretrained/__init__.py +8 -0
- brainscore_vision/models/cv_18_dagger_408_pretrained/model.py +57 -0
- brainscore_vision/models/cv_18_dagger_408_pretrained/requirements.txt +3 -0
- brainscore_vision/models/cv_18_dagger_408_pretrained/test.py +25 -0
- brainscore_vision/models/cvt_cvt_w24_384_in22k_finetuned_in1k_4/__init__.py +9 -0
- brainscore_vision/models/cvt_cvt_w24_384_in22k_finetuned_in1k_4/model.py +134 -0
- brainscore_vision/models/cvt_cvt_w24_384_in22k_finetuned_in1k_4/requirements.txt +4 -0
- brainscore_vision/models/cvt_cvt_w24_384_in22k_finetuned_in1k_4/test.py +8 -0
- brainscore_vision/models/dbp_resnet50_julios/__init__.py +5 -0
- brainscore_vision/models/dbp_resnet50_julios/model.py +52 -0
- brainscore_vision/models/dbp_resnet50_julios/setup.py +24 -0
- brainscore_vision/models/dbp_resnet50_julios/test.py +1 -0
- brainscore_vision/models/densenet_201_pytorch/__init__.py +7 -0
- brainscore_vision/models/densenet_201_pytorch/model.py +59 -0
- brainscore_vision/models/densenet_201_pytorch/requirements.txt +3 -0
- brainscore_vision/models/densenet_201_pytorch/test.py +8 -0
- brainscore_vision/models/eBarlow_Vanilla/__init__.py +9 -0
- brainscore_vision/models/eBarlow_Vanilla/model.py +50 -0
- brainscore_vision/models/eBarlow_Vanilla/requirements.txt +2 -0
- brainscore_vision/models/eBarlow_Vanilla/setup.py +24 -0
- brainscore_vision/models/eBarlow_Vanilla/test.py +1 -0
- brainscore_vision/models/eBarlow_Vanilla_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_Vanilla_1/model.py +64 -0
- brainscore_vision/models/eBarlow_Vanilla_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_Vanilla_1/test.py +1 -0
- brainscore_vision/models/eBarlow_Vanilla_1_full/__init__.py +9 -0
- brainscore_vision/models/eBarlow_Vanilla_1_full/model.py +84 -0
- brainscore_vision/models/eBarlow_Vanilla_1_full/setup.py +25 -0
- brainscore_vision/models/eBarlow_Vanilla_1_full/test.py +1 -0
- brainscore_vision/models/eBarlow_Vanilla_2/__init__.py +9 -0
- brainscore_vision/models/eBarlow_Vanilla_2/model.py +64 -0
- brainscore_vision/models/eBarlow_Vanilla_2/setup.py +24 -0
- brainscore_vision/models/eBarlow_Vanilla_2/test.py +1 -0
- brainscore_vision/models/eBarlow_augself_linear_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_augself_linear_1/model.py +65 -0
- brainscore_vision/models/eBarlow_augself_linear_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_augself_linear_1/test.py +1 -0
- brainscore_vision/models/eBarlow_augself_mlp_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_augself_mlp_1/model.py +65 -0
- brainscore_vision/models/eBarlow_augself_mlp_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_augself_mlp_1/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_0001_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_0001_1/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_0001_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_0001_1/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_001_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_001_1/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_001_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_001_1/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_001_2/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_001_2/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_001_2/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_001_2/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_001_3/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_001_3/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_001_3/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_001_3/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_01/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_01/model.py +50 -0
- brainscore_vision/models/eBarlow_lmda_01/requirements.txt +2 -0
- brainscore_vision/models/eBarlow_lmda_01/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_01/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_01_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_01_1/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_01_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_01_1/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_01_2/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_01_2/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_01_2/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_01_2/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_02_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_02_1/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_02_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_02_1/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_02_1000ep/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_02_1000ep/model.py +84 -0
- brainscore_vision/models/eBarlow_lmda_02_1000ep/setup.py +25 -0
- brainscore_vision/models/eBarlow_lmda_02_1000ep/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_02_1_full/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_02_1_full/model.py +85 -0
- brainscore_vision/models/eBarlow_lmda_02_1_full/setup.py +25 -0
- brainscore_vision/models/eBarlow_lmda_02_1_full/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_02_200_full/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_02_200_full/model.py +85 -0
- brainscore_vision/models/eBarlow_lmda_02_200_full/setup.py +25 -0
- brainscore_vision/models/eBarlow_lmda_02_200_full/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_03_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_03_1/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_03_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_03_1/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_04_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_04_1/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_04_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_04_1/test.py +1 -0
- brainscore_vision/models/eBarlow_lmda_05_1/__init__.py +9 -0
- brainscore_vision/models/eBarlow_lmda_05_1/model.py +65 -0
- brainscore_vision/models/eBarlow_lmda_05_1/setup.py +24 -0
- brainscore_vision/models/eBarlow_lmda_05_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_Vanilla_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_Vanilla_1/model.py +64 -0
- brainscore_vision/models/eMMCR_Mom_Vanilla_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_Vanilla_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_Vanilla_2/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_Vanilla_2/model.py +64 -0
- brainscore_vision/models/eMMCR_Mom_Vanilla_2/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_Vanilla_2/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_lmda_0001_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_lmda_0001_1/model.py +65 -0
- brainscore_vision/models/eMMCR_Mom_lmda_0001_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_lmda_0001_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_lmda_001_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_lmda_001_1/model.py +65 -0
- brainscore_vision/models/eMMCR_Mom_lmda_001_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_lmda_001_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_lmda_01_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_lmda_01_1/model.py +65 -0
- brainscore_vision/models/eMMCR_Mom_lmda_01_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_lmda_01_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_lmda_01_2/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_lmda_01_2/model.py +65 -0
- brainscore_vision/models/eMMCR_Mom_lmda_01_2/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_lmda_01_2/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_lmda_02_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_lmda_02_1/model.py +65 -0
- brainscore_vision/models/eMMCR_Mom_lmda_02_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_lmda_02_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_lmda_03_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_lmda_03_1/model.py +65 -0
- brainscore_vision/models/eMMCR_Mom_lmda_03_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_lmda_03_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_lmda_04_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_lmda_04_1/model.py +65 -0
- brainscore_vision/models/eMMCR_Mom_lmda_04_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_lmda_04_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Mom_lmda_05_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Mom_lmda_05_1/model.py +65 -0
- brainscore_vision/models/eMMCR_Mom_lmda_05_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Mom_lmda_05_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Vanilla/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Vanilla/model.py +50 -0
- brainscore_vision/models/eMMCR_Vanilla/setup.py +24 -0
- brainscore_vision/models/eMMCR_Vanilla/test.py +1 -0
- brainscore_vision/models/eMMCR_VanillaV2/__init__.py +9 -0
- brainscore_vision/models/eMMCR_VanillaV2/model.py +50 -0
- brainscore_vision/models/eMMCR_VanillaV2/setup.py +24 -0
- brainscore_vision/models/eMMCR_VanillaV2/test.py +1 -0
- brainscore_vision/models/eMMCR_Vanilla_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Vanilla_1/model.py +64 -0
- brainscore_vision/models/eMMCR_Vanilla_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_Vanilla_1/test.py +1 -0
- brainscore_vision/models/eMMCR_Vanilla_2/__init__.py +9 -0
- brainscore_vision/models/eMMCR_Vanilla_2/model.py +64 -0
- brainscore_vision/models/eMMCR_Vanilla_2/setup.py +24 -0
- brainscore_vision/models/eMMCR_Vanilla_2/test.py +1 -0
- brainscore_vision/models/eMMCR_lmda_01/__init__.py +9 -0
- brainscore_vision/models/eMMCR_lmda_01/model.py +50 -0
- brainscore_vision/models/eMMCR_lmda_01/setup.py +24 -0
- brainscore_vision/models/eMMCR_lmda_01/test.py +1 -0
- brainscore_vision/models/eMMCR_lmda_01V2/__init__.py +9 -0
- brainscore_vision/models/eMMCR_lmda_01V2/model.py +50 -0
- brainscore_vision/models/eMMCR_lmda_01V2/requirements.txt +2 -0
- brainscore_vision/models/eMMCR_lmda_01V2/setup.py +24 -0
- brainscore_vision/models/eMMCR_lmda_01V2/test.py +1 -0
- brainscore_vision/models/eMMCR_lmda_01_1/__init__.py +9 -0
- brainscore_vision/models/eMMCR_lmda_01_1/model.py +65 -0
- brainscore_vision/models/eMMCR_lmda_01_1/setup.py +24 -0
- brainscore_vision/models/eMMCR_lmda_01_1/test.py +1 -0
- brainscore_vision/models/eMMCR_lmda_01_2/__init__.py +9 -0
- brainscore_vision/models/eMMCR_lmda_01_2/model.py +65 -0
- brainscore_vision/models/eMMCR_lmda_01_2/setup.py +24 -0
- brainscore_vision/models/eMMCR_lmda_01_2/test.py +1 -0
- brainscore_vision/models/eMMCR_lmda_01_3/__init__.py +9 -0
- brainscore_vision/models/eMMCR_lmda_01_3/model.py +65 -0
- brainscore_vision/models/eMMCR_lmda_01_3/setup.py +24 -0
- brainscore_vision/models/eMMCR_lmda_01_3/test.py +1 -0
- brainscore_vision/models/eSimCLR_Vanilla_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_Vanilla_1/model.py +64 -0
- brainscore_vision/models/eSimCLR_Vanilla_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_Vanilla_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_Vanilla_2/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_Vanilla_2/model.py +64 -0
- brainscore_vision/models/eSimCLR_Vanilla_2/setup.py +24 -0
- brainscore_vision/models/eSimCLR_Vanilla_2/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_0001_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_0001_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_0001_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_0001_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_001_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_001_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_001_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_001_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_01_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_01_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_01_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_01_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_01_2/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_01_2/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_01_2/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_01_2/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_02_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_02_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_02_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_02_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_02_1_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_02_1_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_02_1_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_02_1_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_03_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_03_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_03_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_03_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_04_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_04_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_04_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_04_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_04_1_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_04_1_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_04_1_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_04_1_1/test.py +1 -0
- brainscore_vision/models/eSimCLR_lmda_05_1/__init__.py +9 -0
- brainscore_vision/models/eSimCLR_lmda_05_1/model.py +65 -0
- brainscore_vision/models/eSimCLR_lmda_05_1/setup.py +24 -0
- brainscore_vision/models/eSimCLR_lmda_05_1/test.py +1 -0
- brainscore_vision/models/effnetb1_272x240/__init__.py +5 -0
- brainscore_vision/models/effnetb1_272x240/model.py +126 -0
- brainscore_vision/models/effnetb1_272x240/requirements.txt +3 -0
- brainscore_vision/models/effnetb1_272x240/test.py +9 -0
- brainscore_vision/models/effnetb1_cutmix_augmix_sam_e1_5avg_424x377/__init__.py +9 -0
- brainscore_vision/models/effnetb1_cutmix_augmix_sam_e1_5avg_424x377/model.py +111 -0
- brainscore_vision/models/effnetb1_cutmix_augmix_sam_e1_5avg_424x377/requirements.txt +6 -0
- brainscore_vision/models/effnetb1_cutmix_augmix_sam_e1_5avg_424x377/test.py +8 -0
- brainscore_vision/models/effnetb1_cutmixpatch_SAM_robust32_avge6e8e9e10_manylayers_324x288/__init__.py +5 -0
- brainscore_vision/models/effnetb1_cutmixpatch_SAM_robust32_avge6e8e9e10_manylayers_324x288/model.py +142 -0
- brainscore_vision/models/effnetb1_cutmixpatch_SAM_robust32_avge6e8e9e10_manylayers_324x288/requirements.txt +5 -0
- brainscore_vision/models/effnetb1_cutmixpatch_SAM_robust32_avge6e8e9e10_manylayers_324x288/test.py +8 -0
- brainscore_vision/models/effnetb1_cutmixpatch_augmix_robust32_avge4e7_manylayers_324x288/__init__.py +9 -0
- brainscore_vision/models/effnetb1_cutmixpatch_augmix_robust32_avge4e7_manylayers_324x288/model.py +140 -0
- brainscore_vision/models/effnetb1_cutmixpatch_augmix_robust32_avge4e7_manylayers_324x288/requirements.txt +5 -0
- brainscore_vision/models/effnetb1_cutmixpatch_augmix_robust32_avge4e7_manylayers_324x288/test.py +8 -0
- brainscore_vision/models/focalnet_tiny_in1k_submission/__init__.py +5 -0
- brainscore_vision/models/focalnet_tiny_in1k_submission/model.py +62 -0
- brainscore_vision/models/focalnet_tiny_in1k_submission/requirements.txt +3 -0
- brainscore_vision/models/focalnet_tiny_in1k_submission/test.py +8 -0
- brainscore_vision/models/hmax/__init__.py +7 -0
- brainscore_vision/models/hmax/helpers/hmax.py +438 -0
- brainscore_vision/models/hmax/helpers/pytorch.py +216 -0
- brainscore_vision/models/hmax/model.py +69 -0
- brainscore_vision/models/hmax/requirements.txt +5 -0
- brainscore_vision/models/hmax/test.py +8 -0
- brainscore_vision/models/inception_v3_pytorch/__init__.py +7 -0
- brainscore_vision/models/inception_v3_pytorch/model.py +68 -0
- brainscore_vision/models/inception_v3_pytorch/requirements.txt +3 -0
- brainscore_vision/models/inception_v3_pytorch/test.py +8 -0
- brainscore_vision/models/mobilenet_v2_1_4_224_pytorch/__init__.py +7 -0
- brainscore_vision/models/mobilenet_v2_1_4_224_pytorch/model.py +60 -0
- brainscore_vision/models/mobilenet_v2_1_4_224_pytorch/requirements.txt +3 -0
- brainscore_vision/models/mobilenet_v2_1_4_224_pytorch/test.py +8 -0
- brainscore_vision/models/mobilevit_small/__init__.py +7 -0
- brainscore_vision/models/mobilevit_small/model.py +49 -0
- brainscore_vision/models/mobilevit_small/requirements.txt +3 -0
- brainscore_vision/models/mobilevit_small/test.py +8 -0
- brainscore_vision/models/pixels/__init__.py +8 -0
- brainscore_vision/models/pixels/model.py +35 -0
- brainscore_vision/models/pixels/test.py +15 -0
- brainscore_vision/models/pnasnet_large_pytorch/__init__.py +7 -0
- brainscore_vision/models/pnasnet_large_pytorch/model.py +59 -0
- brainscore_vision/models/pnasnet_large_pytorch/requirements.txt +3 -0
- brainscore_vision/models/pnasnet_large_pytorch/test.py +8 -0
- brainscore_vision/models/r101_eBarlow_Vanilla_1/__init__.py +9 -0
- brainscore_vision/models/r101_eBarlow_Vanilla_1/model.py +64 -0
- brainscore_vision/models/r101_eBarlow_Vanilla_1/setup.py +25 -0
- brainscore_vision/models/r101_eBarlow_Vanilla_1/test.py +1 -0
- brainscore_vision/models/r101_eBarlow_lmda_01_1/__init__.py +9 -0
- brainscore_vision/models/r101_eBarlow_lmda_01_1/model.py +65 -0
- brainscore_vision/models/r101_eBarlow_lmda_01_1/setup.py +25 -0
- brainscore_vision/models/r101_eBarlow_lmda_01_1/test.py +1 -0
- brainscore_vision/models/r101_eBarlow_lmda_02_1/__init__.py +9 -0
- brainscore_vision/models/r101_eBarlow_lmda_02_1/model.py +65 -0
- brainscore_vision/models/r101_eBarlow_lmda_02_1/setup.py +25 -0
- brainscore_vision/models/r101_eBarlow_lmda_02_1/test.py +1 -0
- brainscore_vision/models/r101_eBarlow_lmda_02_1_copy/__init__.py +9 -0
- brainscore_vision/models/r101_eBarlow_lmda_02_1_copy/model.py +67 -0
- brainscore_vision/models/r101_eBarlow_lmda_02_1_copy/setup.py +25 -0
- brainscore_vision/models/r101_eBarlow_lmda_02_1_copy/test.py +1 -0
- brainscore_vision/models/r34_eMMCR_Mom_Vanilla_1/__init__.py +9 -0
- brainscore_vision/models/r34_eMMCR_Mom_Vanilla_1/model.py +66 -0
- brainscore_vision/models/r34_eMMCR_Mom_Vanilla_1/setup.py +25 -0
- brainscore_vision/models/r34_eMMCR_Mom_Vanilla_1/test.py +1 -0
- brainscore_vision/models/r34_eMMCR_Mom_lmda_01_1/__init__.py +9 -0
- brainscore_vision/models/r34_eMMCR_Mom_lmda_01_1/model.py +66 -0
- brainscore_vision/models/r34_eMMCR_Mom_lmda_01_1/setup.py +25 -0
- brainscore_vision/models/r34_eMMCR_Mom_lmda_01_1/test.py +1 -0
- brainscore_vision/models/r34_eMMCR_Mom_lmda_02_1/__init__.py +9 -0
- brainscore_vision/models/r34_eMMCR_Mom_lmda_02_1/model.py +66 -0
- brainscore_vision/models/r34_eMMCR_Mom_lmda_02_1/setup.py +25 -0
- brainscore_vision/models/r34_eMMCR_Mom_lmda_02_1/test.py +1 -0
- brainscore_vision/models/r50_tvpt/__init__.py +9 -0
- brainscore_vision/models/r50_tvpt/model.py +47 -0
- brainscore_vision/models/r50_tvpt/setup.py +24 -0
- brainscore_vision/models/r50_tvpt/test.py +1 -0
- brainscore_vision/models/regnet/__init__.py +14 -0
- brainscore_vision/models/regnet/model.py +17 -0
- brainscore_vision/models/regnet/requirements.txt +2 -0
- brainscore_vision/models/regnet/test.py +17 -0
- brainscore_vision/models/resnet18_imagenet21kP/__init__.py +6 -0
- brainscore_vision/models/resnet18_imagenet21kP/model.py +119 -0
- brainscore_vision/models/resnet18_imagenet21kP/setup.py +18 -0
- brainscore_vision/models/resnet18_imagenet21kP/test.py +0 -0
- brainscore_vision/models/resnet50_eMMCR_Vanilla/__init__.py +5 -0
- brainscore_vision/models/resnet50_eMMCR_Vanilla/model.py +59 -0
- brainscore_vision/models/resnet50_eMMCR_Vanilla/setup.py +24 -0
- brainscore_vision/models/resnet50_eMMCR_Vanilla/test.py +1 -0
- brainscore_vision/models/resnet50_eMMCR_VanillaV2/__init__.py +9 -0
- brainscore_vision/models/resnet50_eMMCR_VanillaV2/model.py +72 -0
- brainscore_vision/models/resnet50_eMMCR_VanillaV2/setup.py +24 -0
- brainscore_vision/models/resnet50_eMMCR_VanillaV2/test.py +1 -0
- brainscore_vision/models/resnet50_eMMCR_eqp10_lm1/__init__.py +9 -0
- brainscore_vision/models/resnet50_eMMCR_eqp10_lm1/model.py +72 -0
- brainscore_vision/models/resnet50_eMMCR_eqp10_lm1/setup.py +24 -0
- brainscore_vision/models/resnet50_eMMCR_eqp10_lm1/test.py +1 -0
- brainscore_vision/models/resnet50_julios/__init__.py +5 -0
- brainscore_vision/models/resnet50_julios/model.py +54 -0
- brainscore_vision/models/resnet50_julios/setup.py +24 -0
- brainscore_vision/models/resnet50_julios/test.py +1 -0
- brainscore_vision/models/resnet50_tutorial/__init__.py +5 -0
- brainscore_vision/models/resnet50_tutorial/model.py +34 -0
- brainscore_vision/models/resnet50_tutorial/requirements.txt +2 -0
- brainscore_vision/models/resnet50_tutorial/test.py +8 -0
- brainscore_vision/models/resnet_152_v2_pytorch/__init__.py +7 -0
- brainscore_vision/models/resnet_152_v2_pytorch/model.py +59 -0
- brainscore_vision/models/resnet_152_v2_pytorch/requirements.txt +2 -0
- brainscore_vision/models/resnet_152_v2_pytorch/test.py +8 -0
- brainscore_vision/models/resnet_50_robust/__init__.py +7 -0
- brainscore_vision/models/resnet_50_robust/model.py +55 -0
- brainscore_vision/models/resnet_50_robust/requirements.txt +3 -0
- brainscore_vision/models/resnet_50_robust/test.py +8 -0
- brainscore_vision/models/resnext101_32x16d_wsl/__init__.py +7 -0
- brainscore_vision/models/resnext101_32x16d_wsl/model.py +38 -0
- brainscore_vision/models/resnext101_32x16d_wsl/requirements.txt +2 -0
- brainscore_vision/models/resnext101_32x16d_wsl/test.py +8 -0
- brainscore_vision/models/resnext101_32x32d_wsl/__init__.py +7 -0
- brainscore_vision/models/resnext101_32x32d_wsl/model.py +40 -0
- brainscore_vision/models/resnext101_32x32d_wsl/requirements.txt +2 -0
- brainscore_vision/models/resnext101_32x32d_wsl/test.py +8 -0
- brainscore_vision/models/resnext101_32x48d_wsl/__init__.py +7 -0
- brainscore_vision/models/resnext101_32x48d_wsl/model.py +38 -0
- brainscore_vision/models/resnext101_32x48d_wsl/requirements.txt +3 -0
- brainscore_vision/models/resnext101_32x48d_wsl/test.py +8 -0
- brainscore_vision/models/resnext101_32x8d_wsl/__init__.py +7 -0
- brainscore_vision/models/resnext101_32x8d_wsl/model.py +44 -0
- brainscore_vision/models/resnext101_32x8d_wsl/requirements.txt +2 -0
- brainscore_vision/models/resnext101_32x8d_wsl/test.py +8 -0
- brainscore_vision/models/temporal_model_AVID_CMA/__init__.py +17 -0
- brainscore_vision/models/temporal_model_AVID_CMA/model.py +92 -0
- brainscore_vision/models/temporal_model_AVID_CMA/requirements.txt +3 -0
- brainscore_vision/models/temporal_model_AVID_CMA/test.py +18 -0
- brainscore_vision/models/temporal_model_GDT/__init__.py +16 -0
- brainscore_vision/models/temporal_model_GDT/model.py +72 -0
- brainscore_vision/models/temporal_model_GDT/requirements.txt +3 -0
- brainscore_vision/models/temporal_model_GDT/test.py +17 -0
- brainscore_vision/models/temporal_model_S3D_text_video/__init__.py +14 -0
- brainscore_vision/models/temporal_model_S3D_text_video/model.py +65 -0
- brainscore_vision/models/temporal_model_S3D_text_video/requirements.txt +1 -0
- brainscore_vision/models/temporal_model_S3D_text_video/test.py +15 -0
- brainscore_vision/models/temporal_model_SeLaVi/__init__.py +17 -0
- brainscore_vision/models/temporal_model_SeLaVi/model.py +68 -0
- brainscore_vision/models/temporal_model_SeLaVi/requirements.txt +3 -0
- brainscore_vision/models/temporal_model_SeLaVi/test.py +18 -0
- brainscore_vision/models/temporal_model_VideoMAE/__init__.py +15 -0
- brainscore_vision/models/temporal_model_VideoMAE/model.py +100 -0
- brainscore_vision/models/temporal_model_VideoMAE/requirements.txt +6 -0
- brainscore_vision/models/temporal_model_VideoMAE/test.py +16 -0
- brainscore_vision/models/temporal_model_VideoMAEv2/__init__.py +14 -0
- brainscore_vision/models/temporal_model_VideoMAEv2/model.py +109 -0
- brainscore_vision/models/temporal_model_VideoMAEv2/requirements.txt +4 -0
- brainscore_vision/models/temporal_model_VideoMAEv2/test.py +16 -0
- brainscore_vision/models/temporal_model_mae_st/__init__.py +15 -0
- brainscore_vision/models/temporal_model_mae_st/model.py +120 -0
- brainscore_vision/models/temporal_model_mae_st/requirements.txt +3 -0
- brainscore_vision/models/temporal_model_mae_st/test.py +16 -0
- brainscore_vision/models/temporal_model_mmaction2/__init__.py +23 -0
- brainscore_vision/models/temporal_model_mmaction2/mmaction2.csv +24 -0
- brainscore_vision/models/temporal_model_mmaction2/model.py +226 -0
- brainscore_vision/models/temporal_model_mmaction2/requirements.txt +5 -0
- brainscore_vision/models/temporal_model_mmaction2/test.py +24 -0
- brainscore_vision/models/temporal_model_openstl/__init__.py +18 -0
- brainscore_vision/models/temporal_model_openstl/model.py +206 -0
- brainscore_vision/models/temporal_model_openstl/requirements.txt +3 -0
- brainscore_vision/models/temporal_model_openstl/test.py +19 -0
- brainscore_vision/models/temporal_model_torchvision/__init__.py +19 -0
- brainscore_vision/models/temporal_model_torchvision/model.py +92 -0
- brainscore_vision/models/temporal_model_torchvision/requirements.txt +2 -0
- brainscore_vision/models/temporal_model_torchvision/test.py +20 -0
- brainscore_vision/models/tv_efficientnet_b1/__init__.py +5 -0
- brainscore_vision/models/tv_efficientnet_b1/model.py +54 -0
- brainscore_vision/models/tv_efficientnet_b1/setup.py +24 -0
- brainscore_vision/models/tv_efficientnet_b1/test.py +1 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/__init__.py +7 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/model.py +104 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/requirements.txt +8 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/test.py +8 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/LICENSE +674 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/README.md +105 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/run.py +136 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/setup.py +41 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/train.py +383 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/__init__.py +71 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/back_ends.py +337 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/modules.py +126 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/params.py +100 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/utils.py +32 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet/vonenet.py +68 -0
- brainscore_vision/models/voneresnet_50_non_stochastic/vonenet/vonenet_tutorial-activations.ipynb +352 -0
- brainscore_vision/models/yudixie_resnet18_240719_0/__init__.py +11 -0
- brainscore_vision/models/yudixie_resnet18_240719_0/model.py +60 -0
- brainscore_vision/models/yudixie_resnet18_240719_0/setup.py +25 -0
- brainscore_vision/models/yudixie_resnet18_240719_0/test.py +1 -0
- brainscore_vision/models/yudixie_resnet18_240719_1/__init__.py +11 -0
- brainscore_vision/models/yudixie_resnet18_240719_1/model.py +60 -0
- brainscore_vision/models/yudixie_resnet18_240719_1/setup.py +25 -0
- brainscore_vision/models/yudixie_resnet18_240719_1/test.py +1 -0
- brainscore_vision/models/yudixie_resnet18_240719_10/__init__.py +11 -0
- brainscore_vision/models/yudixie_resnet18_240719_10/model.py +60 -0
- brainscore_vision/models/yudixie_resnet18_240719_10/setup.py +25 -0
- brainscore_vision/models/yudixie_resnet18_240719_10/test.py +1 -0
- brainscore_vision/models/yudixie_resnet18_240719_2/__init__.py +11 -0
- brainscore_vision/models/yudixie_resnet18_240719_2/model.py +60 -0
- brainscore_vision/models/yudixie_resnet18_240719_2/setup.py +25 -0
- brainscore_vision/models/yudixie_resnet18_240719_2/test.py +1 -0
- brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240222/__init__.py +7 -0
- brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240222/model.py +66 -0
- brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240222/setup.py +24 -0
- brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240222/test.py +1 -0
- brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240312/__init__.py +7 -0
- brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240312/model.py +68 -0
- brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240312/setup.py +24 -0
- brainscore_vision/models/yudixie_resnet50_imagenet1kpret_0_240312/test.py +1 -0
- brainscore_vision/submission/__init__.py +0 -0
- brainscore_vision/submission/actions_helpers.py +153 -0
- brainscore_vision/submission/config.py +7 -0
- brainscore_vision/submission/endpoints.py +58 -0
- brainscore_vision/utils/__init__.py +91 -0
- brainscore_vision-2.1.dist-info/LICENSE +11 -0
- brainscore_vision-2.1.dist-info/METADATA +152 -0
- brainscore_vision-2.1.dist-info/RECORD +1009 -0
- brainscore_vision-2.1.dist-info/WHEEL +5 -0
- brainscore_vision-2.1.dist-info/top_level.txt +4 -0
- docs/Makefile +20 -0
- docs/source/conf.py +78 -0
- docs/source/index.rst +21 -0
- docs/source/modules/api_reference.rst +10 -0
- docs/source/modules/benchmarks.rst +8 -0
- docs/source/modules/brainscore_submission.png +0 -0
- docs/source/modules/developer_clarifications.rst +36 -0
- docs/source/modules/metrics.rst +8 -0
- docs/source/modules/model_interface.rst +8 -0
- docs/source/modules/submission.rst +112 -0
- docs/source/modules/tutorial_screenshots/brain-score_logo.png +0 -0
- docs/source/modules/tutorial_screenshots/final_submit.png +0 -0
- docs/source/modules/tutorial_screenshots/init_py.png +0 -0
- docs/source/modules/tutorial_screenshots/mms.png +0 -0
- docs/source/modules/tutorial_screenshots/setup.png +0 -0
- docs/source/modules/tutorial_screenshots/sms.png +0 -0
- docs/source/modules/tutorial_screenshots/subfolders.png +0 -0
- docs/source/modules/utils.rst +22 -0
- migrations/2020-12-20_pkl_to_nc.py +90 -0
- tests/__init__.py +6 -0
- tests/conftest.py +26 -0
- tests/test_benchmark_helpers/__init__.py +0 -0
- tests/test_benchmark_helpers/test_screen.py +75 -0
- tests/test_examples.py +41 -0
- tests/test_integration.py +43 -0
- tests/test_metric_helpers/__init__.py +0 -0
- tests/test_metric_helpers/test_temporal.py +80 -0
- tests/test_metric_helpers/test_transformations.py +171 -0
- tests/test_metric_helpers/test_xarray_utils.py +85 -0
- tests/test_model_helpers/__init__.py +6 -0
- tests/test_model_helpers/activations/__init__.py +0 -0
- tests/test_model_helpers/activations/test___init__.py +404 -0
- tests/test_model_helpers/brain_transformation/__init__.py +0 -0
- tests/test_model_helpers/brain_transformation/test___init__.py +18 -0
- tests/test_model_helpers/brain_transformation/test_behavior.py +181 -0
- tests/test_model_helpers/brain_transformation/test_neural.py +70 -0
- tests/test_model_helpers/brain_transformation/test_temporal.py +66 -0
- tests/test_model_helpers/temporal/__init__.py +0 -0
- tests/test_model_helpers/temporal/activations/__init__.py +0 -0
- tests/test_model_helpers/temporal/activations/test_extractor.py +96 -0
- tests/test_model_helpers/temporal/activations/test_inferencer.py +189 -0
- tests/test_model_helpers/temporal/activations/test_inputs.py +103 -0
- tests/test_model_helpers/temporal/brain_transformation/__init__.py +0 -0
- tests/test_model_helpers/temporal/brain_transformation/test_temporal_ops.py +122 -0
- tests/test_model_helpers/temporal/test_utils.py +61 -0
- tests/test_model_helpers/test_generic_plugin_tests.py +310 -0
- tests/test_model_helpers/test_imports.py +10 -0
- tests/test_model_helpers/test_s3.py +38 -0
- tests/test_models.py +15 -0
- tests/test_stimuli.py +0 -0
- tests/test_submission/__init__.py +0 -0
- tests/test_submission/mock_config.py +3 -0
- tests/test_submission/test_actions_helpers.py +67 -0
- tests/test_submission/test_db.py +54 -0
- tests/test_submission/test_endpoints.py +125 -0
- 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
|
+
}
|