Welcome to DartML: Machine Learning for Everyone! This app lets you build Machine Learning models without writing a single line of code.
- Step 1: Upload your data
- Step 2: Explore the data
- Step 3: Build the model
- Step 4: Evaluate the trained models
- At last, you can download report with all trained models and more detailed information about them (e.g.
SHAP
ordtreeviz
visualizations).
Click above to watch the demo!
pip install -r requirements.txt
You can change new_env_name
to any name you like.
conda create --name new_env_name python=3.9
conda activate new_env_name
pip install -r requirements.txt
streamlit run 0_🏠_Home.py
.
├── 0_🏠_Home.py # Home page streamlit view.
├── pages # Streamlit views for other pages of the app.
│ ├── 1_🧪_Sample.py # Sample page streamlit view.
│ ├── 2_🔍_Explore.py # Explore page streamlit view.
│ ├── 4_🛠️_Modify_&_Model.py # Modify & Model page streamlit view.
│ └── 5_📊_Assess.py # Assess page streamlit view.
├── src # Source code of the app.
│ ├── config.py # Configurations for the app.
│ ├── sample # Code used specifically in the Sample page.
│ ├── explore # Code used specifically in the Explore page.
│ ├── modify_and_model # Code used specifically in the Modify & Model page.
│ ├── assess # Code used specifically in the Assess page.
│ ├── general_views # Smaller streamlit views used in multiple pages.
│ └── session_state # Functions related to handling app's session state.
├── tests # Tests for the app.
│ ├── functional_tests # Functional tests.
│ └── load_tests # Load tests.
│ └── unit_tests # Unit tests.
├── temp_dirs # Temporary directories used to store training results.
│ └── .gitkeep # Empty file to make sure the directory is tracked by git.
├── docs # Documentation for the app.
├── example_data # Example data used in the app.
├── README.md # project description you are reading right now
├── .pre-commit-config.yaml # pre-commit configuration
├── .flake8 # flake8 configuration (run by pre-commit)
├── .isort.cfg # isort configuration (run by pre-commit)
├── requirements.txt # dependencies for pip
└── .streamlit # configurations for streamlit (theme)
└── config.toml # configurations for streamlit (theme)
- These tests check how app behaves under heavy load.
- Used package: locust.
Perform simple load test by just visiting pages without interacting with any buttons or uploading any files.
locust -f tests/load_tests/simple_load_tests.py
Remember to put Host information without backlash at the end, for example:
http://localhost:8501
<- this is correcthttp://localhost:8501/
<- this is incorrect
You can start the locust and simultaneously use the app yourself (or run functional tests), so you can see how the response time changes and ensure that there are no failures.
- These tests check whether app visually looks and behaves as expected.
- Used package: seleniumbase.
First you need to specify the HOST_URL
in tests/functional_tests/config.py
file. By default it's set to http://localhost:8501
.
Run all tests:
pytest tests/functional_tests/functional_tests.py --chrome --headless
Run single test (test_explore_page
in this example):
pytest tests/functional_tests/functional_tests.py --chrome --headless -k test_explore_page
- You can specify the number of concurrent users by adding
-n=<number_of_users>
flag. - You can remove the
--headless
flag if you want to make the testing browser visible. - You can change
--edge
to any browser you like, for example--chrome
or--firefox
. - You can make it slower by adding
--slow
flag. - You can highlight assertions by adding
--demo
flag. - You can add
-k <test_name>
flag to run only specific test.
- These tests check whether individual functions work as expected.
pytest tests/unit_tests
doxygen
pdoc src
pre-commit install
pre-commit run --all-files
Command above runs the following:
black
- general code autoformattingflake8
- code quality checkisort
- imports autoformatting (alphabetical order)interrogate
- check code for missing docstrings