Setting up a Multi-Branch Project
This page walks through configuring a project that uses multiple config sets to run parallel processing branches — for example, two filter frequency bands or two MWCS window lengths.
For the conceptual background, see Workflow Concepts (MSNoise 2.x).
Default project (one branch)
A freshly initialised project has one config set per category:
cc_1, filter_1, stack_1, refstack_1, mwcs_1, etc.
The whole pipeline runs as a single linear chain.
Adding a second filter band
Create the second config set and edit its parameters:
msnoise config create_set filter msnoise config list_sets # should show filter_1 and filter_2 msnoise config set filter.2.freqmin 1.0 msnoise config set filter.2.freqmax 5.0
Apply the new topology to the database:
msnoise db upgrade
This creates
filter_2as a new WorkflowStep and wires it:cc_1 → filter_2 → stack_1andcc_1 → filter_2 → refstack_1(siblings)Run the CC step as usual. Both filter branches are processed:
msnoise cc compute msnoise cc stack msnoise cc stack_refstack msnoise cc dtt compute_mwcs …
Output files for
filter_1land under:OUTPUT/preprocess_1/cc_1/filter_1/stack_1/…
Output files for
filter_2land under:OUTPUT/preprocess_1/cc_1/filter_2/stack_1/…
Adding a second MWCS parameterisation
msnoise config create_set mwcs
msnoise config copy_set mwcs 1 mwcs 2 # start from set 1's values
msnoise config set mwcs.2.freqmin 1.0
msnoise config set mwcs.2.freqmax 5.0
msnoise config set mwcs.2.mwcs_wlen 5
msnoise db upgrade
Both mwcs_1 and mwcs_2 will run on every refstack branch.
Checking what was created
msnoise config list_sets # all categories and set numbers
msnoise admin # web UI → Workflow → Steps
From Python:
from msnoise.plugins import connect, get_workflow_steps
db = connect()
for s in get_workflow_steps(db):
print(f"{s.step_name:25s} cat={s.category} set={s.set_number}")
Resetting jobs after a config change
If you add a new config set after data has already been processed, reset the relevant steps so the new branch gets processed:
msnoise reset stack_1 --all # reset all stack jobs to T
msnoise new_jobs --after cc # re-propagate from cc → stack → …