This folder contains all measurements in AutoEQ and tools to crawl them from the supported databases.
Additional Python packages are required for processing the measurements:
python -m pip install -U -r measurements/dev-requirements.txt
Measurement crawlers require Google Chrome installed and ChromeDriver binary in the measurements folder (or anywhere in the PATH).
Measurement crawlers also require C++. This should be installed by default on Linux but on Windows you need to install Microsoft Visual Studio build tools for this. https://visualstudio.microsoft.com/downloads/ -> "Tools for Visual Studio 2019" -> "Build Tools for Visual Studio 2019".
oratory1990 crawler requires Ghostscript installed: https://www.ghostscript.com/download/gsdnld.html
Numerical data for Crinacle's measurements is not available in this repository. Crinacle has Patreon and a certain
subscription tier unlocks the raw numerical measurement data. If you are a patreon and have access to the Google Drive
containing the measurement files, you can download the data to crinacle/raw_data
folder. Download the IEM
"IEM Measurements (TSV)", legacy headphone measurements "Legacy Data (Ears + 711)" and the new GRAS headphone
measurements "FR Data (CSV)" separately. The directory structure should be:
measurements
crinacle
raw_data
FR Data (CSV)
99 Classic L1.txt
99 Classic L2.txt
...
IEM Measurements (TSV)
1 Plus 2.2 L.txt
1 Plus 2.2 R.txt
...
Legacy Data (EARS + 711)
A990Z R1.txt
A990Z R2.txt
...
Sometimes the Zip files don't contain all of the measurement files. This is a bug in Google Drive.
Crawler Jupyter Notebook requires IPyWidgets and the extension
jupyter nbextension enable --py widgetsnbextension --sys-prefix
Finally install IPython kernel
python -m ipykernel install --user --name="autoeq"
Crawlers are intended to be ran in a Jupyter Notebook (or Lab). The notebook has graphical user interface for prompting the headphone names and forms from the user. Run
jupyter lab measurements/crawl.ipynb
Make sure to select the IPython kernel you just installed. Run (Shift+Enter) the first two code blocks to import dependencies and then run the crawler blocks which you need.
Alternatively you can run the individual crawlers but this will only process the measurements which have already been added to the respective name index. This would be most useful for processing the raw measurement data after you've become Crinacle's patreon.
python -m measurements.crinacle.crinacle_crawler
python -m measurements.oratory1990.oratory1990_crawler
python -m measurements.rtings.rtings_crawler
If you just downloaded the Crinacle's raw data and run the crawler like this, you need to create averaged measurements too.
python -m measurements.average --input_dir="measurements/crinacle/data/over-ear/GRAS 43AG-7"
python -m measurements.average --input_dir="measurements/crinacle/data/over-ear/EARS + 711"
python -m measurements.average --input_dir="measurements/crinacle/data/in-ear/711"
python -m measurements.average --input_dir="measurements/crinacle/data/in-ear/Bruel & Kjaer 4620"
- Remove measurements that have updates
- Check obsolete results:
python results/prune_results.py --crinacle --oratory1990 --rtings --dry-run
- Prune results:
python results/prune_results.py --crinacle --oratory1990 --rtings
- Crawl new measurements:
jupyter lab measurements/crawl.ipynb
- Run results update:
python results/update_results.py --oratory1990 --crinacle --rtings --new_only
- Update result indexes:
python results/update_indexes.py
- Update web app data set:
python webapp/create_data.py
- Add files to git:
git add results measurements/*/data/**/*.csv measurements/*/name_index.tsv
- Commit:
git commit -m "New measurements with pre-computed results."
- Push:
git push