Expert assistant for choosing and implementing scientific workflow tools - from simple joblib caching to complex orchestration with Prefect, Parsl, FireWorks, and quacc. Recommends the simplest solution that meets requirements.
Expert guidance for choosing and implementing scientific workflow management tools.
This skill helps you select the right workflow tool for your scientific computing needs, following the principle: use the simplest tool that works. It covers tools ranging from lightweight caching (joblib) to sophisticated orchestration platforms (Prefect, Parsl, FireWorks, quacc).
Install tools as needed based on your requirements:
Lightweight (start here):
pip install joblib
Medium orchestration:
# Modern Python workflows
pip install prefect
# HPC scientific computing
pip install parsl
Domain-specific:
# Materials science production
pip install fireworks
pip install atomate2
# Materials high-throughput
pip install quacc
Cache expensive computations
→ Use: joblib subskill
from joblib import Memory
memory = Memory("./cache")
@memory.cache
def expensive_function(param):
# Your computation
return result
Run parallel tasks on my laptop
→ Use: joblib subskill
from joblib import Parallel, delayed
results = Parallel(n_jobs=4)(
delayed(compute)(i) for i in range(100)
)
Build complex workflows with monitoring
→ Use: prefect subskill
from prefect import flow, task
@task
def process_data(x):
return x * 2
@flow
def my_workflow():
result = process_data(5)
return result
Run on HPC cluster (SLURM, PBS)
→ Use: parsl subskill
import parsl
from parsl.app.app import python_app
@python_app
def compute(x):
return x**2
future = compute(10)
result = future.result()
Materials science workflows
→ Use: quacc or fireworks subskill
from quacc import flow, job
# Pre-built materials science recipes
| Tool | Best For | Complexity | Scale | |------|----------|------------|-------| | joblib | Caching, simple parallel | Minimal | Single machine | | Prefect | Python DAGs, monitoring | Medium | Single → cloud | | Parsl | HPC scientific computing | Medium | Laptop → supercomputer | | FireWorks | Production materials workflows | High | HPC clusters | | quacc | Materials screening | Medium | HPC/cloud |
joblib for cachingjoblib.Parallel for simple parallelismexamples/simple_caching.pyexamples/parameter_sweep.pyexamples/materials_workflow.pySmall scale (joblib):
from joblib import Parallel, delayed
parameters = [1, 2, 3, 4, 5]
results = Parallel(n_jobs=-1)(
delayed(simulate)(p) for p in parameters
)
Large scale (Parsl on HPC):
@python_app
def simulate(param):
# Heavy computation
return result
futures = [simulate(p) for p in parameters]
results = [f.result() for f in futures]
Prefect:
from prefect import flow, task
@task
def stage1(data):
return processed_data
@task
def stage2(data):
return analyzed_data
@flow
def pipeline():
data = load_data()
processed = stage1(data)
result = stage2(processed)
return result
quacc:
from quacc.recipes.emt.core import relax_job
# High-level recipe
result = relax_job(atoms)
scientific-workflows/
├── SKILL.md # Main skill with decision tree
├── README.md # This file
├── QUICK_REFERENCE.md # Quick decision flowchart
├── subskills/
│ ├── joblib.md # Simple caching/parallel
│ ├── prefect.md # Modern orchestration
│ ├── parsl.md # HPC workflows
│ ├── fireworks.md # Materials production
│ └── quacc.md # Materials high-throughput
├── examples/
│ ├── simple_caching.py
│ ├── parameter_sweep.py
│ ├── ml_pipeline.py
│ ├── hpc_workflow.py
│ └── materials_workflow.py
└── references/
└── comparison_guide.md
Invoke specific subskills for detailed guidance:
joblib - Function caching and simple parallelismprefect - Modern Python workflow orchestrationparsl - HPC scientific computing workflowsfireworks - Production materials science workflowsquacc - High-throughput materials screeningOfficial Documentation:
Tutorials:
examples/ directorysubskills/references/This skill is designed to recommend the simplest solution that works. If you find cases where simpler tools are appropriate, please contribute!
Part of the skillz repository.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer