Sonic is a framework that creates a standard DS/ML project structure having many popular automation features. Anyone who wants to work on DS/ML project can use Sonic. You can use Sonic in your projects, interview assignments, course homeworks etc.
Note: Sonic's earlier name was ml-project-template(As shown in video)
-
Saves Time: Starting a project is always time consuming, thinking about structuring your code, adding basic integrations. All of these steps take time, Sonic saves your precious time by automating these simple steps.
-
Better chances in getting job: Good companies(FAANG) or academic institutions check the project strucure, code practices along with the functionality of the code in the programming assignments. Sonic takes care of these small things for you so that you can foucs on the functionality of the code. Sonic's integrations in your project, makes your project unique from all other submissions. So, eventually better chances in getting job.
The directory structure of your new project looks like this:
├── LICENSE
├── Makefile <- Makefile with commands like `make data` or `make train`
├── README.md <- The top-level README for developers using this project.
├── datasets
│ ├── external <- Data from third party sources.
│ ├── interim <- Intermediate data that has been transformed.
│ ├── final <- The final, canonical data sets for modeling.
│ └── raw <- The original, immutable data dump.
│
├── notebooks <- Jupyter notebooks. Naming convention is a number (for ordering),
│ the creator's initials, and a short `-` delimited description, e.g.
│ `1.0-jqp-initial-data-exploration`.
├── references <- Data dictionaries, manuals, and all other explanatory materials.
│
├── docs <- Code documentation and generated analysis as HTML, PDF, LaTeX, etc.
│ └── images <- Generated graphics and figures to be used in reporting
| └── reports <- Generated analysis as HTML, PDF, LaTeX, etc.
│
├── requirements.txt <- The requirements file for reproducing the analysis environment, e.g.
│ generated with `pip freeze > requirements.txt`
│
├── src <- Source code for use in this project.
|__ output <- Temporary Output files
- Commit Message checking via commitlint
- Linter support for R lang
- R Lang Code formatter using Styler
- R lang general checks using pre-commit hooks
- Local Testing via pre-commit
- Github Integration
- CI testing via Github actions and pre-commit.ci
- Github CODEOWNERS to automatically add owners to Github PR
- Github pull request remplates for standardizing description
- Multiple programming language support in the directory structure
- R Lang test cases (testthat) support using Makefile and Github actions
- Python 2.7 or 3.5+
- Cookiecutter: It helps in creating a project structure. This can be installed with pip by or conda depending on how you manage your Python packages:
pip install cookiecutter
or
conda config --add channels conda-forge
conda install cookiecutter
or
brew install cookiecutter
pip install -r requirements.txt
-
pre-commit : Precommit runs your hooks(tests) for identifying issues before submission to code review and even before commit.
pip install pre-commit
-
commitlint : It’s a simple tool that lints your commit messages and makes sure that they follow a set of rules.
npm install -g @commitlint/cli @commitlint/config-conventional
for this Nodejs is required. Download and install from here Nodejs
cookiecutter gh:pal0064/sonic
If this doesn't work try using SSH with the full path:
cookiecutter git+ssh://git@github.com/pal0064/sonic
- Automated Documentation
- Platform independence
- Multiple language support
- Test coverage Report
- Lesser Todos for the user
-
drivendata/cookiecutter-data-science
Sonic's extra features:
- Github integration
- PR Templates
- Codeowners for automatically adding reviewer
- R Language support
- Local/Remote Testing via pre-commit/pre-commit.ci
- Github Actions suppport
- Commit Message checking via commitlint
- Simplifying commands execution using Makefile
- Github integration
This template is tested with Mac OS. So, all the commands and programs should work smoothly on mac and linux. Windows user might face some issues in the installation. Our future goal is to make this template platform independent.
This project is licensed under the terms of the MIT License