108 lines
3.7 KiB
Markdown
108 lines
3.7 KiB
Markdown
|
|
# Documentation
|
|
- Class name: WeightScheduleExtend
|
|
- Category: KJNodes
|
|
- Output node: False
|
|
|
|
WeightScheduleExtend节点旨在扩展和转换不同类型的数值列表或序列。它支持多种输入类型,并能够以指定格式输出扩展或转换后的值,从而在计算工作流中便于数据的操作和分析。
|
|
|
|
# Input types
|
|
## Required
|
|
- input_values_i
|
|
- 这是节点的主要输入,但其具体格式和内容未知。它可能是一个需要被扩展或转换的数值列表或序列。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: unknown
|
|
- output_type
|
|
- 指定扩展或转换后的数据的期望输出格式。这为结果的使用或进一步处理提供了灵活性。
|
|
- Comfy dtype: COMBO[STRING]
|
|
- Python dtype: str
|
|
|
|
# Output types
|
|
- float
|
|
- 输出可以是单个浮点值或浮点值集合,具体取决于所执行的操作和指定的输出类型。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
|
|
|
|
## Usage tips
|
|
- Infra type: `CPU`
|
|
- Common nodes: unknown
|
|
|
|
|
|
## Source code
|
|
```python
|
|
class WeightScheduleExtend:
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {
|
|
"required": {
|
|
"input_values_1": ("FLOAT", {"default": 0.0, "forceInput": True}),
|
|
"input_values_2": ("FLOAT", {"default": 0.0, "forceInput": True}),
|
|
"output_type": (
|
|
[
|
|
'match_input',
|
|
'list',
|
|
'pandas series',
|
|
'tensor',
|
|
],
|
|
{
|
|
"default": 'match_input'
|
|
}),
|
|
},
|
|
|
|
}
|
|
RETURN_TYPES = ("FLOAT",)
|
|
FUNCTION = "execute"
|
|
CATEGORY = "KJNodes"
|
|
DESCRIPTION = """
|
|
Extends, and converts if needed, different value lists/series
|
|
"""
|
|
|
|
def detect_input_type(self, input_values):
|
|
import pandas as pd
|
|
if isinstance(input_values, list):
|
|
return 'list'
|
|
elif isinstance(input_values, pd.Series):
|
|
return 'pandas series'
|
|
elif isinstance(input_values, torch.Tensor):
|
|
return 'tensor'
|
|
else:
|
|
raise ValueError("Unsupported input type")
|
|
|
|
def execute(self, input_values_1, input_values_2, output_type):
|
|
import pandas as pd
|
|
input_type_1 = self.detect_input_type(input_values_1)
|
|
input_type_2 = self.detect_input_type(input_values_2)
|
|
# Convert input_values_2 to the same format as input_values_1 if they do not match
|
|
if not input_type_1 == input_type_2:
|
|
print("Converting input_values_2 to the same format as input_values_1")
|
|
if input_type_1 == 'pandas series':
|
|
# Convert input_values_2 to a pandas Series
|
|
float_values_2 = pd.Series(input_values_2)
|
|
elif input_type_1 == 'tensor':
|
|
# Convert input_values_2 to a tensor
|
|
float_values_2 = torch.tensor(input_values_2, dtype=torch.float32)
|
|
else:
|
|
print("Input types match, no conversion needed")
|
|
# If the types match, no conversion is needed
|
|
float_values_2 = input_values_2
|
|
|
|
float_values = input_values_1 + float_values_2
|
|
|
|
if output_type == 'list':
|
|
return float_values,
|
|
elif output_type == 'pandas series':
|
|
return pd.Series(float_values),
|
|
elif output_type == 'tensor':
|
|
if input_type_1 == 'pandas series':
|
|
return torch.tensor(float_values.values, dtype=torch.float32),
|
|
else:
|
|
return torch.tensor(float_values, dtype=torch.float32),
|
|
elif output_type == 'match_input':
|
|
return float_values,
|
|
else:
|
|
raise ValueError(f"Unsupported output_type: {output_type}")
|
|
|
|
```
|