This tool can be used to estimate the speed of the vehicle at impact with a steel road safety barrier. The estimation is made by a few different machine learning model, which were trained on both full-scale crash tests and numerical simulations. The app consists of the following pages:
- Home - main page with prediction of the impact speed for a given set of input features
- Data - description of the input features and the datasets used in development of machine learning models
- Models - presentation of the developed machine learning models
- Tree Ensemble - model based on regression trees
- Multilayer Perceptron - model based on a neural network
- Regularized Linear Ensemble - model based on linear regressors
- Support Vector Ensemble - model based on support vector machines
- Final Voting Ensemble - ensemble of machine learning models
- About the project - summary of the research project
The latest version of the app is always deployed here.
For local use, production-ready docker images for amd64 and arm64 platforms are available in the DockerHub repository. To run it, first make sure that Docker is installed on your system. Then, pull the Docker image
docker pull adsci/speedest:latestand run the container, with the necessary port mapping
docker run -p 80:8501 adsci/speedest:latestAfter the container has started, the app can accessed at localhost.
To build and run the image locally, use
docker build -t speedest:latest -f Dockerfile .
docker run -p 80:8501 speedest:latestIt is recommended to prepare a virtual environment for the project,
making sure that Python version in the base environment is the same
as the one specified in the Dockerfile (3.11 at the moment)
python -m venv .venvAfter you're done run the following command:
make install-requirements-dev
to install the dependencies.
On some platforms (e.g., macOS), installation of the dependencies fails as
no matching distribution may be found for the
torch library (due to the lack of +cpu in library name on that platform), e.g,
ERROR: No matching distribution found for torch==2.3.0+cpu
If that's the case, recompile the requirements and install the dependencies once again:
make requirements
make install-requirements-devIf some package should be added as a requirement to this project, add it to the
requirements/base.in (or requirements/dev.in if the package is needed only for development, not in production).
For test-specific packages (e.g., pytest) use requirements/test.in.
This way, the packages are only installed in the testing environment used by tox.
After that, compile the requirements with:
make requirementsDo not forget to commit the new .txt files.
clean will remove all files and directories created by the above commands.
make cleanBefore pushing a new commit to a branch, it's recommended to check locally whether all checks run by the CI pipeline pass. To do that, make sure that the local environment is prepared (see here for details).
For this project, GitHub's CI pipline uses pre-commit hooks together with other checks
(pyupgrade, flake8, isort, and black) to ensure good formatting of files.
Before committing, make sure all checks pass by running
make lintFor this project, GitHub's CI pipline uses tox, which allows for running
simultaneous tests on multiple environments. Locally, it's possible to run the
tests in a simple way by using only tox (like in the CI pipeline)
make test