Batch PDB¶
Combines multiple PDB inputs into a single batch dictionary. Each input is itself a dictionary mapping pdb_id to PDB content, and all keys must be unique across the batch. The node validates duplicate IDs and raises an error if a collision is found.

Usage¶
Use this node when you need to merge several PDB structures (from different loaders or generators) into one consolidated input for downstream biotech nodes that process batches. Connect pdb_1 first; additional inputs (pdb_2 to pdb_31) become available progressively after the previous one is connected.
Inputs¶
| Field | Required | Type | Description | Example |
|---|---|---|---|---|
| pdb_1 | True | PDB | First PDB dictionary to add to the batch. Must be a dict of {pdb_id: pdb_content}. | {"protein_A": "ATOM ...\nEND"} |
| pdb_2 | False | PDB | Second PDB dictionary to merge. Appears after pdb_1 is connected. | {"protein_B": "ATOM ...\nEND"} |
| pdb_3 | False | PDB | Third PDB dictionary to merge. Appears after pdb_2 is connected. | {"protein_C": "ATOM ...\nEND"} |
| pdb_4 | False | PDB | Fourth PDB dictionary to merge. Appears after pdb_3 is connected. | {"protein_D": "ATOM ...\nEND"} |
| pdb_5 | False | PDB | Fifth PDB dictionary to merge. Appears after pdb_4 is connected. | {"protein_E": "ATOM ...\nEND"} |
| pdb_6 | False | PDB | Sixth PDB dictionary to merge. Appears after pdb_5 is connected. | {"protein_F": "ATOM ...\nEND"} |
| pdb_7 | False | PDB | Seventh PDB dictionary to merge. Appears after pdb_6 is connected. | {"protein_G": "ATOM ...\nEND"} |
| pdb_8 | False | PDB | Eighth PDB dictionary to merge. Appears after pdb_7 is connected. | {"protein_H": "ATOM ...\nEND"} |
| pdb_9 | False | PDB | Ninth PDB dictionary to merge. Appears after pdb_8 is connected. | {"protein_I": "ATOM ...\nEND"} |
| pdb_10 | False | PDB | Tenth PDB dictionary to merge. Appears after pdb_9 is connected. | {"protein_J": "ATOM ...\nEND"} |
| pdb_11 | False | PDB | Eleventh PDB dictionary to merge. Appears after pdb_10 is connected. | {"protein_K": "ATOM ...\nEND"} |
| pdb_12 | False | PDB | Twelfth PDB dictionary to merge. Appears after pdb_11 is connected. | {"protein_L": "ATOM ...\nEND"} |
| pdb_13 | False | PDB | Thirteenth PDB dictionary to merge. Appears after pdb_12 is connected. | {"protein_M": "ATOM ...\nEND"} |
| pdb_14 | False | PDB | Fourteenth PDB dictionary to merge. Appears after pdb_13 is connected. | {"protein_N": "ATOM ...\nEND"} |
| pdb_15 | False | PDB | Fifteenth PDB dictionary to merge. Appears after pdb_14 is connected. | {"protein_O": "ATOM ...\nEND"} |
| pdb_16 | False | PDB | Sixteenth PDB dictionary to merge. Appears after pdb_15 is connected. | {"protein_P": "ATOM ...\nEND"} |
| pdb_17 | False | PDB | Seventeenth PDB dictionary to merge. Appears after pdb_16 is connected. | {"protein_Q": "ATOM ...\nEND"} |
| pdb_18 | False | PDB | Eighteenth PDB dictionary to merge. Appears after pdb_17 is connected. | {"protein_R": "ATOM ...\nEND"} |
| pdb_19 | False | PDB | Nineteenth PDB dictionary to merge. Appears after pdb_18 is connected. | {"protein_S": "ATOM ...\nEND"} |
| pdb_20 | False | PDB | Twentieth PDB dictionary to merge. Appears after pdb_19 is connected. | {"protein_T": "ATOM ...\nEND"} |
| pdb_21 | False | PDB | Twenty-first PDB dictionary to merge. Appears after pdb_20 is connected. | {"protein_U": "ATOM ...\nEND"} |
| pdb_22 | False | PDB | Twenty-second PDB dictionary to merge. Appears after pdb_21 is connected. | {"protein_V": "ATOM ...\nEND"} |
| pdb_23 | False | PDB | Twenty-third PDB dictionary to merge. Appears after pdb_22 is connected. | {"protein_W": "ATOM ...\nEND"} |
| pdb_24 | False | PDB | Twenty-fourth PDB dictionary to merge. Appears after pdb_23 is connected. | {"protein_X": "ATOM ...\nEND"} |
| pdb_25 | False | PDB | Twenty-fifth PDB dictionary to merge. Appears after pdb_24 is connected. | {"protein_Y": "ATOM ...\nEND"} |
| pdb_26 | False | PDB | Twenty-sixth PDB dictionary to merge. Appears after pdb_25 is connected. | {"protein_Z": "ATOM ...\nEND"} |
| pdb_27 | False | PDB | Twenty-seventh PDB dictionary to merge. Appears after pdb_26 is connected. | {"complex_1": "ATOM ...\nEND"} |
| pdb_28 | False | PDB | Twenty-eighth PDB dictionary to merge. Appears after pdb_27 is connected. | {"complex_2": "ATOM ...\nEND"} |
| pdb_29 | False | PDB | Twenty-ninth PDB dictionary to merge. Appears after pdb_28 is connected. | {"complex_3": "ATOM ...\nEND"} |
| pdb_30 | False | PDB | Thirtieth PDB dictionary to merge. Appears after pdb_29 is connected. | {"complex_4": "ATOM ...\nEND"} |
| pdb_31 | False | PDB | Thirty-first PDB dictionary to merge. Appears after pdb_30 is connected. | {"complex_5": "ATOM ...\nEND"} |
Outputs¶
| Field | Type | Description | Example |
|---|---|---|---|
| structure.pdb | PDB | A single merged PDB batch dictionary containing all input entries, formatted as {pdb_id: pdb_content}. | {"protein_A": "ATOM ...\nEND", "protein_B": "ATOM ...\nEND"} |
Important Notes¶
- Unique IDs required: All pdb_id keys across all inputs must be unique; duplicate IDs cause the node to raise an error.
- Progressive inputs: Additional inputs (pdb_2 to pdb_31) become visible only after the previous one is connected.
- Input format: Each input must be a dictionary mapping IDs to PDB strings; passing a raw string instead of a dict will fail.
- Batch-friendly: Inputs can themselves be batches (dicts with multiple entries); the node merges all provided dictionaries.
Troubleshooting¶
- Duplicate ID error: If you see an error about an ID repeating twice, rename the conflicting pdb_id in one of the inputs before merging.
- Nothing happens for later ports: If pdb_2 (or later) is not visible, connect pdb_1 first; inputs appear sequentially.
- Invalid input type: Ensure each connected input is a PDB dictionary (e.g., output of a PDB loader/combiner) rather than a plain string.
- Empty output: At least pdb_1 is required; verify that each provided dictionary contains at least one entry.
Example Pipelines¶