Node System
Nodes are the building blocks of every Salpa workflow. Each node represents a single computational step β from reading a PDB file to running a full GROMACS simulation.
How nodes work
A node has:
- Inputs β Data it receives from upstream nodes (files, parameters, sequences)
- Outputs β Data it produces for downstream nodes
- Configuration β User-settable parameters (file paths, options, thresholds)
- Execution logic β The actual computation (Python code)
When you connect nodes on the canvas, you define a data flow pipeline. Outputs from one node become inputs to the next.
Node package structure
Every node follows a two-level architecture:
my_node/
βββ meta.toml # Metadata: name, version, category, hashtags
βββ node.py # Salpa integration (inputs, outputs, UI options)
βββ core.py # Pure science code (no Salpa dependencies)
βββ pixi.toml # Python environment (optional β triggers isolation)
βββ README.md # Documentation
βββ demo_data/ # Example input files
βββ tests/ # Unit testsWhy two files?
core.pycontains your actual computation β pure Python, no framework dependencies. You can test and run it independently.node.pywrapscore.pyfor Salpa β defines inputs, outputs, configuration UI, and execution flow.
This separation means your science code stays clean and reusable outside of Salpa.
Execution strategies
Salpa automatically selects the right execution strategy for each node:
| Strategy | When | What happens |
|---|---|---|
| In-process | No pixi.toml present | Runs directly in the worker process. Fast, no isolation. |
| Pixi subprocess | pixi.toml present | Creates an isolated Python environment and runs in a subprocess. Full dependency isolation. |
| Container | Coming soon | Docker/Podman execution for maximum portability and reproducibility. |
| HPC / SLURM | Contact for support | Remote cluster execution via SSH. Vendor-dependent configuration. |
Auto-detection: If your node directory contains a pixi.toml file, Salpa automatically uses the isolated subprocess strategy. Otherwise, it runs in-process.
Available nodes
Local nodes
Installed from the marketplace or built-in:
| Node | Category | Description |
|---|---|---|
| Hello World | Utility | Simple test node for verifying execution |
| PDB-FASTA BioPython | Analysis | Extract FASTA sequences from PDB files |
| PDB2PQR | Preparation | Add hydrogens and assign charges to PDB structures |
| GROMACS MD Run | Simulation | Run molecular dynamics with GROMACS |
| ESMFold Prediction | Structure | Local protein structure prediction with ESMFold |
| AutoDock Vina | Docking | Molecular docking simulations |
Cloud nodes
Run on remote GPU hardware (requires sign-in):
| Node | GPU | Description |
|---|---|---|
| ESMFold (Cloud) | A100 | Protein structure prediction via ESMFold |
| Boltz-2 (Cloud) | H100 | Multi-chain structure prediction via Boltz-2 |
Naming conventions
Salpa uses consistent naming across different contexts:
| Context | Convention | Example |
|---|---|---|
| Display name | Title Case with spaces | βGROMACS MD Run (Local)β |
| Package name (meta.toml) | kebab-case | gmx-mdrun-local |
| Directory name | snake_case | gmx_mdrun_local/ |
| Python class | PascalCase | GmxMdrunLocal |
Next steps
- Build Custom Nodes β Create your own computational nodes
- Cloud Computing β Run nodes on cloud GPUs
- Getting Started β Install and run your first workflow