Skip to main content

A production-ready deep learning framework for causal inference on structured, textual, and heterogeneous data

Project description

๐Ÿง  CANS: Causal Adaptive Neural System

PyPI version Python Version License Downloads GitHub stars GitHub issues Build Status Documentation Code style: black

Production-ready causal inference at scale with deep learning, APIs, and LLM integration

CANS (Causal Adaptive Neural System) is the most comprehensive production-ready framework for causal inference using deep learning. It combines Graph Neural Networks (GNNs), Transformers, Counterfactual Regression Networks (CFRNet), and advanced causal methods with enterprise-grade APIs and LLM integration.

๐ŸŽฏ Perfect for: Healthcare, Finance, Marketing, Legal, Social Media, E-commerce, and any domain requiring rigorous causal analysis

๐ŸŒŸ What Makes CANS Unique

  • ๐Ÿง  Hybrid AI Architecture: GNNs + Transformers + CFRNet for complex data
  • ๐Ÿ”ฌ Rigorous Causal Science: Automated assumption testing, multiple identification strategies
  • ๐ŸŒ Production APIs: REST API + MCP server for seamless integration
  • ๐Ÿค– LLM Integration: Enable AI assistants to perform causal analysis autonomously
  • โšก Enterprise Ready: Authentication, monitoring, scalable deployment
  • ๐Ÿ“Š Comprehensive Toolkit: CLI, Python API, web integration, notebooks

๐Ÿš€ Choose Your Interface

Interface Best For Getting Started
๐Ÿ“š Interactive Tutorials Learning, first-time users cans-tutorials โ†’ hands-on guided learning
๐Ÿ–ฅ๏ธ CLI Tools Quick analysis, data scientists cans-validate --data data.csv --treatment T --outcome Y
๐Ÿ Python API Research, notebooks, pipelines from cans import CANS, validate_causal_assumptions
๐ŸŒ REST API Web apps, microservices POST /validate โ†’ JSON response
๐Ÿค– MCP Server LLMs, AI assistants Claude/GPT calls validate_causal_assumptions_tool

๐Ÿ“Š Usage Matrix

Task CLI Python REST API MCP/LLM
Assumption Validation cans-validate validate_causal_assumptions() POST /validate validate_causal_assumptions_tool
Complete Analysis cans-analyze CANSRunner.fit() POST /analyze quick_causal_analysis
Model Evaluation cans-evaluate CausalEvaluator.evaluate() POST /evaluate evaluate_predictions
Batch Processing Shell scripting for loops HTTP requests LLM automation
Production Deployment Cron jobs Python services Kubernetes AI workflows

๐Ÿš€ What's New in v3.0 - Production-Ready Causal AI

๐Ÿ”ฌ Advanced Causal Methods

  • Assumption Testing: Automated unconfoundedness, positivity, and SUTVA validation
  • Multiple Identification: Backdoor criterion, IPW, doubly robust estimation
  • CATE Estimation: X-Learner, T-Learner, S-Learner, Neural CATE, Causal Forest
  • Uncertainty Quantification: Bayesian methods, ensemble approaches, conformal prediction

๐ŸŒ Enterprise Integration

  • REST API: Complete HTTP API with authentication and rate limiting
  • MCP Server: Model Context Protocol for seamless LLM integration
  • Production Tools: Docker, Kubernetes, monitoring, logging
  • Multi-language: Python, JavaScript, R, cURL examples

๐Ÿง  Enhanced AI Architecture

  • Advanced Graph Construction: Multi-node, temporal, and global architectures
  • Causal-Specific Losses: CFR, IPW, DragonNet, TARNet with representation balancing
  • Memory Efficiency: Lazy loading and batch processing for large datasets
  • GPU Optimization: CUDA support with automatic device selection

Previous v2.0 Features:

  • ๐Ÿ”ง Configuration Management: Centralized, validated configs with JSON/YAML support
  • ๐Ÿ›ก๏ธ Enhanced Error Handling: Comprehensive validation with informative error messages
  • ๐Ÿ“Š Logging & Checkpointing: Built-in experiment tracking with automatic model saving
  • ๐Ÿงช Comprehensive Testing: 100+ unit tests ensuring production reliability
  • ๐Ÿ“ˆ Advanced Data Pipeline: Multi-format loading (CSV, JSON) with automatic preprocessing
  • โšก Enhanced Training: Early stopping, gradient clipping, multiple loss functions

๐Ÿ”ง Key Features

Core Architecture

  • โœ… Hybrid Neural Architecture: GNNs + Transformers + CFRNet for multi-modal causal inference
  • โœ… Gated Fusion Layer: Adaptive mixing of graph and textual representations
  • โœ… Flexible Graph Construction: Single-node, multi-node, temporal, and global graphs
  • โœ… Production-Ready: Comprehensive error handling, logging, and testing

Causal Inference Capabilities

  • โœ… Rigorous Assumption Testing: Automated validation of causal identification conditions
  • โœ… Multiple Identification Methods: Backdoor, IPW, doubly robust, with sensitivity analysis
  • โœ… Heterogeneous Treatment Effects: CATE estimation with 5+ methods (X/T/S-Learners, etc.)
  • โœ… Advanced Loss Functions: CFR, DragonNet, TARNet with representation balancing
  • โœ… Uncertainty Quantification: Bayesian, ensemble, conformal prediction approaches

Data Processing & Evaluation

  • โœ… Smart Data Loading: CSV, JSON, synthetic data with automatic graph construction
  • โœ… Comprehensive Evaluation: PEHE, ATE, policy value, calibration metrics
  • โœ… Memory Efficiency: Lazy loading, batch processing for large-scale datasets
  • โœ… Easy Configuration: JSON/YAML configs with validation and experiment tracking

๐Ÿ—๏ธ Architecture

 +-----------+     +-----------+
 |  GNN Emb  |     |  BERT Emb |
 +-----------+     +-----------+
        \             /
         \ Fusion Layer /
          \     /
         +-----------+
         |  Fused Rep |
         +-----------+
               |
           CFRNet
        /          \
   mu_0(x)       mu_1(x)

๐Ÿš€ Enhanced Causal Analysis Workflow

Complete Example with Assumption Testing & CATE Estimation

from cans import (
    CANSConfig, CANS, GCN, CANSRunner,
    create_sample_dataset, get_data_loaders,
    CausalAssumptionTester, CausalLossManager, 
    CATEManager, UncertaintyManager,
    advanced_counterfactual_analysis
)

# 1. Configuration with enhanced causal features
config = CANSConfig()
config.model.gnn_type = "GCN"
config.training.loss_type = "cfr"  # Causal loss function
config.data.graph_construction = "global"  # Multi-node graphs

# 2. Test causal assumptions BEFORE modeling
assumption_tester = CausalAssumptionTester()
results = assumption_tester.comprehensive_test(X, T, Y)
print(f"Causal assumptions valid: {results['causal_identification_valid']}")

# 3. Create datasets with enhanced graph construction
datasets = create_sample_dataset(n_samples=1000, config=config.data)
train_loader, val_loader, test_loader = get_data_loaders(datasets)

# 4. Setup model with causal loss functions
from transformers import BertModel
gnn = GCN(in_dim=64, hidden_dim=128, output_dim=256)
bert = BertModel.from_pretrained("distilbert-base-uncased")
model = CANS(gnn, bert, fusion_dim=256)

loss_manager = CausalLossManager("cfr", alpha=1.0, beta=0.5)

# 5. Train with causal-aware pipeline
optimizer = torch.optim.AdamW(model.parameters(), lr=0.001)
runner = CANSRunner(model, optimizer, config)
history = runner.fit(train_loader, val_loader)

# 6. Multiple counterfactual identification methods
cf_results = advanced_counterfactual_analysis(
    model, test_loader, 
    methods=['backdoor', 'ipw', 'doubly_robust']
)

# 7. CATE estimation with multiple learners
cate_manager = CATEManager(method="x_learner")
cate_manager.fit(X, T, Y)
individual_effects = cate_manager.estimate_cate(X_test)

# 8. Uncertainty quantification
uncertainty_manager = UncertaintyManager(method="conformal")
uncertainty_manager.setup(model)
intervals = uncertainty_manager.estimate_uncertainty(test_loader)

print(f"ATE: {cf_results['backdoor']['ate']:.3f}")
print(f"Coverage: {intervals['coverage_rate']:.3f}")

๐Ÿš€ Quick Start

๐ŸŽฏ New to CANS? Start with our Getting Started Guide for a 5-minute tutorial!

Installation

# Install from PyPI (Recommended)  
pip install cans-framework

# Verify installation and set up tutorials
pip show cans-framework
cans-tutorials  # Sets up interactive learning environment

Alternative Installation Methods

# Development installation
git clone https://github.com/rdmurugan/cans-framework.git
cd cans-framework
pip install -r requirements.txt
pip install -e .

# With conda (for dependency management)
conda create -n cans python=3.9
conda activate cans
pip install cans-framework

Core Dependencies:

  • torch>=2.0.0
  • transformers>=4.38.0
  • torch-geometric>=2.3.0
  • scikit-learn>=1.3.0
  • pandas>=2.0.0

Basic Usage (30 seconds to results)

from cans.config import CANSConfig
from cans.utils.data import create_sample_dataset, get_data_loaders
from cans.models import CANS
from cans.models.gnn_modules import GCN
from cans.pipeline.runner import CANSRunner
from transformers import BertModel
import torch

# 1. Create configuration
config = CANSConfig()
config.training.epochs = 10

# 2. Load data (or create sample data)
datasets = create_sample_dataset(n_samples=1000, n_features=64)
train_loader, val_loader, test_loader = get_data_loaders(datasets, batch_size=32)

# 3. Create model
gnn = GCN(in_dim=64, hidden_dim=128, output_dim=256)
bert = BertModel.from_pretrained("bert-base-uncased")
model = CANS(gnn, bert, fusion_dim=256)

# 4. Train
optimizer = torch.optim.AdamW(model.parameters(), lr=0.001)
runner = CANSRunner(model, optimizer, config)
history = runner.fit(train_loader, val_loader)

# 5. Evaluate
results = runner.evaluate(test_loader)
print(f"Test MSE: {results['mse']:.4f}")
print(f"Average Treatment Effect: {results['ate']:.4f}")

๐Ÿ–ฅ๏ธ Command Line Interface (CLI)

CANS provides six powerful CLI commands for complete causal analysis workflow:

๐Ÿ’ก New to CANS? Check out our comprehensive User Guide for step-by-step tutorials, troubleshooting, and best practices!

1. Validate Causal Assumptions (cans-validate)

Test critical causal assumptions before modeling:

# Basic usage
cans-validate --data data.csv --treatment intervention --outcome conversion_rate

# Specify features explicitly  
cans-validate --data marketing_data.csv \
              --treatment campaign_type \
              --outcome revenue \
              --features age,income,education,region \
              --output validation_results.json \
              --verbose

# Example output:
# {
#   "unconfoundedness_test": {
#     "valid": true,
#     "p_value": 0.23,
#     "method": "backdoor_criterion"
#   },
#   "positivity_test": {
#     "valid": true,
#     "overlap_score": 0.85,
#     "min_propensity": 0.05
#   },
#   "sutva_test": {
#     "valid": true,
#     "interference_score": 0.02
#   }
# }

2. Evaluate Model Performance (cans-evaluate)

Assess causal model predictions:

# Evaluate predictions file with columns: mu0, mu1, treatments, outcomes
cans-evaluate --predictions model_predictions.csv --format json

# Save detailed evaluation report
cans-evaluate --predictions predictions.csv \
              --output evaluation_report.txt \
              --format text

# Example output metrics:
# - Average Treatment Effect (ATE): 2.34 ยฑ 0.18
# - Factual MSE: 0.045
# - PEHE (Precision in Estimation of Heterogeneous Effects): 0.12
# - Individual Treatment Effect Rยฒ: 0.73

3. Complete Causal Analysis (cans-analyze)

Run end-to-end causal inference workflow:

# Quick analysis with default configuration
cans-analyze --data patient_data.csv --output-dir results/

# Use custom configuration
cans-analyze --data social_media.csv \
             --config custom_config.json \
             --output-dir social_analysis/

# Creates structured output:
# results/
# โ”œโ”€โ”€ assumptions_validation.json
# โ”œโ”€โ”€ model_performance.json  
# โ”œโ”€โ”€ causal_effects_summary.json
# โ”œโ”€โ”€ individual_effects.csv
# โ””โ”€โ”€ analysis_report.html

4. Interactive Tutorials (cans-tutorials)

Set up hands-on tutorials in your workspace:

# Create tutorial workspace in current directory
cans-tutorials

# Specify custom directory
cans-tutorials --dir my-learning-space

# List available tutorials
cans-tutorials --list

# Creates structured tutorial environment:
# cans-tutorials/
# โ”œโ”€โ”€ README.md                        # Quick start guide
# โ”œโ”€โ”€ TUTORIALS.md                     # Complete documentation
# โ”œโ”€โ”€ tutorial_01_first_steps.py       # Basic introduction
# โ”œโ”€โ”€ tutorial_02_data_understanding.py # Advanced data handling
# โ””โ”€โ”€ examples/
#     โ””โ”€โ”€ sample_marketing_data.csv    # Practice dataset

Tutorial Features:

  • ๐ŸŽฏ Interactive Learning: Step-by-step Python scripts with detailed explanations
  • ๐Ÿ“Š Sample Data: Real-world-like datasets for immediate practice
  • ๐Ÿ”ฌ Progressive Complexity: From basics to advanced causal inference
  • ๐Ÿ’ก Best Practices: Learn proper workflow and methodology
  • ๐Ÿ› ๏ธ Editable Copies: Modify and experiment with tutorial code

5. API Server (cans-server)

Start production-ready REST API:

# Start API server
cans-server
# Interactive docs at: http://localhost:8000/docs

6. LLM Integration (cans-mcp)

Enable AI assistants to perform causal analysis:

# Start MCP server for LLM integration
cans-mcp
# Enables Claude, GPT, and other LLMs to use CANS autonomously

CLI Configuration Files

Create reusable configuration files for complex analyses:

{
  "model": {
    "gnn_type": "GCN",
    "gnn_hidden_dim": 128,
    "fusion_dim": 256,
    "text_model": "distilbert-base-uncased"
  },
  "training": {
    "learning_rate": 0.001,
    "batch_size": 64,
    "epochs": 50,
    "loss_type": "cfr"
  },
  "data": {
    "graph_construction": "knn",
    "knn_k": 5,
    "scale_node_features": true
  }
}

๐Ÿ“Š Usage Examples

Example 1: CSV Data with Real Causal Inference

from cans.utils.data import load_csv_dataset
from cans.config import CANSConfig, DataConfig

# Configure data processing
config = CANSConfig()
config.data.graph_construction = "knn"  # or "similarity" 
config.data.knn_k = 5
config.data.scale_node_features = True

# Load your CSV data
datasets = load_csv_dataset(
    csv_path="your_data.csv",
    text_column="review_text",        # Column with text data
    treatment_column="intervention",   # Binary treatment (0/1)
    outcome_column="conversion_rate",  # Continuous outcome  
    feature_columns=["age", "income", "education"],  # Numerical features
    config=config.data
)

train_dataset, val_dataset, test_dataset = datasets

# Check data quality
stats = train_dataset.get_statistics()
print(f"Treatment proportion: {stats['treatment_proportion']:.3f}")
print(f"Propensity overlap valid: {stats['propensity_overlap_valid']}")

Example 2: Advanced Configuration & Experiment Tracking

from cans.config import CANSConfig

# Create detailed configuration
config = CANSConfig()

# Model configuration
config.model.gnn_type = "GCN"
config.model.gnn_hidden_dim = 256
config.model.fusion_dim = 512
config.model.text_model = "distilbert-base-uncased"  # Faster BERT variant

# Training configuration  
config.training.learning_rate = 0.001
config.training.batch_size = 64
config.training.epochs = 50
config.training.early_stopping_patience = 10
config.training.gradient_clip_norm = 1.0
config.training.loss_type = "huber"  # Robust to outliers

# Experiment tracking
config.experiment.experiment_name = "healthcare_causal_analysis"
config.experiment.save_every_n_epochs = 5
config.experiment.log_level = "INFO"

# Save configuration for reproducibility
config.save("experiment_config.json")

# Later: load and use
loaded_config = CANSConfig.load("experiment_config.json")

Example 3: Counterfactual Analysis & Treatment Effects

from cans.utils.causal import simulate_counterfactual
import numpy as np

# After training your model...
runner = CANSRunner(model, optimizer, config)
runner.fit(train_loader, val_loader)

# Comprehensive evaluation
test_metrics = runner.evaluate(test_loader)
print("Performance Metrics:")
for metric, value in test_metrics.items():
    print(f"  {metric}: {value:.4f}")

# Counterfactual analysis
cf_control = simulate_counterfactual(model, test_loader, intervention=0)
cf_treatment = simulate_counterfactual(model, test_loader, intervention=1)

# Calculate causal effects
ate = np.mean(cf_treatment) - np.mean(cf_control)
print(f"\nCausal Analysis:")
print(f"Average Treatment Effect (ATE): {ate:.4f}")
print(f"Expected outcome under control: {np.mean(cf_control):.4f}")
print(f"Expected outcome under treatment: {np.mean(cf_treatment):.4f}")

# Individual treatment effects
individual_effects = np.array(cf_treatment) - np.array(cf_control)
print(f"Treatment effect std: {np.std(individual_effects):.4f}")
print(f"% benefiting from treatment: {(individual_effects > 0).mean()*100:.1f}%")

Example 4: Custom Data Pipeline

from cans.utils.preprocessing import DataPreprocessor, GraphBuilder
from cans.config import DataConfig
import pandas as pd

# Custom preprocessing pipeline
config = DataConfig()
config.graph_construction = "similarity"
config.similarity_threshold = 0.7
config.scale_node_features = True

preprocessor = DataPreprocessor(config)

# Process your DataFrame  
df = pd.read_csv("social_media_posts.csv")
dataset = preprocessor.process_tabular_data(
    data=df,
    text_column="post_content",
    treatment_column="fact_check_label",
    outcome_column="share_count",
    feature_columns=["user_followers", "post_length", "sentiment_score"],
    text_model="bert-base-uncased",
    max_text_length=256
)

# Split with custom ratios
train_ds, val_ds, test_ds = preprocessor.split_dataset(
    dataset, 
    train_size=0.7, 
    val_size=0.2, 
    test_size=0.1
)

๐Ÿงช Testing & Development

# Run all tests
pytest tests/ -v

# Run specific test categories  
pytest tests/test_models.py -v        # Model tests
pytest tests/test_validation.py -v    # Validation tests
pytest tests/test_pipeline.py -v      # Training pipeline tests

# Run with coverage
pytest tests/ --cov=cans --cov-report=html

# Run example scripts
python examples/enhanced_usage_example.py
python examples/enhanced_causal_analysis_example.py

๐Ÿ“ Framework Structure

cans-framework/
โ”œโ”€โ”€ cans/
โ”‚   โ”œโ”€โ”€ __init__.py              # Main imports
โ”‚   โ”œโ”€โ”€ config.py                # โœจ Configuration management
โ”‚   โ”œโ”€โ”€ exceptions.py            # โœจ Custom exceptions
โ”‚   โ”œโ”€โ”€ validation.py            # โœจ Data validation utilities
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ”‚   โ”œโ”€โ”€ cans.py             # Core CANS model (enhanced)
โ”‚   โ”‚   โ””โ”€โ”€ gnn_modules.py      # GNN implementations
โ”‚   โ”œโ”€โ”€ pipeline/
โ”‚   โ”‚   โ””โ”€โ”€ runner.py           # โœจ Enhanced training pipeline
โ”‚   โ””โ”€โ”€ utils/
โ”‚       โ”œโ”€โ”€ causal.py           # Counterfactual simulation
โ”‚       โ”œโ”€โ”€ data.py             # โœจ Enhanced data loading
โ”‚       โ”œโ”€โ”€ preprocessing.py     # โœจ Advanced preprocessing
โ”‚       โ”œโ”€โ”€ logging.py          # โœจ Structured logging
โ”‚       โ””โ”€โ”€ checkpointing.py    # โœจ Model checkpointing
โ”œโ”€โ”€ tests/                       # โœจ Comprehensive test suite
โ”œโ”€โ”€ examples/                    # Usage examples
โ””โ”€โ”€ CLAUDE.md                   # Development guide

โœจ = New/Enhanced in v2.0

๐ŸŽฏ Use Cases & Applications

Healthcare & Medical

# Analyze treatment effectiveness with patient records + clinical notes
datasets = load_csv_dataset(
    csv_path="patient_outcomes.csv",
    text_column="clinical_notes",
    treatment_column="medication_type", 
    outcome_column="recovery_score",
    feature_columns=["age", "bmi", "comorbidities"]
)

Marketing & A/B Testing

# Marketing campaign effectiveness with customer profiles + ad content
datasets = load_csv_dataset(
    csv_path="campaign_data.csv", 
    text_column="ad_content",
    treatment_column="campaign_variant",
    outcome_column="conversion_rate",
    feature_columns=["customer_ltv", "demographics", "behavior_score"]
)

Social Media & Content Moderation

# Impact of content moderation on engagement
datasets = load_csv_dataset(
    csv_path="posts_data.csv",
    text_column="post_text", 
    treatment_column="moderation_action",
    outcome_column="engagement_score",
    feature_columns=["user_followers", "post_length", "sentiment"]
)

๐Ÿ”ฌ Research & Methodology

CANS implements state-of-the-art causal inference techniques:

  • Counterfactual Regression Networks (CFRNet): Learn representations that minimize treatment assignment bias
  • Gated Fusion: Adaptively combine graph-structured and textual information
  • Balanced Representation: Minimize distributional differences between treatment groups
  • Propensity Score Validation: Automatic overlap checking for reliable causal estimates

Key Papers:

  • Shalit et al. "Estimating individual treatment effect: generalization bounds and algorithms" (ICML 2017)
  • Yao et al. "Representation learning for treatment effect estimation from observational data" (NeurIPS 2018)

๐Ÿš€ Performance & Scalability

  • Memory Efficient: Optimized batch processing and gradient checkpointing
  • GPU Acceleration: Full CUDA support with automatic device selection
  • Parallel Processing: Multi-core data loading and preprocessing
  • Production Ready: Comprehensive error handling and logging

Benchmarks (approximate, hardware-dependent):

  • Small: 1K samples, 32 features โ†’ ~30 sec training
  • Medium: 100K samples, 128 features โ†’ ~10 min training
  • Large: 1M+ samples โ†’ Scales with batch size and hardware

๐ŸŒ API & Integration

CANS provides comprehensive API access for integration with web applications, services, and AI systems:

REST API Server

# Start REST API server
cans-server
# or
uvicorn cans.api.server:app --host 0.0.0.0 --port 8000

# Interactive docs at: http://localhost:8000/docs

MCP Server for LLMs

# Start MCP server for LLM integration
cans-mcp
# Enables LLMs to directly perform causal analysis

Python API Client

from cans.api.client import CANSAPIClient

client = CANSAPIClient(api_key="your-key")
results = client.validate_assumptions(
    data="data.csv",
    treatment_column="treatment",
    outcome_column="outcome"
)

๐Ÿ”— API Features:

  • RESTful endpoints for all CANS functionality
  • Model Context Protocol (MCP) server for LLM integration
  • Authentication and rate limiting
  • Async/await support
  • Comprehensive error handling
  • Interactive documentation

๐Ÿ“– Learn More: API Guide

๐Ÿ“š Documentation & Resources

๐Ÿ“š Documentation Hierarchy

  1. Interactive Tutorials (cans-tutorials) - Hands-on learning with guided examples and sample data
  2. Getting Started - 5-minute quickstart tutorial
  3. User Guide - Comprehensive guide with tutorials, best practices, and FAQ
  4. API Guide - Complete API integration guide with examples
  5. README - This file with complete feature overview
  6. Examples - Real-world use cases and workflows
  7. Changelog - Version history and updates

๐Ÿ”ง For Developers

  • Tests - 100+ unit tests and usage patterns
  • Configuration - Project setup and dependencies
  • API Reference - In-code documentation with detailed docstrings

๐Ÿ†˜ Getting Help

๐Ÿค Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Add tests for new functionality
  4. Run tests: pytest tests/ -v
  5. Submit a pull request

Areas we'd love help with:

  • Additional GNN architectures (GraphSAGE, Graph Transformers)
  • More evaluation metrics for causal inference
  • Integration with popular ML platforms (MLflow, Weights & Biases)
  • Performance optimizations

๐Ÿ‘จโ€๐Ÿ”ฌ Authors

Durai Rajamanickam โ€“ @duraimuruganr reach out to durai@infinidatum.net

๐Ÿ“œ License

CANS Framework Custom License - Free for academic and personal use, commercial use requires permission.

  • โœ… Academic & Research Use: Freely use for educational and non-commercial research
  • โœ… Personal Projects: Use for personal and non-commercial experimentation
  • ๐Ÿ“‹ Commercial Use: Requires written permission from durai@infinidatum.net

See LICENSE for full terms and conditions.


Ready to get started? Try the 30-second quick start above, or dive into the detailed examples! ๐Ÿš€

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cans_framework-3.1.2.tar.gz (142.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cans_framework-3.1.2-py3-none-any.whl (133.6 kB view details)

Uploaded Python 3

File details

Details for the file cans_framework-3.1.2.tar.gz.

File metadata

  • Download URL: cans_framework-3.1.2.tar.gz
  • Upload date:
  • Size: 142.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for cans_framework-3.1.2.tar.gz
Algorithm Hash digest
SHA256 3693041d13e9e7f2c0679baa643bc180137d02d3974c6467637568b79771a13d
MD5 b00812e56537efd5a825a7fcef6f6c43
BLAKE2b-256 27dcba3828a7da61d1324d98a76522d30e63c248e656b0f99dc9cb78098ebd55

See more details on using hashes here.

File details

Details for the file cans_framework-3.1.2-py3-none-any.whl.

File metadata

  • Download URL: cans_framework-3.1.2-py3-none-any.whl
  • Upload date:
  • Size: 133.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for cans_framework-3.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6e8dca7325399b26117df2f56425cf2ec1b81a48b17b30ee2675084205a8a420
MD5 b0d5c9875978aa49a156357bd3a5a57a
BLAKE2b-256 00f9bc8192aa8002509fa800ef0afb00dbc27c301bec44558acbf44ec4ef7730

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page