zcbot/software-contracts/origin.analysis.v1.json

299 lines
9.8 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"capability": "origin.analysis@v1",
"display_name": "Origin 科研分析",
"default_enrollment": false,
"output_namespace": "origin_analysis",
"input_policy": {
"suffixes": [".csv", ".xlsx", ".json"],
"max_count": 1,
"max_bytes": 104857600,
"max_total_bytes": 104857600
},
"outputs": {
"project": {
"filename": "analysis.opju",
"media_type": "application/x-origin-project",
"relative_path": "analysis.opju",
"publish": true,
"required": true
},
"result_table": {
"filename": "result-table.csv",
"media_type": "text/csv",
"relative_path": "result-table.csv",
"publish": true,
"required": true
},
"result_workbook": {
"filename": "result-table.xlsx",
"media_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"relative_path": "result-table.xlsx",
"publish": true,
"required": false
},
"diagnostics": {
"filename": "diagnostics.json",
"media_type": "application/json",
"relative_path": "diagnostics.json",
"publish": true,
"required": true
},
"analysis_spec": {
"filename": "analysis-spec.json",
"media_type": "application/json",
"relative_path": ".meta/analysis-spec.json",
"publish": false,
"required": true
},
"provenance": {
"filename": "provenance.json",
"media_type": "application/json",
"relative_path": ".meta/provenance.json",
"publish": false,
"required": true
}
},
"feature_path": ["operation", "analysis", "type"],
"features": {
"data_check": "0.1.0",
"normalize": "0.1.0",
"smooth": "0.1.0",
"differentiate": "0.1.0",
"integrate": "0.1.0",
"linear_fit": "0.1.0"
},
"summary": {
"title_path": ["operation", "analysis", "title"]
},
"legacy_runtime": null,
"workspace": null,
"request_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"x-maxBytes": 65536,
"required": ["schema_version", "inputs", "operation", "outputs"],
"additionalProperties": false,
"properties": {
"schema_version": {"const": 1},
"inputs": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"required": ["key", "artifact_id"],
"additionalProperties": false,
"properties": {
"key": {"type": "string", "pattern": "^[a-z][a-z0-9_]{0,31}$"},
"artifact_id": {"type": "string", "format": "uuid"},
"selector": {
"type": "object",
"required": ["sheet"],
"additionalProperties": false,
"properties": {
"sheet": {"type": "string", "minLength": 1, "maxLength": 128}
}
}
}
}
},
"operation": {
"type": "object",
"required": ["analysis"],
"additionalProperties": false,
"properties": {
"analysis": {
"type": "object",
"required": ["type", "title", "data", "parameters"],
"additionalProperties": false,
"properties": {
"type": {
"enum": [
"data_check",
"normalize",
"smooth",
"differentiate",
"integrate",
"linear_fit"
]
},
"title": {"type": "string", "minLength": 1, "maxLength": 200},
"data": {"$ref": "#/$defs/data_binding"},
"parameters": {"type": "object"}
},
"allOf": [
{
"if": {"properties": {"type": {"const": "data_check"}}},
"then": {
"properties": {
"parameters": {"$ref": "#/$defs/data_check_parameters"}
}
}
},
{
"if": {"properties": {"type": {"const": "normalize"}}},
"then": {
"properties": {
"data": {"$ref": "#/$defs/xy_binding"},
"parameters": {"$ref": "#/$defs/normalize_parameters"}
}
}
},
{
"if": {"properties": {"type": {"const": "smooth"}}},
"then": {
"properties": {
"data": {"$ref": "#/$defs/xy_binding"},
"parameters": {"$ref": "#/$defs/smooth_parameters"}
}
}
},
{
"if": {"properties": {"type": {"const": "differentiate"}}},
"then": {
"properties": {
"data": {"$ref": "#/$defs/xy_binding"},
"parameters": {"$ref": "#/$defs/differentiate_parameters"}
}
}
},
{
"if": {"properties": {"type": {"const": "integrate"}}},
"then": {
"properties": {
"data": {"$ref": "#/$defs/xy_binding"},
"parameters": {"$ref": "#/$defs/integrate_parameters"}
}
}
},
{
"if": {"properties": {"type": {"const": "linear_fit"}}},
"then": {
"properties": {
"data": {"$ref": "#/$defs/xy_binding"},
"parameters": {"$ref": "#/$defs/linear_fit_parameters"}
}
}
}
]
}
}
},
"outputs": {
"type": "array",
"maxItems": 1,
"uniqueItems": true,
"items": {
"type": "object",
"required": ["key", "type", "format"],
"additionalProperties": false,
"properties": {
"key": {"const": "result_workbook"},
"type": {"const": "table"},
"format": {"const": "xlsx"}
}
}
}
},
"$defs": {
"data_binding": {
"type": "object",
"required": ["input"],
"additionalProperties": false,
"properties": {
"input": {"type": "string", "pattern": "^[a-z][a-z0-9_]{0,31}$"},
"x": {"type": "string", "minLength": 1, "maxLength": 128},
"y": {"type": "string", "minLength": 1, "maxLength": 128}
}
},
"xy_binding": {
"type": "object",
"required": ["input", "x", "y"],
"additionalProperties": false,
"properties": {
"input": {"type": "string", "pattern": "^[a-z][a-z0-9_]{0,31}$"},
"x": {"type": "string", "minLength": 1, "maxLength": 128},
"y": {"type": "string", "minLength": 1, "maxLength": 128}
}
},
"data_check_parameters": {
"type": "object",
"description": "数据体检始终返回诊断产物;命中 fail_on 时 diagnostics.passed=false但 Job 本身成功完成,供调用方决定是否继续分析。",
"required": ["fail_on"],
"additionalProperties": false,
"properties": {
"fail_on": {
"type": "array",
"uniqueItems": true,
"items": {
"enum": [
"missing",
"non_finite",
"duplicate_x",
"non_monotonic_x",
"uneven_spacing"
]
}
}
}
},
"normalize_parameters": {
"type": "object",
"description": "max_abs 使用最大绝对值area 使用有符号梯形积分reference 在数据范围内按 X 线性插值得到归一化除数。",
"required": ["method"],
"additionalProperties": false,
"properties": {
"method": {"enum": ["max_abs", "area", "reference"]},
"reference_x": {"type": "number"}
},
"allOf": [
{
"if": {"properties": {"method": {"const": "reference"}}},
"then": {"required": ["reference_x"]},
"else": {"not": {"required": ["reference_x"]}}
}
]
},
"smooth_parameters": {
"type": "object",
"description": "固定局部多项式平滑;窗口必须为奇数,边界使用平移后的完整窗口,不补造数据点。",
"required": ["method", "window", "polynomial_order"],
"additionalProperties": false,
"properties": {
"method": {"const": "savitzky_golay"},
"window": {"type": "integer", "minimum": 5, "maximum": 101},
"polynomial_order": {"type": "integer", "minimum": 2, "maximum": 5}
}
},
"differentiate_parameters": {
"type": "object",
"description": "使用支持非等间距 X 的二阶边界数值梯度,按 order 重复求导。",
"required": ["order"],
"additionalProperties": false,
"properties": {
"order": {"type": "integer", "enum": [1, 2]}
}
},
"integrate_parameters": {
"type": "object",
"description": "使用梯形积分输出从首个 X 开始的累计积分from/to 省略时报告完整范围积分。",
"additionalProperties": false,
"properties": {
"from": {"type": "number"},
"to": {"type": "number"}
}
},
"linear_fit_parameters": {
"type": "object",
"description": "固定最小二乘线性拟合并输出 95% t 置信区间、R²、RMSE 和残差;同时在 OPJU 中生成 Origin 原生线性拟合报告。",
"required": ["include_intercept", "confidence_level"],
"additionalProperties": false,
"properties": {
"include_intercept": {"type": "boolean"},
"confidence_level": {"const": 0.95}
}
}
}
}
}