A3M Combiner¶
Merges up to five A3M MSA dictionaries into a single combined A3M output. Optionally prefixes chain IDs to avoid collisions and guarantees unique keys by auto-suffixing duplicates.

Usage¶
Use this node to aggregate multiple multiple-sequence alignments (MSAs) prepared separately into one combined A3M input for downstream protein modeling steps. Connect any subset of the a3m_1–a3m_5 inputs; enable prefix_chains to automatically namespace chain IDs per input source.
Inputs¶
| Field | Required | Type | Description | Example | 
|---|---|---|---|---|
| a3m_1 | False | A3M | First A3M dictionary to include. Keys are chain IDs; values are A3M text for that chain. | {'A': '>seq1\nAAAA\n>seq2\nAA-A'} | 
| a3m_2 | False | A3M | Second A3M dictionary to include. | {'B': '>seq1\nBBBB\n>seq2\nB-BB'} | 
| a3m_3 | False | A3M | Third A3M dictionary to include. | {'C': '>seq1\nCCCC'} | 
| a3m_4 | False | A3M | Fourth A3M dictionary to include. | {'A': '>seq1\nAAAA'} | 
| a3m_5 | False | A3M | Fifth A3M dictionary to include. | {'D': '>seq1\nDDDD'} | 
| prefix_chains | False | BOOLEAN | If true, prefixes chain IDs with the input index (A3M1_, A3M2_, etc.) to avoid collisions. When false, collisions are resolved by appending _1, _2, ... | True | 
Outputs¶
| Field | Type | Description | Example | 
|---|---|---|---|
| combined_a3m | A3M | A single A3M dictionary containing all merged entries with unique chain IDs. | {'A3M1_A': '>seq1\nAAAA\n>seq2\nAA-A', 'A3M2_B': '>seq1\nBBBB'} | 
Important Notes¶
- At least one A3M input is required: The node raises an error if no valid A3M dictionaries are provided.
- Input format: Each A3M input must be a dictionary mapping chain IDs (e.g., A, B) to A3M-formatted strings.
- Chain ID conflicts: If prefix_chains is true, chain IDs are prefixed (A3M{i}_) and any remaining conflicts get numeric suffixes. If false, conflicts trigger a warning and are resolved by auto-appending _1, _2, ...
- Partial inputs allowed: You can connect any subset of a3m_1–a3m_5; disconnected inputs are ignored.
- Non-dict values are ignored: Inputs that are not dictionaries are skipped without combining.
Troubleshooting¶
- Error: 'At least one A3M input is required': Connect at least one valid A3M dictionary to a3m_1–a3m_5.
- Unexpected chain overwrites or duplicates: Enable prefix_chains to automatically namespace chain IDs per input and avoid collisions.
- Wrong input type (e.g., string instead of dict): Ensure each A3M input is a dictionary like {"A": ""}. Non-dicts are ignored. 
- Missing chains in output: Verify the input keys are the expected chain IDs and that each value contains non-empty A3M text.
Example Pipelines¶
