diff --git a/CHANGELOG.md b/CHANGELOG.md index 82b0e36..d1260a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Configure node by clicking in workflow config toml text ([#20](https://github.com/i-VRESSE/workflow-builder/issues/20)) +- Allow to configure node label in catalog ([#151](https://github.com/i-VRESSE/workflow-builder/issues/151)) ## @i-vresse/wb-core 3.2.1 - 2024-08-26 diff --git a/README.md b/README.md index 04399de..ac93525 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,7 @@ The catalog is a YAML formatted file which tells the app what nodes are availabl 4. examples: Title and link to example workflows * map with title as key and link as value 5. title: Title of the catalog +6. nodeLabel: Label of the node in the app. Default is 'Node' ### schema diff --git a/packages/core/README.md b/packages/core/README.md index 0b4c218..65f2c56 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -64,6 +64,7 @@ function App() { useEffect(() => { const catalog = { title: "Some title", + nodeLabel: "Workflow node", global: { schema: { type: "object", diff --git a/packages/core/src/CatalogPanel.stories.tsx b/packages/core/src/CatalogPanel.stories.tsx index 0f4dd66..181a478 100644 --- a/packages/core/src/CatalogPanel.stories.tsx +++ b/packages/core/src/CatalogPanel.stories.tsx @@ -108,3 +108,19 @@ export const WithExample: ComponentStory = () => { }) return } + +export const WithNodeLabel: ComponentStory = () => { + const setCatalog = useSetCatalog() + setCatalog({ + title: 'Some title', + nodeLabel: 'My custom node label', + categories: [], + global: { + schema: {}, + uiSchema: {} + }, + nodes: [], + examples: {} + }) + return +} diff --git a/packages/core/src/CatalogPanel.tsx b/packages/core/src/CatalogPanel.tsx index 8517d7a..bad363c 100644 --- a/packages/core/src/CatalogPanel.tsx +++ b/packages/core/src/CatalogPanel.tsx @@ -18,7 +18,7 @@ export const CatalogPanel = ({ children }: PropsWithChildren<{}>): JSX.Element = Catalog Loading catalog...}> {children} -

Nodes

+

{catalog.nodeLabel ?? 'Node'}s

    {catalog.categories.map((category) => ( diff --git a/packages/core/src/NodePanel.stories.tsx b/packages/core/src/NodePanel.stories.tsx index 9fae6b4..ae8ad35 100644 --- a/packages/core/src/NodePanel.stories.tsx +++ b/packages/core/src/NodePanel.stories.tsx @@ -87,3 +87,32 @@ export const NodeSelected: ComponentStory = () => { }, []) return } + +export const CustomNodeLabel: ComponentStory = () => { + const setCatalog = useSetCatalog() + // const { setEditingGlobal } = useWorkflow() + useEffect(() => { + const catalog = prepareCatalog({ + title: 'Some title', + nodeLabel: 'My custom node label', + categories: [], + global: { + schema: { + type: 'object', + properties: { + parameter1: { + type: 'string' + } + }, + additionalProperties: false + }, + uiSchema: {} + }, + nodes: [], + examples: {} + }) + setCatalog(catalog) + // toggleGlobalEdit() + }, []) + return +} diff --git a/packages/core/src/NodePanel.tsx b/packages/core/src/NodePanel.tsx index de09c61..15a402a 100644 --- a/packages/core/src/NodePanel.tsx +++ b/packages/core/src/NodePanel.tsx @@ -3,7 +3,7 @@ import React from 'react' import { FormProps } from './FormProps' import { GlobalForm } from './GlobalForm' import { NodeForm } from './NodeForm' -import { useSelectNodeIndex } from './store' +import { useCatalog, useSelectNodeIndex } from './store' /** * Panel which renders the form for the selected node or the global parameters. @@ -11,8 +11,9 @@ import { useSelectNodeIndex } from './store' */ export const NodePanel = ({ fields, widgets }: FormProps): JSX.Element => { const selectedNodeIndex = useSelectNodeIndex() + const { nodeLabel } = useCatalog() - const legend = 'Node' + const legend = nodeLabel ?? 'Node' return (
    diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 367dad1..336d801 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -53,6 +53,7 @@ export interface IGlobal { export interface ICatalog { title: string + nodeLabel?: string global: IGlobal categories: ICategory[] nodes: ICatalogNode[] diff --git a/packages/haddock3_catalog/generate_haddock3_catalog.py b/packages/haddock3_catalog/generate_haddock3_catalog.py index 3996588..9b9b89e 100755 --- a/packages/haddock3_catalog/generate_haddock3_catalog.py +++ b/packages/haddock3_catalog/generate_haddock3_catalog.py @@ -534,6 +534,7 @@ def process_level(level_fn: Path, level: str): catalog = { "title": f"Haddock 3 on {level} level", + "nodeLabel": "Module", "categories": categories, 'global': process_global(level), "nodes": nodes, diff --git a/packages/haddock3_catalog/public/catalog/haddock3.easy.yaml b/packages/haddock3_catalog/public/catalog/haddock3.easy.yaml index 798cca9..9d2764e 100644 --- a/packages/haddock3_catalog/public/catalog/haddock3.easy.yaml +++ b/packages/haddock3_catalog/public/catalog/haddock3.easy.yaml @@ -1,4 +1,5 @@ title: Haddock 3 on easy level +nodeLabel: Module categories: - name: topology description: HADDOCK3 modules to create topologies. @@ -1946,6 +1947,79 @@ nodes: tomlSchema: resdic: indexed: true +- id: sasascore + category: scoring + label: Surface accessibility scoring module. + description: HADDOCK3 module to perform accessibility scoring. + schema: + type: object + properties: + cutoff: + default: 0.4 + title: relative side chain surface accessibility cutoff + description: relative side chain surface accessibility cutoff + $comment: relative side chain surface accessibility cutoff. Residues with + a relative side chain surface accessibility below this value are considered + buried. + type: number + maximum: 1.0 + minimum: 0.0 + resdic_buried: + default: {} + title: List of residues supposed to be buried + description: List of residues supposed to be buried + $comment: resdic_buried_* is an expandable parameter. You can provide resdic_buried_A, + resdic_buried_B, resdic_buried_C, etc, where the last capital letter is + the chain identifier. + type: object + additionalProperties: + type: array + items: + type: number + format: residue + minItems: 0 + maxItems: 100 + uniqueItems: true + default: [] + propertyNames: + pattern: ^[A-Z]$ + format: chain + maxPropertiesFrom: molecules + resdic_accessible: + default: {} + title: List of residues supposed to be accessible + description: List of residues supposed to be accessible + $comment: resdic_* is an expandable parameter. You can provide resdic_accessible_A, + resdic_accessible_B, resdic_accessible_C, etc, where the last capital letter + is the chain identifier. + type: object + additionalProperties: + type: array + items: + type: number + format: residue + minItems: 0 + maxItems: 100 + uniqueItems: true + default: [] + propertyNames: + pattern: ^[A-Z]$ + format: chain + maxPropertiesFrom: molecules + required: [] + additionalProperties: false + uiSchema: + cutoff: + ui:group: scoring + resdic_buried: + ui:group: analysis + resdic_accessible: + ui:group: analysis + tomlSchema: + resdic_buried: + indexed: true + resdic_accessible: + indexed: true - id: seletop category: analysis label: Select a number of models. diff --git a/packages/haddock3_catalog/public/catalog/haddock3.expert.yaml b/packages/haddock3_catalog/public/catalog/haddock3.expert.yaml index 1379be0..66a18c4 100644 --- a/packages/haddock3_catalog/public/catalog/haddock3.expert.yaml +++ b/packages/haddock3_catalog/public/catalog/haddock3.expert.yaml @@ -1,4 +1,5 @@ title: Haddock 3 on expert level +nodeLabel: Module categories: - name: topology description: HADDOCK3 modules to create topologies. @@ -8607,6 +8608,90 @@ nodes: tomlSchema: resdic: indexed: true +- id: sasascore + category: scoring + label: Surface accessibility scoring module. + description: HADDOCK3 module to perform accessibility scoring. + schema: + type: object + properties: + cutoff: + default: 0.4 + title: relative side chain surface accessibility cutoff + description: relative side chain surface accessibility cutoff + $comment: relative side chain surface accessibility cutoff. Residues with + a relative side chain surface accessibility below this value are considered + buried. + type: number + maximum: 1.0 + minimum: 0.0 + resdic_buried: + default: {} + title: List of residues supposed to be buried + description: List of residues supposed to be buried + $comment: resdic_buried_* is an expandable parameter. You can provide resdic_buried_A, + resdic_buried_B, resdic_buried_C, etc, where the last capital letter is + the chain identifier. + type: object + additionalProperties: + type: array + items: + type: number + format: residue + minItems: 0 + maxItems: 100 + uniqueItems: true + default: [] + propertyNames: + pattern: ^[A-Z]$ + format: chain + maxPropertiesFrom: molecules + resdic_accessible: + default: {} + title: List of residues supposed to be accessible + description: List of residues supposed to be accessible + $comment: resdic_* is an expandable parameter. You can provide resdic_accessible_A, + resdic_accessible_B, resdic_accessible_C, etc, where the last capital letter + is the chain identifier. + type: object + additionalProperties: + type: array + items: + type: number + format: residue + minItems: 0 + maxItems: 100 + uniqueItems: true + default: [] + propertyNames: + pattern: ^[A-Z]$ + format: chain + maxPropertiesFrom: molecules + probe_radius: + default: 1.4 + title: Probe radius + description: Probe radius + $comment: Sets the probe radius (in Angstrom) used to compute solvent accessible + surface area. + type: number + maximum: 10.0 + minimum: 0.0 + required: [] + additionalProperties: false + uiSchema: + cutoff: + ui:group: scoring + resdic_buried: + ui:group: analysis + resdic_accessible: + ui:group: analysis + probe_radius: + ui:group: analysis + tomlSchema: + resdic_buried: + indexed: true + resdic_accessible: + indexed: true - id: seletop category: analysis label: Select a number of models. diff --git a/packages/haddock3_catalog/public/catalog/haddock3.guru.yaml b/packages/haddock3_catalog/public/catalog/haddock3.guru.yaml index d923a96..d8de697 100644 --- a/packages/haddock3_catalog/public/catalog/haddock3.guru.yaml +++ b/packages/haddock3_catalog/public/catalog/haddock3.guru.yaml @@ -1,4 +1,5 @@ title: Haddock 3 on guru level +nodeLabel: Module categories: - name: topology description: HADDOCK3 modules to create topologies. @@ -9035,6 +9036,90 @@ nodes: tomlSchema: resdic: indexed: true +- id: sasascore + category: scoring + label: Surface accessibility scoring module. + description: HADDOCK3 module to perform accessibility scoring. + schema: + type: object + properties: + cutoff: + default: 0.4 + title: relative side chain surface accessibility cutoff + description: relative side chain surface accessibility cutoff + $comment: relative side chain surface accessibility cutoff. Residues with + a relative side chain surface accessibility below this value are considered + buried. + type: number + maximum: 1.0 + minimum: 0.0 + resdic_buried: + default: {} + title: List of residues supposed to be buried + description: List of residues supposed to be buried + $comment: resdic_buried_* is an expandable parameter. You can provide resdic_buried_A, + resdic_buried_B, resdic_buried_C, etc, where the last capital letter is + the chain identifier. + type: object + additionalProperties: + type: array + items: + type: number + format: residue + minItems: 0 + maxItems: 100 + uniqueItems: true + default: [] + propertyNames: + pattern: ^[A-Z]$ + format: chain + maxPropertiesFrom: molecules + resdic_accessible: + default: {} + title: List of residues supposed to be accessible + description: List of residues supposed to be accessible + $comment: resdic_* is an expandable parameter. You can provide resdic_accessible_A, + resdic_accessible_B, resdic_accessible_C, etc, where the last capital letter + is the chain identifier. + type: object + additionalProperties: + type: array + items: + type: number + format: residue + minItems: 0 + maxItems: 100 + uniqueItems: true + default: [] + propertyNames: + pattern: ^[A-Z]$ + format: chain + maxPropertiesFrom: molecules + probe_radius: + default: 1.4 + title: Probe radius + description: Probe radius + $comment: Sets the probe radius (in Angstrom) used to compute solvent accessible + surface area. + type: number + maximum: 10.0 + minimum: 0.0 + required: [] + additionalProperties: false + uiSchema: + cutoff: + ui:group: scoring + resdic_buried: + ui:group: analysis + resdic_accessible: + ui:group: analysis + probe_radius: + ui:group: analysis + tomlSchema: + resdic_buried: + indexed: true + resdic_accessible: + indexed: true - id: seletop category: analysis label: Select a number of models.