Added Numpy Show, Numpy Squeeze, Pandas Feature Split To Numpy, Pt Show Size nodes.

This commit is contained in:
HowToSD
2025-02-28 19:29:52 -08:00
parent b22193dc2b
commit f207bcbcdd
15 changed files with 443 additions and 3 deletions
+57
View File
@@ -0,0 +1,57 @@
"""
This code is based on
https://github.com/pythongosssss/ComfyUI-Custom-Scripts/blob/main/py/show_text.py
See credit/credit.md for the full license.
"""
import numpy as np
class NumpyShow:
"""
Displays a Numpy ndarray as text.
category: Numpy
"""
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"ndarray": ("NDARRAY", {}),
},
"hidden": {
"unique_id": "UNIQUE_ID",
"extra_pnginfo": "EXTRA_PNGINFO",
},
}
INPUT_IS_LIST = True
RETURN_TYPES = ("STRING",)
FUNCTION = "notify"
OUTPUT_NODE = True
OUTPUT_IS_LIST = (True,)
CATEGORY = "Data Analysis"
def notify(self, ndarray, unique_id=None, extra_pnginfo=None):
text = None
if unique_id is not None and extra_pnginfo is not None:
if not isinstance(extra_pnginfo, list):
print("Error: extra_pnginfo is not a list")
elif (
not isinstance(extra_pnginfo[0], dict)
or "workflow" not in extra_pnginfo[0]
):
print("Error: extra_pnginfo[0] is not a dict or missing 'workflow' key")
else:
ind = ndarray[0]
text = [str(ind)] # wrap in list
workflow = extra_pnginfo[0]["workflow"]
node = next(
(x for x in workflow["nodes"] if str(x["id"]) == str(unique_id[0])),
None,
)
if node:
node["widgets_values"] = [text]
else:
print("unique_id or extra_pnginfo is None.")
return {"ui": {"text": text}, "result": (text,)}
+45
View File
@@ -0,0 +1,45 @@
from typing import Any, Dict
import numpy as np
class NumpySqueeze:
"""
Removes a dimension at the specified position in the input array if it is of size 1.
Specifying a tuple of dimensions is not supported.
category: Numpy
"""
@classmethod
def INPUT_TYPES(cls) -> Dict[str, Any]:
"""
Defines the input types for the function.
Returns:
Dict[str, Any]: A dictionary specifying required input types.
"""
return {
"required": {
"array": ("NDARRAY", {}),
"dim": ("INT", {"default": -1, "min": -1, "max": 10})
}
}
RETURN_TYPES: tuple = ("NDARRAY",)
FUNCTION: str = "f"
CATEGORY: str = "Data Analysis"
def f(self, array: np.ndarray, dim: int) -> tuple:
"""
Removes a dimension at the specified position in the input array if it is of size 1.
Args:
array (np.ndarray): Input array.
dim (int): Dimension to remove if it is of size 1.
Returns:
tuple: A tuple containing the transformed NumPy array.
"""
ar_out = np.squeeze(array, dim)
return (ar_out,)