2
2
3
3
A Nextflow plugin for integrating [ NVIDIA NIMs (NVIDIA Inference Microservices)] ( https://developer.nvidia.com/nim ) as custom executors for bioinformatics workflows.
4
4
5
+ ``` mmd
6
+ graph TB
7
+ A[NIM Service<br/>Docker: localhost:8080 | Cloud: health.api.nvidia.com]
8
+ B[Nextflow Process<br/>task.ext.nim = rfdiffusion]
9
+ C[RFDiffusion Processing<br/>15 diffusion steps on protein structure]
10
+ D[Output Generation<br/>designed.pdb written to workflow]
11
+
12
+ A -.->|NVCF_RUN_KEY auth| B
13
+ B -->|POST /v1/biology/ipd/rfdiffusion/generate<br/>PDB + contigs A20-60/0 50-100| C
14
+ C -->|Structure optimization| C
15
+ C -->|JSON: status + results| D
16
+
17
+ style A fill:#76b900,color:#fff
18
+ style B fill:#667eea,color:#fff
19
+ style C fill:#2196F3,color:#fff
20
+ style D fill:#4CAF50,color:#fff
21
+ ```
22
+
5
23
## Overview
6
24
7
25
This plugin provides a generic ` nim ` executor that can run NVIDIA NIM services for biological computing, specifically:
@@ -33,18 +51,21 @@ plugins {
33
51
The plugin supports multiple authentication methods with flexible configuration options:
34
52
35
53
** Method 1: Environment Variable (Traditional)**
54
+
36
55
``` bash
37
56
export NVCF_RUN_KEY=" your-nvidia-api-key-here"
38
57
```
39
58
40
59
** Method 2: Global Configuration**
60
+
41
61
``` groovy
42
62
nim {
43
63
apiKey = 'your-api-key-here'
44
64
}
45
65
```
46
66
47
67
** Method 3: Service-Specific Configuration**
68
+
48
69
``` groovy
49
70
nim {
50
71
rfdiffusion {
@@ -83,16 +104,16 @@ Use the `nim` executor in your processes and specify which NIM service to use wi
83
104
``` groovy
84
105
process myNIMProcess {
85
106
executor 'nim'
86
-
107
+
87
108
input:
88
109
// your inputs
89
-
110
+
90
111
output:
91
112
// your outputs
92
-
113
+
93
114
script:
94
115
task.ext.nim = "rfdiffusion"
95
-
116
+
96
117
"""
97
118
# Your script here - the NIM executor handles the actual API calls
98
119
echo "Running ${task.ext.nim} analysis"
@@ -105,16 +126,16 @@ process myNIMProcess {
105
126
``` groovy
106
127
process rfdiffusionDesign {
107
128
executor 'nim'
108
-
129
+
109
130
input:
110
131
path pdb_file
111
-
132
+
112
133
output:
113
134
path "output.pdb"
114
135
115
136
script:
116
137
task.ext.nim = "rfdiffusion"
117
-
138
+
118
139
"""
119
140
echo "Designing protein structure using RFDiffusion"
120
141
"""
@@ -125,7 +146,7 @@ Parameters for RFDiffusion can be set in `params`:
125
146
126
147
``` groovy
127
148
params.contigs = "A20-60/0 50-100"
128
- params.hotspot_res = ["A50","A51","A52","A53","A54"]
149
+ params.hotspot_res = ["A50","A51","A52","A53","A54"]
129
150
params.diffusion_steps = 15
130
151
```
131
152
@@ -145,10 +166,10 @@ workflow {
145
166
146
167
process designProtein {
147
168
executor 'nim'
148
-
169
+
149
170
input:
150
171
path pdb_file
151
-
172
+
152
173
output:
153
174
path "designed.pdb"
154
175
@@ -163,10 +184,11 @@ process designProtein {
163
184
## Input Requirements
164
185
165
186
### RFDiffusion
187
+
166
188
- ** Input** : PDB file containing protein structure
167
- - ** Parameters** :
189
+ - ** Parameters** :
168
190
- ` params.contigs ` - Contigs specification (default: "A20-60/0 50-100")
169
- - ` params.hotspot_res ` - Hotspot residues (default: [ "A50","A51","A52","A53","A54"] )
191
+ - ` params.hotspot_res ` - Hotspot residues (default: [ "A50","A51","A52","A53","A54"] )
170
192
- ` params.diffusion_steps ` - Number of diffusion steps (default: 15)
171
193
172
194
## Health Checks
@@ -240,6 +262,7 @@ The test suite follows a 3-step integration testing pattern:
240
262
3 . ** Verify API completion** - Check response and result files
241
263
242
264
This separation allows for:
265
+
243
266
- ** Unit testing** - Mock components independently
244
267
- ** Integration testing** - Test with real API endpoints
245
268
- ** Isolated testing** - Test individual components without external dependencies
@@ -301,7 +324,7 @@ This project is licensed under the Apache License 2.0 - see the [COPYING](COPYIN
301
324
For detailed information, see the comprehensive documentation in the [ ` docs/ ` ] ( docs/ ) directory:
302
325
303
326
- ** [ Installation Guide] ( docs/installation.md ) ** - Setup and installation instructions
304
- - ** [ Configuration Guide] ( docs/configuration.md ) ** - Configuration options and examples
327
+ - ** [ Configuration Guide] ( docs/configuration.md ) ** - Configuration options and examples
305
328
- ** [ Authentication Guide] ( docs/authentication.md ) ** - Authentication methods and security
306
329
- ** [ Usage Guide] ( docs/usage.md ) ** - Usage patterns and best practices
307
330
- ** [ Examples Guide] ( docs/examples.md ) ** - Comprehensive workflow examples
@@ -310,4 +333,4 @@ For detailed information, see the comprehensive documentation in the [`docs/`](d
310
333
311
334
## Contributing
312
335
313
- Contributions are welcome! Please see the development guidelines in the source code for more information.
336
+ Contributions are welcome! Please see the development guidelines in the source code for more information.
0 commit comments