{"id":44608241,"url":"https://github.com/sauravbhattacharya001/biobots","last_synced_at":"2026-05-19T02:15:54.751Z","repository":{"id":76701848,"uuid":"67572200","full_name":"sauravbhattacharya001/BioBots","owner":"sauravbhattacharya001","description":"A simple tool for checking 3D printer run statistics.","archived":false,"fork":false,"pushed_at":"2026-04-23T21:37:44.000Z","size":3546,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-23T22:13:03.304Z","etag":null,"topics":["3d-bioprinting","aspnet-web-api","biobot","bioinformatics","bioprinting","csharp","data-analysis","dotnet","rest-api","tissue-engineering"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sauravbhattacharya001.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-09-07T04:31:37.000Z","updated_at":"2026-04-23T20:17:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"79c06565-5fea-46cd-8938-3085e4aeb12f","html_url":"https://github.com/sauravbhattacharya001/BioBots","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/sauravbhattacharya001/BioBots","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2FBioBots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2FBioBots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2FBioBots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2FBioBots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sauravbhattacharya001","download_url":"https://codeload.github.com/sauravbhattacharya001/BioBots/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2FBioBots/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32209895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-bioprinting","aspnet-web-api","biobot","bioinformatics","bioprinting","csharp","data-analysis","dotnet","rest-api","tissue-engineering"],"created_at":"2026-02-14T11:25:50.218Z","updated_at":"2026-05-19T02:15:54.720Z","avatar_url":"https://github.com/sauravbhattacharya001.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🧬 BioBots\n\n**Bioprinting computation toolkit \u0026 analysis platform**\n\nMaterial calculations · Rheology modeling · GCode analysis · Cell viability estimation · Cross-linking kinetics · 87 interactive tools\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![CI](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/ci.yml/badge.svg)](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/sauravbhattacharya001/BioBots/graph/badge.svg)](https://codecov.io/gh/sauravbhattacharya001/BioBots)\n[![CodeQL](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/codeql.yml/badge.svg)](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/codeql.yml)\n[![Docker Build](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/docker.yml/badge.svg)](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/docker.yml)\n[![npm](https://img.shields.io/npm/v/@sauravbhattacharya001/biobots?label=npm\u0026logo=npm)](https://www.npmjs.com/package/@sauravbhattacharya001/biobots)\n[![NuGet Publish](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/nuget-publish.yml/badge.svg)](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/nuget-publish.yml)\n[![GitHub Pages](https://github.com/sauravbhattacharya001/BioBots/actions/workflows/pages.yml/badge.svg)](https://sauravbhattacharya001.github.io/BioBots/)\n\n![Tests](https://img.shields.io/badge/tests-5668%20passed-brightgreen)\n![Test Suites](https://img.shields.io/badge/test%20suites-150-blue)\n![Factories](https://img.shields.io/badge/SDK%20factories-80-informational)\n![Tools](https://img.shields.io/badge/analysis%20tools-87-orange)\n\n\u003c/div\u003e\n\n---\n\n## 📑 Table of Contents\n\n- [Quick Start](#-quick-start)\n- [What's Inside](#-whats-inside)\n- [Live Demo — 87 Analysis Tools](#-live-demo--87-analysis-tools)\n- [SDK — npm Package](#-sdk--npm-package)\n- [REST API](#-rest-api)\n- [Architecture](#-architecture)\n- [Development](#-development)\n- [Deployment](#-deployment)\n- [Troubleshooting](#-troubleshooting)\n- [Contributing](#-contributing)\n- [License](#-license)\n\n---\n\n## ⚡ Quick Start\n\nAll 87 analysis tools run entirely in your browser — no backend, no install, no dependencies:\n\n**→ [Open the Dashboard](https://sauravbhattacharya001.github.io/BioBots/)**\n\nStart with:\n- [📊 Data Explorer](https://sauravbhattacharya001.github.io/BioBots/explorer.html) — histograms and scatter plots with regression\n- [🎯 Quality Control](https://sauravbhattacharya001.github.io/BioBots/quality.html) — quality grading and optimal parameters\n- [⚙️ Parameter Optimizer](https://sauravbhattacharya001.github.io/BioBots/optimizer.html) — find optimal parameters for any target metric\n- [📋 Data Table](https://sauravbhattacharya001.github.io/BioBots/table.html) — sortable, filterable data browser with CSV export\n\nOr install the SDK:\n```bash\nnpm install @sauravbhattacharya001/biobots\n```\n\n---\n\n## 📦 What's Inside\n\n| Component | Description |\n|-----------|-------------|\n| **87 Browser Tools** | Interactive analysis, visualization, and lab management tools — zero dependencies, pure client-side |\n| **80 SDK Factories** | Node.js computation modules for material calc, rheology, GCode, viability, and more |\n| **REST API** | ASP.NET Web API for querying bioprint statistics (11 metrics × 3 comparisons × 3 aggregations) |\n| **150 Test Suites** | 5,668 Jest tests covering SDK modules and analysis tools |\n| **.NET Models** | NuGet package with data model classes for integration |\n| **Docker** | Containerized deployment via GitHub Container Registry |\n\n---\n\n## 🌐 Live Demo — 87 Analysis Tools\n\nAll tools are deployed at **[sauravbhattacharya001.github.io/BioBots](https://sauravbhattacharya001.github.io/BioBots/)** and render entirely client-side using Canvas API.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🔬 Core Analysis (8 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [📊 Data Explorer](https://sauravbhattacharya001.github.io/BioBots/explorer.html) | Histograms, scatter plots, regression, summary statistics |\n| [🔬 Print Comparison](https://sauravbhattacharya001.github.io/BioBots/compare.html) | Side-by-side comparison of 2–4 prints with radar charts |\n| [🎯 Quality Control](https://sauravbhattacharya001.github.io/BioBots/quality.html) | Quality grading (A–F), correlation heatmap, optimal parameters |\n| [🔍 Anomaly Detector](https://sauravbhattacharya001.github.io/BioBots/anomaly.html) | Z-Score and IQR outlier detection with severity classification |\n| [🔗 Cluster Analysis](https://sauravbhattacharya001.github.io/BioBots/cluster.html) | K-means clustering with auto-k detection and silhouette scores |\n| [⚙️ Parameter Optimizer](https://sauravbhattacharya001.github.io/BioBots/optimizer.html) | Find optimal parameters for any target metric |\n| [📈 Trend Analysis](https://sauravbhattacharya001.github.io/BioBots/trends.html) | Moving averages, regression, metric correlations |\n| [📊 Correlation](https://sauravbhattacharya001.github.io/BioBots/correlation.html) | Pairwise metric correlation matrix and insights |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📊 Statistical \u0026 Process Control (8 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [📊 SPC Charts](https://sauravbhattacharya001.github.io/BioBots/spc.html) | X-bar/R statistical process control charts |\n| [📊 Pareto Analysis](https://sauravbhattacharya001.github.io/BioBots/pareto.html) | Multi-objective Pareto frontier visualization |\n| [🎛️ Sensitivity Analysis](https://sauravbhattacharya001.github.io/BioBots/sensitivity.html) | Tornado charts, parameter impact ranking |\n| [📐 Design of Experiments](https://sauravbhattacharya001.github.io/BioBots/doe.html) | Parameter space coverage, gap analysis |\n| [📊 Statistics](https://sauravbhattacharya001.github.io/BioBots/stats.html) | Hypothesis testing and statistical calculator |\n| [📊 Reproducibility](https://sauravbhattacharya001.github.io/BioBots/reproducibility.html) | Print reproducibility scoring |\n| [📉 Drift Detector](https://sauravbhattacharya001.github.io/BioBots/drift-detector.html) | Parameter drift detection across runs |\n| [📊 Coverage Tracker](https://sauravbhattacharya001.github.io/BioBots/coverage.html) | Parameter space coverage analysis |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🧬 Bioink \u0026 Materials (9 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [🧪 Bioink Calculator](https://sauravbhattacharya001.github.io/BioBots/calculator.html) | Volume, cost, and time estimation for bioink preparations |\n| [🧪 Bioink Mixer](https://sauravbhattacharya001.github.io/BioBots/mixer.html) | Multi-component mixing ratio optimization |\n| [🧪 Rheology Modeler](https://sauravbhattacharya001.github.io/BioBots/rheology.html) | Power-law, Carreau, Herschel-Bulkley viscosity models |\n| [🧪 Materials Database](https://sauravbhattacharya001.github.io/BioBots/materials.html) | Bioink material properties and selection guide |\n| [🧫 Bioink Database](https://sauravbhattacharya001.github.io/BioBots/bioink-database.html) | Searchable bioink properties with comparison |\n| [🧪 Compatibility Matrix](https://sauravbhattacharya001.github.io/BioBots/compatibility.html) | Material pairing compatibility matrix |\n| [🧫 Material Substitution](https://sauravbhattacharya001.github.io/BioBots/substitution.html) | Smart material substitution recommendations |\n| [⏳ Shelf Life](https://sauravbhattacharya001.github.io/BioBots/shelf-life.html) | Bioink stability and expiry tracking |\n| [📐 Standard Curve](https://sauravbhattacharya001.github.io/BioBots/standard-curve.html) | Standard curve calculator for calibration data |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🏗️ Print Setup \u0026 Design (8 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [🏗️ Scaffold Designer](https://sauravbhattacharya001.github.io/BioBots/scaffold.html) | 3D scaffold design — porosity, strut, material analysis |\n| [🔩 Nozzle Planner](https://sauravbhattacharya001.github.io/BioBots/nozzle.html) | Nozzle selection and coordination |\n| [🔧 Calibration](https://sauravbhattacharya001.github.io/BioBots/calibration.html) | Guided multi-parameter calibration |\n| [🗺️ Toolpath Analyzer](https://sauravbhattacharya001.github.io/BioBots/toolpath.html) | G-code toolpath visualization |\n| [📋 Recipe Builder](https://sauravbhattacharya001.github.io/BioBots/recipe.html) | Reproducible print recipe builder |\n| [📝 Protocol Library](https://sauravbhattacharya001.github.io/BioBots/protocol.html) | Protocol management, tagging, comparison |\n| [⚖️ Protocol Compare](https://sauravbhattacharya001.github.io/BioBots/protocol-compare.html) | Side-by-side protocol comparison engine |\n| [🔮 Predictor](https://sauravbhattacharya001.github.io/BioBots/predictor.html) | ML prediction of print outcomes |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🧫 Cell Biology \u0026 Post-Print (7 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [🧬 Cell Seeding](https://sauravbhattacharya001.github.io/BioBots/seeding.html) | Seeding density and scaffold calculations |\n| [🧫 Maturation Tracker](https://sauravbhattacharya001.github.io/BioBots/maturation.html) | Post-print tissue maturation tracking |\n| [📈 Growth Curve](https://sauravbhattacharya001.github.io/BioBots/growth.html) | Cell proliferation tracking |\n| [🔬 Passage Tracker](https://sauravbhattacharya001.github.io/BioBots/passage.html) | Cell passage tracking and lineage management |\n| [🧬 Western Blot](https://sauravbhattacharya001.github.io/BioBots/western-blot.html) | Western blot analysis and quantification |\n| [🧪 Flow Cytometry](https://sauravbhattacharya001.github.io/BioBots/flow-cytometry.html) | Flow cytometry data analysis and gating |\n| [⚡ Electroporation Calculator](https://sauravbhattacharya001.github.io/BioBots/electroporation.html) | Electroporation protocol parameters |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🏭 Lab Operations \u0026 Management (16 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [💰 Cost Estimator](https://sauravbhattacharya001.github.io/BioBots/cost.html) | Per-print costs with materials, machine time, batch scaling |\n| [📊 Queue Manager](https://sauravbhattacharya001.github.io/BioBots/queue.html) | Print job scheduling and queue management |\n| [🏭 Batch Analytics](https://sauravbhattacharya001.github.io/BioBots/batch.html) | Batch processing queue and statistics |\n| [📊 Yield Analyzer](https://sauravbhattacharya001.github.io/BioBots/yield.html) | Print yield analysis and optimization |\n| [🌡️ Environment Monitor](https://sauravbhattacharya001.github.io/BioBots/environment.html) | Lab conditions — temp, humidity, CO₂, particulates |\n| [🛡️ Maintenance](https://sauravbhattacharya001.github.io/BioBots/maintenance.html) | Equipment maintenance scheduling and alerts |\n| [🚀 Fleet Commander](https://sauravbhattacharya001.github.io/BioBots/fleet-commander.html) | Multi-printer fleet management dashboard |\n| [🏭 Capacity Planner](https://sauravbhattacharya001.github.io/BioBots/capacity-planner.html) | Lab capacity planning and resource forecasting |\n| [📦 Sample Registry](https://sauravbhattacharya001.github.io/BioBots/samples.html) | Sample tracking and inventory management |\n| [📋 Sample Tracking](https://sauravbhattacharya001.github.io/BioBots/tracking.html) | Sample tracking board with status |\n| [♻️ Waste Tracker](https://sauravbhattacharya001.github.io/BioBots/waste.html) | Material waste logging and trends |\n| [⏰ Expiry Watchdog](https://sauravbhattacharya001.github.io/BioBots/expiry-watchdog.html) | Reagent expiry tracking and alerting |\n| [🧹 Sterilization](https://sauravbhattacharya001.github.io/BioBots/sterilization.html) | Sterilization method selection and cycles |\n| [📅 Timeline Planner](https://sauravbhattacharya001.github.io/BioBots/timeline.html) | Bioprint timeline planning and scheduling |\n| [📅 Smart Scheduler](https://sauravbhattacharya001.github.io/BioBots/scheduler.html) | Intelligent experiment scheduling |\n| [⏱️ Lab Timer](https://sauravbhattacharya001.github.io/BioBots/timer.html) | Multi-channel lab timer for protocol timing |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📝 Compliance, Quality \u0026 Reporting (12 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [📋 Print Report](https://sauravbhattacharya001.github.io/BioBots/report.html) | Formatted, printable lab reports |\n| [📓 Print Logbook](https://sauravbhattacharya001.github.io/BioBots/logbook.html) | Lab notebook — notes, tags, flags, search, export |\n| [📊 Print Profile](https://sauravbhattacharya001.github.io/BioBots/profile.html) | Individual print quality profiling with scoring |\n| [📈 Evolution Tracker](https://sauravbhattacharya001.github.io/BioBots/evolution.html) | Print quality evolution over time |\n| [🔬 Failure Diagnostics](https://sauravbhattacharya001.github.io/BioBots/failure.html) | Root cause analysis and failure mode detection |\n| [🔧 Troubleshooter](https://sauravbhattacharya001.github.io/BioBots/troubleshooter.html) | Interactive bioprint troubleshooter |\n| [✅ GLP Compliance](https://sauravbhattacharya001.github.io/BioBots/compliance.html) | Good Laboratory Practice compliance checks |\n| [🔗 Chain of Custody](https://sauravbhattacharya001.github.io/BioBots/chain-of-custody.html) | Sample chain-of-custody tracking and audit trail |\n| [🔍 Data Integrity](https://sauravbhattacharya001.github.io/BioBots/integrity.html) | Data integrity auditing and validation |\n| [🛡️ Safety Checklist](https://sauravbhattacharya001.github.io/BioBots/safety-checklist.html) | Lab safety checklist and compliance |\n| [🚨 Incident Report](https://sauravbhattacharya001.github.io/BioBots/incident-report.html) | Lab incident reporting and pattern analysis |\n| [⚠️ Risk Assessor](https://sauravbhattacharya001.github.io/BioBots/risk-assessor.html) | Experiment risk assessment and mitigation |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🤖 Automation \u0026 Advanced (7 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [🤖 Print Quality Autopilot](https://sauravbhattacharya001.github.io/BioBots/autopilot.html) | Autonomous print quality monitoring and adjustment |\n| [📝 Recommender](https://sauravbhattacharya001.github.io/BioBots/recommender.html) | Parameter recommendation engine |\n| [🔄 Workflow Orchestrator](https://sauravbhattacharya001.github.io/BioBots/orchestrator.html) | Lab workflow orchestration and automation |\n| [⚙️ Workflow Builder](https://sauravbhattacharya001.github.io/BioBots/workflow-builder.html) | Visual workflow builder for experiment pipelines |\n| [🔬 Experiment Replicator](https://sauravbhattacharya001.github.io/BioBots/replicator.html) | Experiment replication planning and tracking |\n| [🧠 Knowledge Graph](https://sauravbhattacharya001.github.io/BioBots/knowledge-graph.html) | Lab knowledge graph for experiment insights |\n| [⚠️ Early Warning](https://sauravbhattacharya001.github.io/BioBots/early-warning.html) | Contamination early warning and detection system |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🔧 Utilities \u0026 Reference (12 tools)\u003c/strong\u003e\u003c/summary\u003e\n\n| Tool | Description |\n|------|-------------|\n| [📋 Data Table](https://sauravbhattacharya001.github.io/BioBots/table.html) | Searchable, sortable, filterable data browser with CSV export |\n| [🧫 Wellplate Analyzer](https://sauravbhattacharya001.github.io/BioBots/wellplate.html) | Performance breakdown by wellplate format |\n| [🧫 Plate Designer](https://sauravbhattacharya001.github.io/BioBots/plate-designer.html) | Plate layout designer for experiment planning |\n| [🔄 Unit Converter](https://sauravbhattacharya001.github.io/BioBots/unit-converter.html) | Bioprinting unit converter |\n| [📖 Glossary](https://sauravbhattacharya001.github.io/BioBots/glossary.html) | Bioprinting terminology reference |\n| [🎬 Simulator](https://sauravbhattacharya001.github.io/BioBots/simulator.html) | Print timeline simulator |\n| [🧬 Print Fingerprint](https://sauravbhattacharya001.github.io/BioBots/fingerprint.html) | Print DNA fingerprinting for unique run identification |\n| [🎓 Training Tracker](https://sauravbhattacharya001.github.io/BioBots/training.html) | Lab personnel training and certification tracking |\n| [🔍 Search Hub](https://sauravbhattacharya001.github.io/BioBots/hub.html) | Unified search and navigation across all tools |\n| [🔌 API Explorer](https://sauravbhattacharya001.github.io/BioBots/api.html) | Interactive REST API documentation and testing |\n| [📚 Developer Guide](https://sauravbhattacharya001.github.io/BioBots/guide.html) | Setup, testing, and contributing reference |\n| [🏛️ Architecture](https://sauravbhattacharya001.github.io/BioBots/architecture.html) | System architecture diagram |\n\n\u003c/details\u003e\n\n---\n\n## 📦 SDK — npm Package\n\nThe `@sauravbhattacharya001/biobots` package ships **80 factory functions** for bioprinting computation — material calculations, rheology modeling, cell viability estimation, GCode analysis, and more.\n\n```bash\nnpm install @sauravbhattacharya001/biobots\n```\n\nAll modules are **lazy-loaded** — only the factories you call are loaded from disk, keeping `require()` startup fast.\n\n### Quick Examples\n\n```js\nconst biobots = require('@sauravbhattacharya001/biobots');\n\n// Material usage estimation\nconst calc = biobots.createMaterialCalculator();\nconst usage = calc.calculateUsage({\n  wellplate: 24, layerHeight: 0.2, layerNum: 10,\n  materialKey: 'alginate', infillPercent: 80, wastePercent: 15\n});\nconsole.log(usage.totalVolumeMl, usage.estimatedCost);\n\n// Rheology modeling (Power Law)\nconst rheo = biobots.createRheologyModeler();\nconst viscosity = rheo.powerLaw(100, { K: 50, n: 0.4 }); // η at γ̇ = 100 s⁻¹\nconst window = rheo.printabilityWindow({ K: 50, n: 0.4 });\n\n// Cell viability estimation\nconst viability = biobots.createViabilityEstimator();\nconst result = viability.estimate({\n  shearStress: 5.0,   // kPa\n  duration: 120,       // seconds\n  cellType: 'HeLa'\n});\nconsole.log(result.estimatedViability); // percentage\n\n// GCode toolpath analysis\nconst gcode = biobots.createGCodeAnalyzer();\nconst analysis = gcode.analyze('G1 X10 Y20 Z0.2 E5 F1200\\nG1 X30 Y20');\nconsole.log(analysis.totalDistance, analysis.layerCount);\n\n// Discover all available factories\nconsole.log(biobots.listFactories()); // sorted array of 80 names\nconsole.log(biobots.factoryCount);     // 80\n```\n\n### Factory Categories\n\n| Category | Factories | Examples |\n|----------|-----------|----------|\n| **Material Science** | 12 | `createMaterialCalculator`, `createBioinkMixer`, `createCompatibilityMatrix`, `createShelfLifeManager` |\n| **Print Engineering** | 10 | `createGCodeAnalyzer`, `createScaffoldCalculator`, `createNozzleAdvisor`, `createRecipeBuilder` |\n| **Cell Biology** | 8 | `createViabilityEstimator`, `createCellSeedingCalculator`, `createPassageTracker`, `createGrowthCurveAnalyzer` |\n| **Rheology \u0026 Physics** | 5 | `createRheologyModeler`, `createCrosslinkAnalyzer`, `createElectroporationCalculator` |\n| **Lab Operations** | 16 | `createLabInventoryManager`, `createSmartReorderAdvisor`, `createWasteTracker`, `createEnvironmentalMonitor`, `createSterilityAssurance` |\n| **Quality \u0026 Analysis** | 12 | `createPrintQualityScorer`, `createYieldAnalyzer`, `createCapabilityAnalyzer`, `createDriftDetector` |\n| **Data \u0026 Export** | 8 | `createDataExporter`, `createPrintSessionLogger`, `createSampleTracker`, `createDilutionCalculator` |\n| **Automation** | 10 | `createProtocolGenerator`, `createJobEstimator`, `createMediaPrepCalculator`, `createCentrifugeCalculator` |\n\n---\n\n## 📡 REST API\n\nThe ASP.NET Web API reads bioprinting data from a JSON dataset and exposes RESTful endpoints for statistical queries.\n\n### Endpoint Pattern\n\n```\nGET /api/prints/{metric}/{comparison}/{value}\n```\n\n### Metrics\n\n| Metric | Type | Description |\n|--------|------|-------------|\n| `livePercent` | double | Cell viability — % alive (live/dead imaging) |\n| `deadPercent` | double | Cell mortality — % dead |\n| `elasticity` | double | Structural rigidity (kPa) |\n| `cl_duration` | int | Photocrosslinking duration (ms) |\n| `cl_intensity` | int | Photocrosslinking light intensity (%) |\n| `extruder1` / `extruder2` | double | Extruder pressure at print time |\n| `layerHeight` | double | Height per layer (mm) |\n| `layerNum` | int | Total layer count |\n| `wellplate` | int | Wellplate type |\n| `serial` | int | BioBot 1 serial number |\n\n### Comparisons \u0026 Aggregations\n\n| Comparison | Description |\n|------------|-------------|\n| `greater` / `lesser` / `equal` | Count where metric matches condition |\n\nPass `Maximum`, `Minimum`, or `Average` as the value for aggregation queries:\n\n```bash\n# Prints with \u003e50% cell viability\nGET /api/prints/livePercent/greater/50\n\n# Maximum layer count\nGET /api/prints/layerNum/greater/Maximum\n\n# Average elasticity\nGET /api/prints/elasticity/greater/Average\n```\n\n---\n\n## 🏗️ Architecture\n\n```\nBioBots/\n├── docs/                      # 87 client-side analysis tools (GitHub Pages)\n│   ├── shared/                # 80 SDK computation modules\n│   ├── index.html             # Dashboard entry point\n│   └── *.html                 # Individual tool pages\n├── Try/                       # ASP.NET Web API backend\n│   ├── Controllers/\n│   │   └── PrintsController.cs    # REST API with 11 metric endpoints\n│   ├── Models/\n│   │   └── Print.cs               # Data models\n│   └── Web.config\n├── __tests__/                 # 146 Jest test files\n├── tests/                     # Additional test modules\n├── src/                       # Python analysis scripts\n├── index.js                   # npm SDK entry — lazy-loaded factory manifest\n├── index.d.ts                 # TypeScript type definitions\n├── bioprint-data.json         # Sample dataset\n└── BioBotsTool.sln            # .NET solution file\n```\n\n### Key Design Decisions\n\n- **Thread-safe caching** — Double-checked locking for concurrent request safety\n- **File-watch reload** — Checks `LastWriteTimeUtc` on each request; re-parses only when changed\n- **Null-safe filtering** — Records with missing nested objects are skipped with trace warnings\n- **Float equality** — Epsilon-based comparison (`1e-9`) for IEEE 754 precision\n- **Lazy SDK loading** — Factory modules loaded on first access, not at `require()` time\n\n---\n\n## 🔧 Development\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org/) ≥ 18 (for SDK and tests)\n- [Visual Studio 2015+](https://visualstudio.microsoft.com/) with ASP.NET workload (for REST API)\n- .NET Framework 4.x (for REST API)\n\n### Running Tests\n\n```bash\nnpm install\n\n# Full suite with coverage\nnpm test\n\n# Watch mode\nnpx jest --watch\n\n# Single file\nnpx jest __tests__/calculator.test.js\n\n# Coverage thresholds (branches: 60%, functions/lines/statements: 70%)\nnpm run coverage:check\n```\n\n### Running the REST API\n\n1. Open `BioBotsTool.sln` in Visual Studio\n2. Press \u003ckbd\u003eF5\u003c/kbd\u003e to start the development server\n3. Navigate to `http://localhost:{port}/index.html`\n\n### Previewing Analysis Tools Locally\n\n```bash\nnpx http-server docs -p 8000\n# Open http://localhost:8000\n```\n\n### Custom Data File\n\nAdd to `Web.config`:\n```xml\n\u003cappSettings\u003e\n  \u003cadd key=\"DataFilePath\" value=\"C:\\path\\to\\your\\bioprint-data.json\" /\u003e\n\u003c/appSettings\u003e\n```\n\nThe data file is watched — edits are picked up automatically.\n\n---\n\n## 🚀 Deployment\n\n### Docker\n\n```bash\ndocker pull ghcr.io/sauravbhattacharya001/biobots-tool:latest\ndocker run -p 8080:80 ghcr.io/sauravbhattacharya001/biobots-tool:latest\n```\n\n### NuGet (GitHub Packages)\n\nThe `BioBots.Models` package provides data model classes for .NET projects:\n\n```bash\ndotnet nuget add source https://nuget.pkg.github.com/sauravbhattacharya001/index.json \\\n  --name github-biobots --username YOUR_GITHUB_USERNAME --password YOUR_GITHUB_PAT\n\ndotnet add package BioBots.Models\n```\n\n---\n\n## ❓ Troubleshooting\n\n| Problem | Solution |\n|---------|----------|\n| API returns empty results | Verify `bioprint-data.json` exists and is valid JSON |\n| Analysis tools show \"No data\" | Tools load `bioprint-data.json` via relative path — ensure the file is present |\n| Tests fail with `document is not defined` | Run `npm install` — jsdom is required for DOM-dependent tests |\n| Docker container won't start | Requires Windows containers (`.NET Framework 4.x`) — use `--isolation=hyperv` on Win 10/11 |\n| NuGet auth fails | GitHub Packages requires a PAT with `read:packages` scope |\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines, [ARCHITECTURE.md](ARCHITECTURE.md) for system design, or the [Developer Guide](https://sauravbhattacharya001.github.io/BioBots/guide.html) for setup instructions.\n\n## 📄 License\n\n[MIT](LICENSE) — Saurav Bhattacharya\n\n## 👤 Author\n\n**Saurav Bhattacharya** — [@sauravbhattacharya001](https://github.com/sauravbhattacharya001)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsauravbhattacharya001%2Fbiobots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsauravbhattacharya001%2Fbiobots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsauravbhattacharya001%2Fbiobots/lists"}