From 7329942c282fab5e0a28df7ab5d3b4c3cbd1c086 Mon Sep 17 00:00:00 2001 From: ghasn43 Date: Tue, 16 Dec 2025 07:21:34 +0400 Subject: [PATCH 1/5] Add nanobio tool namespace Added module docstring with contributor and license information. --- .../tools/src/tooluniverse/tools/nanobio/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/tooluniverse/tools/src/tooluniverse/tools/nanobio/__init__.py diff --git a/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/__init__.py b/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/__init__.py new file mode 100644 index 00000000..d75017ef --- /dev/null +++ b/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/__init__.py @@ -0,0 +1,7 @@ +""" +NanoBio tools for early-stage nanotechnology and biotechnology research. + +Contributor: Ghassan Muammar +Affiliation: Experts Group FZE +License: Apache-2.0 +""" From c1830f5b47daac4775d98cdd437b82b12633cddd Mon Sep 17 00:00:00 2001 From: ghasn43 Date: Tue, 16 Dec 2025 07:22:37 +0400 Subject: [PATCH 2/5] Implement NanoBio Toxicity Estimator Tool This file implements the NanoBio Toxicity Estimator Tool, which estimates the toxicity risk of nanoparticles based on size, surface charge, and material composition. It includes a registration decorator and defines the tool's parameters and scoring logic. --- .../tools/nanobio/toxicity_estimator.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/tooluniverse/tools/src/tooluniverse/tools/nanobio/src/tooluniverse/tools/nanobio/toxicity_estimator.py diff --git a/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/src/tooluniverse/tools/nanobio/toxicity_estimator.py b/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/src/tooluniverse/tools/nanobio/toxicity_estimator.py new file mode 100644 index 00000000..13cf3f9b --- /dev/null +++ b/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/src/tooluniverse/tools/nanobio/toxicity_estimator.py @@ -0,0 +1,75 @@ +""" +NanoBio Toxicity Estimator Tool + +Author: Ghassan Muammar +Affiliation: Experts Group FZE +License: Apache-2.0 + +Early-stage in-silico toxicity estimation for nanoparticles based on +size (nm), surface charge (mV), and core material. Intended for +research and preclinical screening only (non-clinical use). +""" + +from tooluniverse.tool_registry import register_tool +from tooluniverse.base_tool import BaseTool + + +@register_tool( + "NanoBioToxicityEstimator", + config={ + "name": "nanobio_toxicity_estimator", + "type": "NanoBioToxicityEstimator", + "description": ( + "Estimates early-stage nanoparticle toxicity risk using particle " + "size (nm), surface charge (mV), and material composition. " + "Designed for nanomedicine research and preclinical screening." + ), + "parameter": { + "type": "object", + "properties": { + "size_nm": {"type": "number", "description": "Nanoparticle diameter in nm"}, + "charge_mV": {"type": "number", "description": "Surface zeta potential in mV"}, + "material": {"type": "string", "description": "Core material (e.g., lipid, polymer, gold)"} + }, + "required": ["size_nm", "charge_mV", "material"] + } + } +) +class NanoBioToxicityEstimator(BaseTool): + def run(self, arguments=None, **kwargs): + if arguments is None: + arguments = kwargs + + size_nm = float(arguments["size_nm"]) + charge_mV = float(arguments["charge_mV"]) + material = str(arguments["material"]).strip().lower() + + score = 0.0 + reasons = [] + + if size_nm < 50: + score += 2.5 + reasons.append("size < 50 nm") + elif size_nm > 200: + score += 3.0 + reasons.append("size > 200 nm") + + if abs(charge_mV) > 30: + score += 2.5 + reasons.append("|charge| > 30 mV") + + if material in ["gold", "silver"]: + score += 2.0 + reasons.append(f"material = {material}") + + score = max(0.0, min(score, 10.0)) + + risk = "Low" if score < 3 else ("Medium" if score < 6 else "High") + + return { + "toxicity_score": round(score, 2), + "risk_level": risk, + "reasons": reasons, + "confidence": 0.5, + "success": True + } From b15a95475cb94b3b893648eec308e1f13bd18f71 Mon Sep 17 00:00:00 2001 From: ghasn43 Date: Tue, 16 Dec 2025 07:28:47 +0400 Subject: [PATCH 3/5] Add docstring to nanobio module Add module docstring with contributor and license info. --- src/tooluniverse/tools/nanobio/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/tooluniverse/tools/nanobio/__init__.py diff --git a/src/tooluniverse/tools/nanobio/__init__.py b/src/tooluniverse/tools/nanobio/__init__.py new file mode 100644 index 00000000..dbce0b85 --- /dev/null +++ b/src/tooluniverse/tools/nanobio/__init__.py @@ -0,0 +1,7 @@ +""" +NanoBio tools for nanotechnology and biotechnology research. + +Contributor: Ghassan Muammar +Affiliation: Experts Group FZE +License: Apache-2.0 +""" From 9d4c7771bc98fdecebc272700d7c407d6fc776ed Mon Sep 17 00:00:00 2001 From: ghasn43 Date: Tue, 16 Dec 2025 07:30:50 +0400 Subject: [PATCH 4/5] Add NanoBio Toxicity Estimator Tool This tool estimates the toxicity risk of nanoparticles based on size, surface charge, and material composition, designed for nanomedicine research. --- .../tools/nanobio/toxicity_estimator.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/tooluniverse/tools/nanobio/toxicity_estimator.py diff --git a/src/tooluniverse/tools/nanobio/toxicity_estimator.py b/src/tooluniverse/tools/nanobio/toxicity_estimator.py new file mode 100644 index 00000000..13cf3f9b --- /dev/null +++ b/src/tooluniverse/tools/nanobio/toxicity_estimator.py @@ -0,0 +1,75 @@ +""" +NanoBio Toxicity Estimator Tool + +Author: Ghassan Muammar +Affiliation: Experts Group FZE +License: Apache-2.0 + +Early-stage in-silico toxicity estimation for nanoparticles based on +size (nm), surface charge (mV), and core material. Intended for +research and preclinical screening only (non-clinical use). +""" + +from tooluniverse.tool_registry import register_tool +from tooluniverse.base_tool import BaseTool + + +@register_tool( + "NanoBioToxicityEstimator", + config={ + "name": "nanobio_toxicity_estimator", + "type": "NanoBioToxicityEstimator", + "description": ( + "Estimates early-stage nanoparticle toxicity risk using particle " + "size (nm), surface charge (mV), and material composition. " + "Designed for nanomedicine research and preclinical screening." + ), + "parameter": { + "type": "object", + "properties": { + "size_nm": {"type": "number", "description": "Nanoparticle diameter in nm"}, + "charge_mV": {"type": "number", "description": "Surface zeta potential in mV"}, + "material": {"type": "string", "description": "Core material (e.g., lipid, polymer, gold)"} + }, + "required": ["size_nm", "charge_mV", "material"] + } + } +) +class NanoBioToxicityEstimator(BaseTool): + def run(self, arguments=None, **kwargs): + if arguments is None: + arguments = kwargs + + size_nm = float(arguments["size_nm"]) + charge_mV = float(arguments["charge_mV"]) + material = str(arguments["material"]).strip().lower() + + score = 0.0 + reasons = [] + + if size_nm < 50: + score += 2.5 + reasons.append("size < 50 nm") + elif size_nm > 200: + score += 3.0 + reasons.append("size > 200 nm") + + if abs(charge_mV) > 30: + score += 2.5 + reasons.append("|charge| > 30 mV") + + if material in ["gold", "silver"]: + score += 2.0 + reasons.append(f"material = {material}") + + score = max(0.0, min(score, 10.0)) + + risk = "Low" if score < 3 else ("Medium" if score < 6 else "High") + + return { + "toxicity_score": round(score, 2), + "risk_level": risk, + "reasons": reasons, + "confidence": 0.5, + "success": True + } From 8f0840a44f78d3bf65a7ec29039e96efae7e2360 Mon Sep 17 00:00:00 2001 From: ghasn43 Date: Tue, 16 Dec 2025 07:35:42 +0400 Subject: [PATCH 5/5] Delete src/tooluniverse/tools/src/tooluniverse/tools directory --- .../tooluniverse/tools/nanobio/__init__.py | 7 -- .../tools/nanobio/toxicity_estimator.py | 75 ------------------- 2 files changed, 82 deletions(-) delete mode 100644 src/tooluniverse/tools/src/tooluniverse/tools/nanobio/__init__.py delete mode 100644 src/tooluniverse/tools/src/tooluniverse/tools/nanobio/src/tooluniverse/tools/nanobio/toxicity_estimator.py diff --git a/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/__init__.py b/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/__init__.py deleted file mode 100644 index d75017ef..00000000 --- a/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -""" -NanoBio tools for early-stage nanotechnology and biotechnology research. - -Contributor: Ghassan Muammar -Affiliation: Experts Group FZE -License: Apache-2.0 -""" diff --git a/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/src/tooluniverse/tools/nanobio/toxicity_estimator.py b/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/src/tooluniverse/tools/nanobio/toxicity_estimator.py deleted file mode 100644 index 13cf3f9b..00000000 --- a/src/tooluniverse/tools/src/tooluniverse/tools/nanobio/src/tooluniverse/tools/nanobio/toxicity_estimator.py +++ /dev/null @@ -1,75 +0,0 @@ -""" -NanoBio Toxicity Estimator Tool - -Author: Ghassan Muammar -Affiliation: Experts Group FZE -License: Apache-2.0 - -Early-stage in-silico toxicity estimation for nanoparticles based on -size (nm), surface charge (mV), and core material. Intended for -research and preclinical screening only (non-clinical use). -""" - -from tooluniverse.tool_registry import register_tool -from tooluniverse.base_tool import BaseTool - - -@register_tool( - "NanoBioToxicityEstimator", - config={ - "name": "nanobio_toxicity_estimator", - "type": "NanoBioToxicityEstimator", - "description": ( - "Estimates early-stage nanoparticle toxicity risk using particle " - "size (nm), surface charge (mV), and material composition. " - "Designed for nanomedicine research and preclinical screening." - ), - "parameter": { - "type": "object", - "properties": { - "size_nm": {"type": "number", "description": "Nanoparticle diameter in nm"}, - "charge_mV": {"type": "number", "description": "Surface zeta potential in mV"}, - "material": {"type": "string", "description": "Core material (e.g., lipid, polymer, gold)"} - }, - "required": ["size_nm", "charge_mV", "material"] - } - } -) -class NanoBioToxicityEstimator(BaseTool): - def run(self, arguments=None, **kwargs): - if arguments is None: - arguments = kwargs - - size_nm = float(arguments["size_nm"]) - charge_mV = float(arguments["charge_mV"]) - material = str(arguments["material"]).strip().lower() - - score = 0.0 - reasons = [] - - if size_nm < 50: - score += 2.5 - reasons.append("size < 50 nm") - elif size_nm > 200: - score += 3.0 - reasons.append("size > 200 nm") - - if abs(charge_mV) > 30: - score += 2.5 - reasons.append("|charge| > 30 mV") - - if material in ["gold", "silver"]: - score += 2.0 - reasons.append(f"material = {material}") - - score = max(0.0, min(score, 10.0)) - - risk = "Low" if score < 3 else ("Medium" if score < 6 else "High") - - return { - "toxicity_score": round(score, 2), - "risk_level": risk, - "reasons": reasons, - "confidence": 0.5, - "success": True - }