Skip to content

GizzZmo/Omni-Grid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Omni-Grid

CI Python Lint Python Validation Notebook Validation CodeQL License Python Jupyter

A powerful and flexible project template for data analytics and machine learning workflows.

Omni-Grid provides a well-structured, git-integrated environment that accelerates data science projects from exploration to production. Built for Visual Studio Code but compatible with any IDE, it combines industry best practices with modern tooling to streamline your analytics workflow.

🌟 Why Omni-Grid?

  • πŸš€ Quick Start: Get from zero to analysis in minutes with pre-configured templates
  • πŸ“ Organized Structure: Clean, scalable project organization that grows with your needs
  • πŸ”„ Modular Design: Easy-to-use module generator for creating isolated analysis environments
  • πŸ€– AI-Ready: Built-in support for AI-powered analysis and insights
  • πŸ”§ Developer Friendly: Integrated with VSCode tasks, git workflows, and best practices
  • πŸ“Š Full Stack: Includes all essential data science libraries pre-configured

✨ Key Features

  • Jupyter Notebook Integration - Rich, interactive data analysis environment
  • Essential Libraries Pre-configured
    • pandas - Data manipulation and analysis
    • matplotlib & seaborn - Visualization
    • numpy - Numerical computing
  • Smart Data Management - Automatic .gitignore for data directories
  • Module Finder System - Seamless code sharing across analysis modules
  • Template Generation - One-command module scaffolding via VSCode tasks
  • Utility Functions - Pre-built helpers for common operations
  • AI Analysis Integration - Framework for incorporating AI insights (see AI_ANALYSIS_GUIDE.md)
  • Clean Git Workflow - Pre-configured .gitignore for Python projects

πŸ“‹ Table of Contents

Prerequisites

Before you begin, ensure you have the following installed:

Quick Start

Installation

  1. Clone the repository

    git clone https://github.com/GizzZmo/Omni-Grid.git
    cd Omni-Grid
  2. Set up your Python environment

    Option A: Using Conda (Recommended)

    conda create -n omni-grid python=3.9
    conda activate omni-grid

    Option B: Using venv

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install required packages

    pip install jupyter pandas numpy matplotlib seaborn
  4. Launch Jupyter Notebook

    jupyter notebook
  5. Try the example

    • Navigate to src/example/
    • Unzip data/archive.zip if you want to use the sample dataset
    • Open and run main.ipynb
  6. Start your analysis! πŸŽ‰

    • Create a new module (see below)
    • Add your data to the module's data/ directory
    • Begin analyzing!

πŸ’‘ Tip: For the best experience, open this project in Visual Studio Code to access integrated tasks and features.

Project Structure

Omni-Grid/
β”œβ”€β”€ .git/                      # Git repository
β”œβ”€β”€ .gitignore                 # Git ignore rules (includes data directories)
β”œβ”€β”€ .templates/                # Module templates
β”‚   └── module/                # Default analysis module template
β”‚       β”œβ”€β”€ __module_finder__.py
β”‚       β”œβ”€β”€ data/              # Template data directory (git-ignored)
β”‚       └── main.ipynb         # Template notebook
β”œβ”€β”€ .vscode/                   # VSCode configuration
β”‚   β”œβ”€β”€ settings.json          # Editor settings
β”‚   └── tasks.json             # Custom tasks (module generation)
β”œβ”€β”€ src/                       # Source code and analysis modules
β”‚   β”œβ”€β”€ example/               # Example analysis module
β”‚   β”‚   β”œβ”€β”€ .gitignore         # Module-specific git rules
β”‚   β”‚   β”œβ”€β”€ __module_finder__.py  # Module path configuration
β”‚   β”‚   β”œβ”€β”€ data/              # Example datasets (git-ignored)
β”‚   β”‚   β”‚   β”œβ”€β”€ Churn_Modelling.csv
β”‚   β”‚   β”‚   └── archive.zip
β”‚   β”‚   β”œβ”€β”€ main.ipynb         # Main analysis notebook
β”‚   β”‚   └── ai_analysis_demo.ipynb  # AI analysis demonstration
β”‚   └── utils/                 # Shared utility functions
β”‚       β”œβ”€β”€ __init__.py
β”‚       └── display.py         # Display helper functions
β”œβ”€β”€ AI_ANALYSIS_GUIDE.md       # Guide for AI-powered analysis
β”œβ”€β”€ LICENSE                    # Apache 2.0 License
└── README.md                  # This file

Directory Explanations

  • .templates/: Contains reusable templates for generating new analysis modules
  • src/: Your workspace for all analysis code
    • Each subdirectory (except utils/) represents an independent analysis module
    • Modules are isolated but can share utilities
  • src/utils/: Shared utilities accessible to all modules via __module_finder__.py
  • data/: Every module has its own data/ directory that's automatically git-ignored

Creating New Analysis Modules

Omni-Grid makes it incredibly easy to create new, isolated analysis environments.

Method 1: Using VSCode Tasks (Recommended)

  1. Open the Command Palette (Cmd+Shift+P on Mac, Ctrl+Shift+P on Windows/Linux)
  2. Type and select: Tasks: Run Task
  3. Select: Template: Generate Analysis Module
  4. Enter your module name (e.g., sales_analysis)
  5. A new module is created at src/your_module_name/

Module Generation Demo

Method 2: Manual Creation

cp -r .templates/module src/your_module_name
cd src/your_module_name
# Add your data to the data/ directory
# Open main.ipynb and start analyzing

What You Get

Each new module includes:

  • πŸ““ main.ipynb: Pre-configured Jupyter notebook with imports and settings
  • πŸ“‚ data/: Directory for your datasets (automatically git-ignored)
  • πŸ” __module_finder__.py: Enables importing from src/utils/

Usage Examples

Basic Data Analysis

import pandas as pd
import __module_finder__  # Import this first to enable utils access
from utils.display import printdf
import matplotlib.pyplot as plt
import numpy as np

# Load your data
data = pd.read_csv('data/your_dataset.csv')

# Display with enhanced formatting
printdf(data.head())

# Create visualizations
plt.figure(figsize=(10, 6))
data['column_name'].hist()
plt.title('Distribution Analysis')
plt.show()

Using Utility Functions

The utils/display.py module provides convenient display functions:

from utils.display import printdf, printsf

# Display DataFrame with nice HTML formatting
printdf(dataframe)

# Display Series as a formatted DataFrame
printsf(series)

Adding Your Own Utilities

  1. Add new functions to src/utils/
  2. Import them in any module using __module_finder__:
    import __module_finder__
    from utils.your_module import your_function

Documentation

For more detailed information, check out these guides:

Contributing

We welcome contributions! Whether it's:

  • πŸ› Bug reports
  • ✨ Feature requests
  • πŸ“– Documentation improvements
  • πŸ”§ Code contributions

Please feel free to:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

For detailed contribution guidelines, see CONTRIBUTING.md.

Troubleshooting

Common Issues

Issue: Module not found errors

ModuleNotFoundError: No module named 'utils'

Solution: Make sure you import __module_finder__ before importing from utils:

import __module_finder__  # This must come first
from utils.display import printdf

Issue: Jupyter kernel not found

Kernel Error: No kernel found

Solution: Install ipykernel in your environment:

conda activate omni-grid
conda install ipykernel
python -m ipykernel install --user --name omni-grid

Issue: Data directory not ignored by git

git status shows files in data/

Solution: The .gitignore is configured to ignore **/data/*. Make sure your data is in a data/ subdirectory.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Copyright (C) 2022 JANISHAR ALI ANWAR

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Acknowledgments

  • Original template created by Janishar Ali Anwar
  • Maintained by the GizzZmo team
  • Built with ❀️ for the data science community

Support

Find this project useful? ⭐ Star it on GitHub!

Connect


Happy Analyzing! πŸš€πŸ“Š

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors