Skip to content
This repository was archived by the owner on Jun 18, 2026. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

647 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧬 BioBots

Bioprinting computation toolkit & analysis platform

Material calculations · Rheology modeling · GCode analysis · Cell viability estimation · Cross-linking kinetics · 87 interactive tools

License: MIT CI codecov CodeQL Docker Build npm NuGet Publish GitHub Pages

Tests Test Suites Factories Tools


📑 Table of Contents


⚡ Quick Start

All 87 analysis tools run entirely in your browser — no backend, no install, no dependencies:

Open the Dashboard

Start with:

Or install the SDK:

npm install @sauravbhattacharya001/biobots

📦 What's Inside

Component Description
87 Browser Tools Interactive analysis, visualization, and lab management tools — zero dependencies, pure client-side
80 SDK Factories Node.js computation modules for material calc, rheology, GCode, viability, and more
REST API ASP.NET Web API for querying bioprint statistics (11 metrics × 3 comparisons × 3 aggregations)
150 Test Suites 5,668 Jest tests covering SDK modules and analysis tools
.NET Models NuGet package with data model classes for integration
Docker Containerized deployment via GitHub Container Registry

🌐 Live Demo — 87 Analysis Tools

All tools are deployed at sauravbhattacharya001.github.io/BioBots and render entirely client-side using Canvas API.

🔬 Core Analysis (8 tools)
Tool Description
📊 Data Explorer Histograms, scatter plots, regression, summary statistics
🔬 Print Comparison Side-by-side comparison of 2–4 prints with radar charts
🎯 Quality Control Quality grading (A–F), correlation heatmap, optimal parameters
🔍 Anomaly Detector Z-Score and IQR outlier detection with severity classification
🔗 Cluster Analysis K-means clustering with auto-k detection and silhouette scores
⚙️ Parameter Optimizer Find optimal parameters for any target metric
📈 Trend Analysis Moving averages, regression, metric correlations
📊 Correlation Pairwise metric correlation matrix and insights
📊 Statistical & Process Control (8 tools)
Tool Description
📊 SPC Charts X-bar/R statistical process control charts
📊 Pareto Analysis Multi-objective Pareto frontier visualization
🎛️ Sensitivity Analysis Tornado charts, parameter impact ranking
📐 Design of Experiments Parameter space coverage, gap analysis
📊 Statistics Hypothesis testing and statistical calculator
📊 Reproducibility Print reproducibility scoring
📉 Drift Detector Parameter drift detection across runs
📊 Coverage Tracker Parameter space coverage analysis
🧬 Bioink & Materials (9 tools)
Tool Description
🧪 Bioink Calculator Volume, cost, and time estimation for bioink preparations
🧪 Bioink Mixer Multi-component mixing ratio optimization
🧪 Rheology Modeler Power-law, Carreau, Herschel-Bulkley viscosity models
🧪 Materials Database Bioink material properties and selection guide
🧫 Bioink Database Searchable bioink properties with comparison
🧪 Compatibility Matrix Material pairing compatibility matrix
🧫 Material Substitution Smart material substitution recommendations
⏳ Shelf Life Bioink stability and expiry tracking
📐 Standard Curve Standard curve calculator for calibration data
🏗️ Print Setup & Design (8 tools)
Tool Description
🏗️ Scaffold Designer 3D scaffold design — porosity, strut, material analysis
🔩 Nozzle Planner Nozzle selection and coordination
🔧 Calibration Guided multi-parameter calibration
🗺️ Toolpath Analyzer G-code toolpath visualization
📋 Recipe Builder Reproducible print recipe builder
📝 Protocol Library Protocol management, tagging, comparison
⚖️ Protocol Compare Side-by-side protocol comparison engine
🔮 Predictor ML prediction of print outcomes
🧫 Cell Biology & Post-Print (7 tools)
Tool Description
🧬 Cell Seeding Seeding density and scaffold calculations
🧫 Maturation Tracker Post-print tissue maturation tracking
📈 Growth Curve Cell proliferation tracking
🔬 Passage Tracker Cell passage tracking and lineage management
🧬 Western Blot Western blot analysis and quantification
🧪 Flow Cytometry Flow cytometry data analysis and gating
⚡ Electroporation Calculator Electroporation protocol parameters
🏭 Lab Operations & Management (16 tools)
Tool Description
💰 Cost Estimator Per-print costs with materials, machine time, batch scaling
📊 Queue Manager Print job scheduling and queue management
🏭 Batch Analytics Batch processing queue and statistics
📊 Yield Analyzer Print yield analysis and optimization
🌡️ Environment Monitor Lab conditions — temp, humidity, CO₂, particulates
🛡️ Maintenance Equipment maintenance scheduling and alerts
🚀 Fleet Commander Multi-printer fleet management dashboard
🏭 Capacity Planner Lab capacity planning and resource forecasting
📦 Sample Registry Sample tracking and inventory management
📋 Sample Tracking Sample tracking board with status
♻️ Waste Tracker Material waste logging and trends
⏰ Expiry Watchdog Reagent expiry tracking and alerting
🧹 Sterilization Sterilization method selection and cycles
📅 Timeline Planner Bioprint timeline planning and scheduling
📅 Smart Scheduler Intelligent experiment scheduling
⏱️ Lab Timer Multi-channel lab timer for protocol timing
📝 Compliance, Quality & Reporting (12 tools)
Tool Description
📋 Print Report Formatted, printable lab reports
📓 Print Logbook Lab notebook — notes, tags, flags, search, export
📊 Print Profile Individual print quality profiling with scoring
📈 Evolution Tracker Print quality evolution over time
🔬 Failure Diagnostics Root cause analysis and failure mode detection
🔧 Troubleshooter Interactive bioprint troubleshooter
✅ GLP Compliance Good Laboratory Practice compliance checks
🔗 Chain of Custody Sample chain-of-custody tracking and audit trail
🔍 Data Integrity Data integrity auditing and validation
🛡️ Safety Checklist Lab safety checklist and compliance
🚨 Incident Report Lab incident reporting and pattern analysis
⚠️ Risk Assessor Experiment risk assessment and mitigation
🤖 Automation & Advanced (7 tools)
Tool Description
🤖 Print Quality Autopilot Autonomous print quality monitoring and adjustment
📝 Recommender Parameter recommendation engine
🔄 Workflow Orchestrator Lab workflow orchestration and automation
⚙️ Workflow Builder Visual workflow builder for experiment pipelines
🔬 Experiment Replicator Experiment replication planning and tracking
🧠 Knowledge Graph Lab knowledge graph for experiment insights
⚠️ Early Warning Contamination early warning and detection system
🔧 Utilities & Reference (12 tools)
Tool Description
📋 Data Table Searchable, sortable, filterable data browser with CSV export
🧫 Wellplate Analyzer Performance breakdown by wellplate format
🧫 Plate Designer Plate layout designer for experiment planning
🔄 Unit Converter Bioprinting unit converter
📖 Glossary Bioprinting terminology reference
🎬 Simulator Print timeline simulator
🧬 Print Fingerprint Print DNA fingerprinting for unique run identification
🎓 Training Tracker Lab personnel training and certification tracking
🔍 Search Hub Unified search and navigation across all tools
🔌 API Explorer Interactive REST API documentation and testing
📚 Developer Guide Setup, testing, and contributing reference
🏛️ Architecture System architecture diagram

📦 SDK — npm Package

The @sauravbhattacharya001/biobots package ships 80 factory functions for bioprinting computation — material calculations, rheology modeling, cell viability estimation, GCode analysis, and more.

npm install @sauravbhattacharya001/biobots

All modules are lazy-loaded — only the factories you call are loaded from disk, keeping require() startup fast.

Quick Examples

const biobots = require('@sauravbhattacharya001/biobots');

// Material usage estimation
const calc = biobots.createMaterialCalculator();
const usage = calc.calculateUsage({
  wellplate: 24, layerHeight: 0.2, layerNum: 10,
  materialKey: 'alginate', infillPercent: 80, wastePercent: 15
});
console.log(usage.totalVolumeMl, usage.estimatedCost);

// Rheology modeling (Power Law)
const rheo = biobots.createRheologyModeler();
const viscosity = rheo.powerLaw(100, { K: 50, n: 0.4 }); // η at γ̇ = 100 s⁻¹
const window = rheo.printabilityWindow({ K: 50, n: 0.4 });

// Cell viability estimation
const viability = biobots.createViabilityEstimator();
const result = viability.estimate({
  shearStress: 5.0,   // kPa
  duration: 120,       // seconds
  cellType: 'HeLa'
});
console.log(result.estimatedViability); // percentage

// GCode toolpath analysis
const gcode = biobots.createGCodeAnalyzer();
const analysis = gcode.analyze('G1 X10 Y20 Z0.2 E5 F1200\nG1 X30 Y20');
console.log(analysis.totalDistance, analysis.layerCount);

// Discover all available factories
console.log(biobots.listFactories()); // sorted array of 80 names
console.log(biobots.factoryCount);     // 80

Factory Categories

Category Factories Examples
Material Science 12 createMaterialCalculator, createBioinkMixer, createCompatibilityMatrix, createShelfLifeManager
Print Engineering 10 createGCodeAnalyzer, createScaffoldCalculator, createNozzleAdvisor, createRecipeBuilder
Cell Biology 8 createViabilityEstimator, createCellSeedingCalculator, createPassageTracker, createGrowthCurveAnalyzer
Rheology & Physics 5 createRheologyModeler, createCrosslinkAnalyzer, createElectroporationCalculator
Lab Operations 16 createLabInventoryManager, createSmartReorderAdvisor, createWasteTracker, createEnvironmentalMonitor, createSterilityAssurance
Quality & Analysis 12 createPrintQualityScorer, createYieldAnalyzer, createCapabilityAnalyzer, createDriftDetector
Data & Export 8 createDataExporter, createPrintSessionLogger, createSampleTracker, createDilutionCalculator
Automation 10 createProtocolGenerator, createJobEstimator, createMediaPrepCalculator, createCentrifugeCalculator

📡 REST API

The ASP.NET Web API reads bioprinting data from a JSON dataset and exposes RESTful endpoints for statistical queries.

Endpoint Pattern

GET /api/prints/{metric}/{comparison}/{value}

Metrics

Metric Type Description
livePercent double Cell viability — % alive (live/dead imaging)
deadPercent double Cell mortality — % dead
elasticity double Structural rigidity (kPa)
cl_duration int Photocrosslinking duration (ms)
cl_intensity int Photocrosslinking light intensity (%)
extruder1 / extruder2 double Extruder pressure at print time
layerHeight double Height per layer (mm)
layerNum int Total layer count
wellplate int Wellplate type
serial int BioBot 1 serial number

Comparisons & Aggregations

Comparison Description
greater / lesser / equal Count where metric matches condition

Pass Maximum, Minimum, or Average as the value for aggregation queries:

# Prints with >50% cell viability
GET /api/prints/livePercent/greater/50

# Maximum layer count
GET /api/prints/layerNum/greater/Maximum

# Average elasticity
GET /api/prints/elasticity/greater/Average

🏗️ Architecture

BioBots/
├── docs/                      # 87 client-side analysis tools (GitHub Pages)
│   ├── shared/                # 80 SDK computation modules
│   ├── index.html             # Dashboard entry point
│   └── *.html                 # Individual tool pages
├── Try/                       # ASP.NET Web API backend
│   ├── Controllers/
│   │   └── PrintsController.cs    # REST API with 11 metric endpoints
│   ├── Models/
│   │   └── Print.cs               # Data models
│   └── Web.config
├── __tests__/                 # 146 Jest test files
├── tests/                     # Additional test modules
├── src/                       # Python analysis scripts
├── index.js                   # npm SDK entry — lazy-loaded factory manifest
├── index.d.ts                 # TypeScript type definitions
├── bioprint-data.json         # Sample dataset
└── BioBotsTool.sln            # .NET solution file

Key Design Decisions

  • Thread-safe caching — Double-checked locking for concurrent request safety
  • File-watch reload — Checks LastWriteTimeUtc on each request; re-parses only when changed
  • Null-safe filtering — Records with missing nested objects are skipped with trace warnings
  • Float equality — Epsilon-based comparison (1e-9) for IEEE 754 precision
  • Lazy SDK loading — Factory modules loaded on first access, not at require() time

🔧 Development

Prerequisites

Running Tests

npm install

# Full suite with coverage
npm test

# Watch mode
npx jest --watch

# Single file
npx jest __tests__/calculator.test.js

# Coverage thresholds (branches: 60%, functions/lines/statements: 70%)
npm run coverage:check

Running the REST API

  1. Open BioBotsTool.sln in Visual Studio
  2. Press F5 to start the development server
  3. Navigate to http://localhost:{port}/index.html

Previewing Analysis Tools Locally

npx http-server docs -p 8000
# Open http://localhost:8000

Custom Data File

Add to Web.config:

<appSettings>
  <add key="DataFilePath" value="C:\path\to\your\bioprint-data.json" />
</appSettings>

The data file is watched — edits are picked up automatically.


🚀 Deployment

Docker

docker pull ghcr.io/sauravbhattacharya001/biobots-tool:latest
docker run -p 8080:80 ghcr.io/sauravbhattacharya001/biobots-tool:latest

NuGet (GitHub Packages)

The BioBots.Models package provides data model classes for .NET projects:

dotnet nuget add source https://nuget.pkg.github.com/sauravbhattacharya001/index.json \
  --name github-biobots --username YOUR_GITHUB_USERNAME --password YOUR_GITHUB_PAT

dotnet add package BioBots.Models

❓ Troubleshooting

Problem Solution
API returns empty results Verify bioprint-data.json exists and is valid JSON
Analysis tools show "No data" Tools load bioprint-data.json via relative path — ensure the file is present
Tests fail with document is not defined Run npm install — jsdom is required for DOM-dependent tests
Docker container won't start Requires Windows containers (.NET Framework 4.x) — use --isolation=hyperv on Win 10/11
NuGet auth fails GitHub Packages requires a PAT with read:packages scope

🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines, ARCHITECTURE.md for system design, or the Developer Guide for setup instructions.

📄 License

MIT — Saurav Bhattacharya

👤 Author

Saurav Bhattacharya@sauravbhattacharya001

Releases

Packages

Contributors

Languages