@platforma-open/milaboratories.3d-structure-prediction.software 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +349 -364
- package/CHANGELOG.md +18 -0
- package/Dockerfile +0 -9
- package/dist/artifacts/py-archive/archive.json +1 -1
- package/dist/artifacts/py-docker/docker_x64.json +1 -1
- package/dist/tengo/software/immunebuilder-predict.sw.json +1 -1
- package/package.json +2 -2
- package/pkg-platforma-open-milaboratories.3d-structure-prediction.software-py-archive-1.1.0.tgz +0 -0
- package/src_python/run_immunebuilder.py +69 -34
- package/pkg-platforma-open-milaboratories.3d-structure-prediction.software-py-archive-1.0.6.tgz +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/work/3d-structure-prediction/3d-structure-prediction/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-open/milaboratories.3d-structure-prediction.software@1.0
|
|
3
|
+
> @platforma-open/milaboratories.3d-structure-prediction.software@1.1.0 build /home/runner/work/3d-structure-prediction/3d-structure-prediction/software
|
|
4
4
|
> pl-pkg build
|
|
5
5
|
|
|
6
6
|
[32minfo[39m: Building docker images...
|
|
@@ -8,28 +8,26 @@
|
|
|
8
8
|
#0 building with "default" instance using docker driver
|
|
9
9
|
|
|
10
10
|
#1 [internal] load build definition from Dockerfile
|
|
11
|
-
#1 transferring dockerfile:
|
|
11
|
+
#1 transferring dockerfile: 2.53kB done
|
|
12
12
|
#1 DONE 0.0s
|
|
13
13
|
|
|
14
|
-
#2
|
|
15
|
-
#2
|
|
14
|
+
#2 [auth] docker/dockerfile:pull token for registry-1.docker.io
|
|
15
|
+
#2 DONE 0.0s
|
|
16
16
|
|
|
17
|
-
#3
|
|
18
|
-
#3 DONE 0.
|
|
17
|
+
#3 resolve image config for docker-image://docker.io/docker/dockerfile:1
|
|
18
|
+
#3 DONE 0.5s
|
|
19
19
|
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
|
|
23
|
-
#4
|
|
24
|
-
#4
|
|
25
|
-
#4 sha256:
|
|
26
|
-
#4 sha256:
|
|
27
|
-
#4 sha256:
|
|
28
|
-
#4 sha256:
|
|
29
|
-
#4 sha256:
|
|
30
|
-
#4
|
|
31
|
-
#4 extracting sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 0.1s done
|
|
32
|
-
#4 DONE 0.3s
|
|
20
|
+
#4 docker-image://docker.io/docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89
|
|
21
|
+
#4 resolve docker.io/docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89 done
|
|
22
|
+
#4 sha256:e82bbc85c3cb06cf2a5a27b058208b43984448acbcd6a832cd1491933d4376dd 1.13kB / 1.13kB done
|
|
23
|
+
#4 sha256:1a998cca4d41cfecafb1989342c5e7378bc992589af7d47510c4b854bebfc7d7 1.33kB / 1.33kB done
|
|
24
|
+
#4 sha256:50ba52cd6a2c01eaf1a9efbedc7c75b5da5e3965c1586001c722980487a73fd7 0B / 14.36MB 0.1s
|
|
25
|
+
#4 sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89 9.08kB / 9.08kB done
|
|
26
|
+
#4 sha256:50ba52cd6a2c01eaf1a9efbedc7c75b5da5e3965c1586001c722980487a73fd7 3.15MB / 14.36MB 0.2s
|
|
27
|
+
#4 extracting sha256:50ba52cd6a2c01eaf1a9efbedc7c75b5da5e3965c1586001c722980487a73fd7
|
|
28
|
+
#4 sha256:50ba52cd6a2c01eaf1a9efbedc7c75b5da5e3965c1586001c722980487a73fd7 14.36MB / 14.36MB 0.3s done
|
|
29
|
+
#4 extracting sha256:50ba52cd6a2c01eaf1a9efbedc7c75b5da5e3965c1586001c722980487a73fd7 0.1s done
|
|
30
|
+
#4 DONE 0.4s
|
|
33
31
|
|
|
34
32
|
#5 [internal] load metadata for docker.io/mambaorg/micromamba:1.5.10
|
|
35
33
|
#5 ...
|
|
@@ -38,362 +36,351 @@
|
|
|
38
36
|
#6 DONE 0.0s
|
|
39
37
|
|
|
40
38
|
#5 [internal] load metadata for docker.io/mambaorg/micromamba:1.5.10
|
|
41
|
-
#5 DONE 0.
|
|
39
|
+
#5 DONE 0.4s
|
|
42
40
|
|
|
43
41
|
#7 [internal] load .dockerignore
|
|
44
42
|
#7 transferring context: 2B done
|
|
45
43
|
#7 DONE 0.0s
|
|
46
44
|
|
|
47
|
-
#8 [
|
|
48
|
-
#8
|
|
49
|
-
|
|
45
|
+
#8 [1/6] FROM docker.io/mambaorg/micromamba:1.5.10@sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d
|
|
46
|
+
#8 ...
|
|
47
|
+
|
|
48
|
+
#9 [internal] load build context
|
|
49
|
+
#9 transferring context: 38.79kB done
|
|
50
|
+
#9 DONE 0.0s
|
|
50
51
|
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
#
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
#
|
|
72
|
-
#
|
|
73
|
-
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
#
|
|
83
|
-
#
|
|
84
|
-
#
|
|
85
|
-
#
|
|
86
|
-
#
|
|
87
|
-
#
|
|
88
|
-
#
|
|
89
|
-
#
|
|
90
|
-
#
|
|
91
|
-
#
|
|
92
|
-
#9 extracting sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29 done
|
|
93
|
-
#9 DONE 2.1s
|
|
52
|
+
#8 [1/6] FROM docker.io/mambaorg/micromamba:1.5.10@sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d
|
|
53
|
+
#8 resolve docker.io/mambaorg/micromamba:1.5.10@sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d done
|
|
54
|
+
#8 sha256:c5ef7ca066aec9ae6b5a07ceca914beded0754d74f2006b33ee80cb661688f74 6.28kB / 6.28kB done
|
|
55
|
+
#8 sha256:008e06cd8432eb558faa4738a092f30b38dd8db3137a5dd3fca57374a790825b 2.56kB / 2.56kB done
|
|
56
|
+
#8 sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d 2.36kB / 2.36kB done
|
|
57
|
+
#8 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 0B / 6.20MB 0.1s
|
|
58
|
+
#8 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 0B / 29.13MB 0.1s
|
|
59
|
+
#8 sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 0B / 122.68kB 0.1s
|
|
60
|
+
#8 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 3.15MB / 29.13MB 0.2s
|
|
61
|
+
#8 sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 122.68kB / 122.68kB 0.2s done
|
|
62
|
+
#8 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0B / 32B 0.2s
|
|
63
|
+
#8 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 2.10MB / 6.20MB 0.3s
|
|
64
|
+
#8 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 29.13MB / 29.13MB 0.3s
|
|
65
|
+
#8 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.2s done
|
|
66
|
+
#8 sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed 521B / 521B 0.3s
|
|
67
|
+
#8 extracting sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b
|
|
68
|
+
#8 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 6.20MB / 6.20MB 0.4s done
|
|
69
|
+
#8 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 29.13MB / 29.13MB 0.3s done
|
|
70
|
+
#8 sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed 521B / 521B 0.3s done
|
|
71
|
+
#8 sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 0B / 645B 0.4s
|
|
72
|
+
#8 sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 282B / 282B 0.3s done
|
|
73
|
+
#8 sha256:9a782d6d1eace15aadfa1d16eb83ad2abdea075c6c9e200247950571a3719e10 3.77kB / 3.77kB 0.4s done
|
|
74
|
+
#8 sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 215B / 215B 0.4s
|
|
75
|
+
#8 sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 683B / 683B 0.4s done
|
|
76
|
+
#8 sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 645B / 645B 0.4s done
|
|
77
|
+
#8 sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 215B / 215B 0.4s done
|
|
78
|
+
#8 sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29 345B / 345B 0.4s done
|
|
79
|
+
#8 extracting sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 1.0s done
|
|
80
|
+
#8 extracting sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 done
|
|
81
|
+
#8 extracting sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880
|
|
82
|
+
#8 extracting sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 0.1s done
|
|
83
|
+
#8 extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 done
|
|
84
|
+
#8 extracting sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed
|
|
85
|
+
#8 extracting sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed done
|
|
86
|
+
#8 extracting sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 done
|
|
87
|
+
#8 extracting sha256:9a782d6d1eace15aadfa1d16eb83ad2abdea075c6c9e200247950571a3719e10 done
|
|
88
|
+
#8 extracting sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 done
|
|
89
|
+
#8 extracting sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 done
|
|
90
|
+
#8 extracting sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 done
|
|
91
|
+
#8 extracting sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29 done
|
|
92
|
+
#8 DONE 1.7s
|
|
94
93
|
|
|
95
|
-
#10 [2/
|
|
96
|
-
#10
|
|
97
|
-
#10
|
|
98
|
-
#10
|
|
99
|
-
#10
|
|
100
|
-
#10
|
|
101
|
-
#10
|
|
102
|
-
#10
|
|
103
|
-
#10
|
|
104
|
-
#10
|
|
105
|
-
#10
|
|
106
|
-
#10
|
|
107
|
-
#10
|
|
108
|
-
#10
|
|
109
|
-
#10
|
|
110
|
-
#10
|
|
111
|
-
#10
|
|
112
|
-
#10
|
|
113
|
-
#10
|
|
114
|
-
#10
|
|
115
|
-
#10
|
|
116
|
-
#10
|
|
117
|
-
#10
|
|
118
|
-
#10
|
|
119
|
-
#10
|
|
120
|
-
#10
|
|
121
|
-
#10
|
|
122
|
-
#10
|
|
123
|
-
#10
|
|
124
|
-
#10
|
|
125
|
-
#10
|
|
126
|
-
#10
|
|
127
|
-
#10
|
|
128
|
-
#10
|
|
129
|
-
#10
|
|
130
|
-
#10
|
|
131
|
-
#10
|
|
132
|
-
#10
|
|
133
|
-
#10
|
|
134
|
-
#10
|
|
135
|
-
#10
|
|
136
|
-
#10
|
|
137
|
-
#10
|
|
138
|
-
#10
|
|
139
|
-
#10
|
|
140
|
-
#10
|
|
141
|
-
#10
|
|
142
|
-
#10
|
|
143
|
-
#10
|
|
144
|
-
#10
|
|
145
|
-
#10
|
|
146
|
-
#10
|
|
147
|
-
#10
|
|
148
|
-
#10
|
|
149
|
-
#10
|
|
150
|
-
#10
|
|
151
|
-
#10
|
|
152
|
-
#10
|
|
153
|
-
#10
|
|
154
|
-
#10
|
|
155
|
-
#10
|
|
156
|
-
#10
|
|
157
|
-
#10
|
|
158
|
-
#10
|
|
159
|
-
#10
|
|
160
|
-
#10
|
|
161
|
-
#10
|
|
162
|
-
#10
|
|
163
|
-
#10
|
|
164
|
-
#10
|
|
165
|
-
#10
|
|
166
|
-
#10
|
|
167
|
-
#10
|
|
168
|
-
#10
|
|
169
|
-
#10
|
|
170
|
-
#10
|
|
171
|
-
#10
|
|
172
|
-
#10
|
|
173
|
-
#10
|
|
174
|
-
#10
|
|
175
|
-
#10
|
|
176
|
-
#10
|
|
177
|
-
#10
|
|
178
|
-
#10
|
|
179
|
-
#10
|
|
180
|
-
#10
|
|
181
|
-
#10
|
|
182
|
-
#10
|
|
183
|
-
#10
|
|
184
|
-
#10
|
|
185
|
-
#10
|
|
186
|
-
#10
|
|
187
|
-
#10
|
|
188
|
-
#10
|
|
189
|
-
#10
|
|
190
|
-
#10
|
|
191
|
-
#10
|
|
192
|
-
#10
|
|
193
|
-
#10
|
|
194
|
-
#10
|
|
195
|
-
#10
|
|
196
|
-
#10
|
|
197
|
-
#10
|
|
198
|
-
#10
|
|
199
|
-
#10
|
|
200
|
-
#10
|
|
201
|
-
#10
|
|
202
|
-
#10
|
|
203
|
-
#10
|
|
204
|
-
#10
|
|
205
|
-
#10
|
|
206
|
-
#10
|
|
207
|
-
#10
|
|
208
|
-
#10
|
|
209
|
-
#10
|
|
210
|
-
#10
|
|
211
|
-
#10
|
|
212
|
-
#10
|
|
213
|
-
#10
|
|
214
|
-
#10
|
|
215
|
-
#10
|
|
216
|
-
#10
|
|
217
|
-
#10
|
|
218
|
-
#10
|
|
219
|
-
#10
|
|
220
|
-
#10
|
|
221
|
-
#10
|
|
222
|
-
#10
|
|
223
|
-
#10
|
|
224
|
-
#10
|
|
225
|
-
#10
|
|
226
|
-
#10
|
|
227
|
-
#10
|
|
228
|
-
#10
|
|
229
|
-
#10
|
|
230
|
-
#10
|
|
231
|
-
#10
|
|
232
|
-
#10
|
|
233
|
-
#10
|
|
234
|
-
#10
|
|
235
|
-
#10
|
|
236
|
-
#10
|
|
237
|
-
#10
|
|
238
|
-
#10
|
|
239
|
-
#10
|
|
240
|
-
#10
|
|
241
|
-
#10
|
|
242
|
-
#10
|
|
243
|
-
#10
|
|
244
|
-
#10
|
|
245
|
-
#10
|
|
246
|
-
#10
|
|
247
|
-
#10
|
|
248
|
-
#10
|
|
249
|
-
#10
|
|
250
|
-
#10
|
|
251
|
-
#10
|
|
252
|
-
#10
|
|
253
|
-
#10
|
|
254
|
-
#10
|
|
255
|
-
#10
|
|
256
|
-
#10
|
|
257
|
-
#10
|
|
258
|
-
#10
|
|
259
|
-
#10
|
|
260
|
-
#10
|
|
261
|
-
#10
|
|
262
|
-
#10
|
|
263
|
-
#10
|
|
264
|
-
#10
|
|
265
|
-
#10
|
|
266
|
-
#10
|
|
267
|
-
#10
|
|
268
|
-
#10
|
|
269
|
-
#10
|
|
270
|
-
#10
|
|
271
|
-
#10
|
|
272
|
-
#10
|
|
273
|
-
#10
|
|
274
|
-
#10
|
|
275
|
-
#10
|
|
276
|
-
#10
|
|
277
|
-
#10
|
|
278
|
-
#10
|
|
279
|
-
#10
|
|
280
|
-
#10
|
|
281
|
-
#10
|
|
282
|
-
#10
|
|
283
|
-
#10
|
|
284
|
-
#10 DONE
|
|
94
|
+
#10 [2/6] RUN micromamba install -y -n base -c bioconda -c conda-forge python=3.12.10 anarci hmmer biopython=1.85 openmm=8.3.1 pdbfixer=1.12.0 numpy=2.4.3 scipy=1.17.1 && micromamba clean --all --yes
|
|
95
|
+
#10 16.69
|
|
96
|
+
#10 16.69 Transaction
|
|
97
|
+
#10 16.69
|
|
98
|
+
#10 16.69 Prefix: /opt/conda
|
|
99
|
+
#10 16.69
|
|
100
|
+
#10 16.69 Updating specs:
|
|
101
|
+
#10 16.69
|
|
102
|
+
#10 16.69 - python=3.12.10
|
|
103
|
+
#10 16.69 - anarci
|
|
104
|
+
#10 16.69 - hmmer
|
|
105
|
+
#10 16.69 - biopython=1.85
|
|
106
|
+
#10 16.69 - openmm=8.3.1
|
|
107
|
+
#10 16.69 - pdbfixer=1.12.0
|
|
108
|
+
#10 16.69 - numpy=2.4.3
|
|
109
|
+
#10 16.69 - scipy=1.17.1
|
|
110
|
+
#10 16.69
|
|
111
|
+
#10 16.69
|
|
112
|
+
#10 16.69 Package Version Build Channel Size
|
|
113
|
+
#10 16.69 ───────────────────────────────────────────────────────────────────────────────
|
|
114
|
+
#10 16.69 Install:
|
|
115
|
+
#10 16.69 ───────────────────────────────────────────────────────────────────────────────
|
|
116
|
+
#10 16.69
|
|
117
|
+
#10 16.69 + python_abi 3.12 8_cp312 conda-forge 7kB
|
|
118
|
+
#10 16.69 + tzdata 2025c hc9c84f9_1 conda-forge 119kB
|
|
119
|
+
#10 16.69 + ca-certificates 2026.5.20 hbd8a1cb_0 conda-forge 130kB
|
|
120
|
+
#10 16.69 + cuda-version 12.9 h4f385c5_3 conda-forge 22kB
|
|
121
|
+
#10 16.69 + libzlib 1.3.2 h25fd6f3_2 conda-forge 64kB
|
|
122
|
+
#10 16.69 + libgomp 15.2.0 he0feb66_19 conda-forge 604kB
|
|
123
|
+
#10 16.69 + mpi 1.0 openmpi conda-forge 4kB
|
|
124
|
+
#10 16.69 + zlib 1.3.2 h25fd6f3_2 conda-forge 96kB
|
|
125
|
+
#10 16.69 + zstd 1.5.7 hb78ec9c_6 conda-forge 601kB
|
|
126
|
+
#10 16.69 + _openmp_mutex 4.5 20_gnu conda-forge 29kB
|
|
127
|
+
#10 16.69 + ld_impl_linux-64 2.45.1 default_hbd61a6d_102 conda-forge 728kB
|
|
128
|
+
#10 16.69 + libgcc 15.2.0 he0feb66_19 conda-forge 1MB
|
|
129
|
+
#10 16.69 + tk 8.6.13 noxft_h366c992_103 conda-forge 3MB
|
|
130
|
+
#10 16.69 + libsqlite 3.53.2 h0c1763c_0 conda-forge 958kB
|
|
131
|
+
#10 16.69 + openssl 3.6.3 h35e630c_0 conda-forge 3MB
|
|
132
|
+
#10 16.69 + ncurses 6.6 hdb14827_0 conda-forge 919kB
|
|
133
|
+
#10 16.69 + libuuid 2.42.1 h5347b49_0 conda-forge 40kB
|
|
134
|
+
#10 16.69 + libnsl 2.0.1 hb9d3cd8_1 conda-forge 34kB
|
|
135
|
+
#10 16.69 + liblzma 5.8.3 hb03c661_0 conda-forge 113kB
|
|
136
|
+
#10 16.69 + libffi 3.4.6 h2dba641_1 conda-forge 57kB
|
|
137
|
+
#10 16.69 + libexpat 2.8.1 hecca717_0 conda-forge 77kB
|
|
138
|
+
#10 16.69 + bzip2 1.0.8 hda65f42_9 conda-forge 260kB
|
|
139
|
+
#10 16.69 + libstdcxx 15.2.0 h934c35e_19 conda-forge 6MB
|
|
140
|
+
#10 16.69 + libgcc-ng 15.2.0 h69a702a_19 conda-forge 28kB
|
|
141
|
+
#10 16.69 + libgfortran5 15.2.0 h68bc16d_19 conda-forge 2MB
|
|
142
|
+
#10 16.69 + readline 8.3 h853b02a_0 conda-forge 345kB
|
|
143
|
+
#10 16.69 + opencl-headers 2025.06.13 hecca717_0 conda-forge 56kB
|
|
144
|
+
#10 16.69 + libstdcxx-ng 15.2.0 hdf11a46_19 conda-forge 28kB
|
|
145
|
+
#10 16.69 + libcufft 11.4.1.4 hecca717_1 conda-forge 162MB
|
|
146
|
+
#10 16.69 + cuda-nvrtc 12.9.86 hecca717_1 conda-forge 67MB
|
|
147
|
+
#10 16.69 + libxcrypt 4.4.36 hd590300_1 conda-forge 100kB
|
|
148
|
+
#10 16.69 + libgfortran 15.2.0 h69a702a_19 conda-forge 28kB
|
|
149
|
+
#10 16.69 + ocl-icd 2.3.4 hb03c661_1 conda-forge 110kB
|
|
150
|
+
#10 16.69 + python 3.12.10 h9e4cc4f_0_cpython conda-forge 31MB
|
|
151
|
+
#10 16.69 + libgfortran-ng 15.2.0 h69a702a_19 conda-forge 28kB
|
|
152
|
+
#10 16.69 + libopenblas 0.3.33 pthreads_h94d23a6_0 conda-forge 6MB
|
|
153
|
+
#10 16.69 + ocl-icd-system 1.0.0 1 conda-forge 4kB
|
|
154
|
+
#10 16.69 + openmpi 4.1.6 hc5af2df_101 conda-forge 4MB
|
|
155
|
+
#10 16.69 + libblas 3.11.0 8_h4a7cf45_openblas conda-forge 19kB
|
|
156
|
+
#10 16.69 + libcblas 3.11.0 8_h0358290_openblas conda-forge 19kB
|
|
157
|
+
#10 16.69 + liblapack 3.11.0 8_h47877c9_openblas conda-forge 19kB
|
|
158
|
+
#10 16.69 + gsl 2.7 he838d99_0 conda-forge 3MB
|
|
159
|
+
#10 16.69 + packaging 26.2 pyhc364b38_0 conda-forge 92kB
|
|
160
|
+
#10 16.69 + setuptools 82.0.1 pyh332efcf_0 conda-forge 640kB
|
|
161
|
+
#10 16.69 + wheel 0.47.0 pyhd8ed1ab_0 conda-forge 33kB
|
|
162
|
+
#10 16.69 + pip 26.1.2 pyh8b19718_0 conda-forge 1MB
|
|
163
|
+
#10 16.69 + legacy-cgi 2.6.4 pyhcf101f3_0 conda-forge 20kB
|
|
164
|
+
#10 16.69 + hmmer 3.4 hb6cb901_4 bioconda 12MB
|
|
165
|
+
#10 16.69 + numpy 2.4.3 py312h33ff503_0 conda-forge 9MB
|
|
166
|
+
#10 16.69 + scipy 1.17.1 py312h54fa4ab_1 conda-forge 17MB
|
|
167
|
+
#10 16.69 + biopython 1.85 py312h4c3975b_2 conda-forge 3MB
|
|
168
|
+
#10 16.69 + openmm 8.3.1 py312h50c43f0_0 conda-forge 13MB
|
|
169
|
+
#10 16.69 + anarci 2024.05.21 pyhdfd78af_0 bioconda 1MB
|
|
170
|
+
#10 16.69 + pdbfixer 1.12 pyhd8ed1ab_1 conda-forge 546kB
|
|
171
|
+
#10 16.69
|
|
172
|
+
#10 16.69 Summary:
|
|
173
|
+
#10 16.69
|
|
174
|
+
#10 16.69 Install: 54 packages
|
|
175
|
+
#10 16.69
|
|
176
|
+
#10 16.69 Total download: 353MB
|
|
177
|
+
#10 16.69
|
|
178
|
+
#10 16.69 ───────────────────────────────────────────────────────────────────────────────
|
|
179
|
+
#10 16.69
|
|
180
|
+
#10 16.69
|
|
181
|
+
#10 16.69
|
|
182
|
+
#10 16.69 Transaction starting
|
|
183
|
+
#10 22.01
|
|
184
|
+
#10 22.17
|
|
185
|
+
#10 22.17 For Linux 64, Open MPI is built with CUDA awareness but this support is disabled by default.
|
|
186
|
+
#10 22.17 To enable it, please set the environment variable OMPI_MCA_opal_cuda_support=true before
|
|
187
|
+
#10 22.17 launching your MPI processes. Equivalently, you can set the MCA parameter in the command line:
|
|
188
|
+
#10 22.17 mpiexec --mca opal_cuda_support 1 ...
|
|
189
|
+
#10 22.17
|
|
190
|
+
#10 22.17 In addition, the UCX support is also built but disabled by default.
|
|
191
|
+
#10 22.17 To enable it, first install UCX (conda install -c conda-forge ucx). Then, set the environment
|
|
192
|
+
#10 22.17 variables OMPI_MCA_pml="ucx" OMPI_MCA_osc="ucx" before launching your MPI processes.
|
|
193
|
+
#10 22.17 Equivalently, you can set the MCA parameters in the command line:
|
|
194
|
+
#10 22.17 mpiexec --mca pml ucx --mca osc ucx ...
|
|
195
|
+
#10 22.17 Note that you might also need to set UCX_MEMTYPE_CACHE=n for CUDA awareness via UCX.
|
|
196
|
+
#10 22.17 Please consult UCX's documentation for detail.
|
|
197
|
+
#10 22.17
|
|
198
|
+
#10 22.17
|
|
199
|
+
#10 23.29
|
|
200
|
+
#10 23.29 Transaction finished
|
|
201
|
+
#10 23.29
|
|
202
|
+
#10 23.29 To activate this environment, use:
|
|
203
|
+
#10 23.29
|
|
204
|
+
#10 23.29 micromamba activate base
|
|
205
|
+
#10 23.29
|
|
206
|
+
#10 23.29 Or to execute a single command in this environment, use:
|
|
207
|
+
#10 23.29
|
|
208
|
+
#10 23.29 micromamba run -n base mycommand
|
|
209
|
+
#10 23.29
|
|
210
|
+
#10 23.33 Collect information..
|
|
211
|
+
#10 23.33 Cleaning index cache..
|
|
212
|
+
#10 23.46 Cleaning lock files..
|
|
213
|
+
#10 23.47 Package file Size
|
|
214
|
+
#10 23.47 ───────────────────────────────────────────────────────────────
|
|
215
|
+
#10 23.47 /opt/conda/pkgs
|
|
216
|
+
#10 23.47 ───────────────────────────────────────────────────────────────
|
|
217
|
+
#10 23.47
|
|
218
|
+
#10 23.47 _openmp_mutex-4.5-20_gnu.conda 29kB
|
|
219
|
+
#10 23.47 anarci-2024.05.21-pyhdfd78af_0.tar.bz2 1MB
|
|
220
|
+
#10 23.47 biopython-1.85-py312h4c3975b_2.conda 3MB
|
|
221
|
+
#10 23.47 bzip2-1.0.8-hda65f42_9.conda 260kB
|
|
222
|
+
#10 23.47 ca-certificates-2026.5.20-hbd8a1cb_0.conda 130kB
|
|
223
|
+
#10 23.47 cuda-nvrtc-12.9.86-hecca717_1.conda 67MB
|
|
224
|
+
#10 23.47 cuda-version-12.9-h4f385c5_3.conda 22kB
|
|
225
|
+
#10 23.47 gsl-2.7-he838d99_0.tar.bz2 3MB
|
|
226
|
+
#10 23.47 hmmer-3.4-hb6cb901_4.tar.bz2 12MB
|
|
227
|
+
#10 23.47 ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda 728kB
|
|
228
|
+
#10 23.47 legacy-cgi-2.6.4-pyhcf101f3_0.conda 20kB
|
|
229
|
+
#10 23.47 libblas-3.11.0-8_h4a7cf45_openblas.conda 19kB
|
|
230
|
+
#10 23.47 libcblas-3.11.0-8_h0358290_openblas.conda 19kB
|
|
231
|
+
#10 23.47 libcufft-11.4.1.4-hecca717_1.conda 162MB
|
|
232
|
+
#10 23.47 libexpat-2.8.1-hecca717_0.conda 77kB
|
|
233
|
+
#10 23.47 libffi-3.4.6-h2dba641_1.conda 57kB
|
|
234
|
+
#10 23.47 libgcc-15.2.0-he0feb66_19.conda 1MB
|
|
235
|
+
#10 23.47 libgcc-ng-15.2.0-h69a702a_19.conda 28kB
|
|
236
|
+
#10 23.47 libgfortran-15.2.0-h69a702a_19.conda 28kB
|
|
237
|
+
#10 23.47 libgfortran-ng-15.2.0-h69a702a_19.conda 28kB
|
|
238
|
+
#10 23.47 libgfortran5-15.2.0-h68bc16d_19.conda 2MB
|
|
239
|
+
#10 23.47 libgomp-15.2.0-he0feb66_19.conda 604kB
|
|
240
|
+
#10 23.47 liblapack-3.11.0-8_h47877c9_openblas.conda 19kB
|
|
241
|
+
#10 23.47 liblzma-5.8.3-hb03c661_0.conda 113kB
|
|
242
|
+
#10 23.47 libnsl-2.0.1-hb9d3cd8_1.conda 34kB
|
|
243
|
+
#10 23.47 libopenblas-0.3.33-pthreads_h94d23a6_0.conda 6MB
|
|
244
|
+
#10 23.47 libsqlite-3.53.2-h0c1763c_0.conda 958kB
|
|
245
|
+
#10 23.47 libstdcxx-15.2.0-h934c35e_19.conda 6MB
|
|
246
|
+
#10 23.47 libstdcxx-ng-15.2.0-hdf11a46_19.conda 28kB
|
|
247
|
+
#10 23.47 libuuid-2.42.1-h5347b49_0.conda 40kB
|
|
248
|
+
#10 23.47 libxcrypt-4.4.36-hd590300_1.conda 100kB
|
|
249
|
+
#10 23.47 libzlib-1.3.2-h25fd6f3_2.conda 64kB
|
|
250
|
+
#10 23.47 mpi-1.0-openmpi.tar.bz2 4kB
|
|
251
|
+
#10 23.47 ncurses-6.6-hdb14827_0.conda 919kB
|
|
252
|
+
#10 23.47 numpy-2.4.3-py312h33ff503_0.conda 9MB
|
|
253
|
+
#10 23.47 ocl-icd-2.3.4-hb03c661_1.conda 110kB
|
|
254
|
+
#10 23.47 ocl-icd-system-1.0.0-1.tar.bz2 4kB
|
|
255
|
+
#10 23.47 opencl-headers-2025.06.13-hecca717_0.conda 56kB
|
|
256
|
+
#10 23.47 openmm-8.3.1-py312h50c43f0_0.conda 13MB
|
|
257
|
+
#10 23.47 openmpi-4.1.6-hc5af2df_101.conda 4MB
|
|
258
|
+
#10 23.47 openssl-3.6.3-h35e630c_0.conda 3MB
|
|
259
|
+
#10 23.47 packaging-26.2-pyhc364b38_0.conda 92kB
|
|
260
|
+
#10 23.47 pdbfixer-1.12-pyhd8ed1ab_1.conda 546kB
|
|
261
|
+
#10 23.47 pip-26.1.2-pyh8b19718_0.conda 1MB
|
|
262
|
+
#10 23.47 python-3.12.10-h9e4cc4f_0_cpython.conda 31MB
|
|
263
|
+
#10 23.47 python_abi-3.12-8_cp312.conda 7kB
|
|
264
|
+
#10 23.47 readline-8.3-h853b02a_0.conda 345kB
|
|
265
|
+
#10 23.47 scipy-1.17.1-py312h54fa4ab_1.conda 17MB
|
|
266
|
+
#10 23.47 setuptools-82.0.1-pyh332efcf_0.conda 640kB
|
|
267
|
+
#10 23.47 tk-8.6.13-noxft_h366c992_103.conda 3MB
|
|
268
|
+
#10 23.47 tzdata-2025c-hc9c84f9_1.conda 119kB
|
|
269
|
+
#10 23.47 wheel-0.47.0-pyhd8ed1ab_0.conda 33kB
|
|
270
|
+
#10 23.47 zlib-1.3.2-h25fd6f3_2.conda 96kB
|
|
271
|
+
#10 23.47 zstd-1.5.7-hb78ec9c_6.conda 601kB
|
|
272
|
+
#10 23.47
|
|
273
|
+
#10 23.47 /root/.mamba/pkgs
|
|
274
|
+
#10 23.47 ───────────────────────────────────────────────────────────────
|
|
275
|
+
#10 23.47
|
|
276
|
+
#10 23.47
|
|
277
|
+
#10 23.47
|
|
278
|
+
#10 23.47 ───────────────────────────────────────────────────────────────
|
|
279
|
+
#10 23.47
|
|
280
|
+
#10 23.47 Total size: 353MB
|
|
281
|
+
#10 23.47 Cleaning tarballs..
|
|
282
|
+
#10 23.52 Cleaning packages..
|
|
283
|
+
#10 DONE 25.8s
|
|
285
284
|
|
|
286
|
-
#11 [3/
|
|
285
|
+
#11 [3/6] COPY requirements.txt /tmp/requirements.txt
|
|
287
286
|
#11 DONE 0.0s
|
|
288
287
|
|
|
289
|
-
#12 [4/
|
|
290
|
-
#12
|
|
291
|
-
#12
|
|
292
|
-
#12
|
|
293
|
-
#12
|
|
294
|
-
#12
|
|
295
|
-
#12
|
|
296
|
-
#12
|
|
297
|
-
#12
|
|
298
|
-
#12
|
|
299
|
-
#12
|
|
300
|
-
#12
|
|
301
|
-
#12
|
|
302
|
-
#12
|
|
303
|
-
#12
|
|
304
|
-
#12
|
|
305
|
-
#12
|
|
306
|
-
#12
|
|
307
|
-
#12
|
|
308
|
-
#12
|
|
309
|
-
#12
|
|
310
|
-
#12
|
|
311
|
-
#12
|
|
312
|
-
#12
|
|
313
|
-
#12
|
|
314
|
-
#12
|
|
315
|
-
#12
|
|
316
|
-
#12
|
|
317
|
-
#12
|
|
318
|
-
#12
|
|
319
|
-
#12
|
|
320
|
-
#12
|
|
321
|
-
#12
|
|
322
|
-
#12
|
|
323
|
-
#12
|
|
324
|
-
#12
|
|
325
|
-
#12
|
|
326
|
-
#12
|
|
327
|
-
#12
|
|
328
|
-
#12
|
|
329
|
-
#12
|
|
330
|
-
#12
|
|
331
|
-
#12
|
|
332
|
-
#12
|
|
333
|
-
#12
|
|
334
|
-
#12
|
|
335
|
-
#12
|
|
336
|
-
#12
|
|
337
|
-
#12
|
|
338
|
-
#12
|
|
339
|
-
#12
|
|
340
|
-
#12
|
|
341
|
-
#12
|
|
342
|
-
#12
|
|
343
|
-
#12
|
|
344
|
-
#12
|
|
345
|
-
#12
|
|
346
|
-
#12
|
|
347
|
-
#12
|
|
348
|
-
#12
|
|
349
|
-
#12
|
|
350
|
-
#12
|
|
351
|
-
#12
|
|
352
|
-
#12
|
|
353
|
-
#12 DONE
|
|
288
|
+
#12 [4/6] RUN pip install --no-cache-dir --extra-index-url https://download.pytorch.org/whl/cpu -r /tmp/requirements.txt
|
|
289
|
+
#12 4.055 Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cpu
|
|
290
|
+
#12 4.489 Collecting ImmuneBuilder==1.2 (from -r /tmp/requirements.txt (line 1))
|
|
291
|
+
#12 4.512 Downloading ImmuneBuilder-1.2-py3-none-any.whl.metadata (7.7 kB)
|
|
292
|
+
#12 4.715 Collecting torch==2.7.0 (from -r /tmp/requirements.txt (line 2))
|
|
293
|
+
#12 4.779 Downloading torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (27 kB)
|
|
294
|
+
#12 4.782 Requirement already satisfied: biopython==1.85 in /opt/conda/lib/python3.12/site-packages (from -r /tmp/requirements.txt (line 3)) (1.85)
|
|
295
|
+
#12 4.783 Requirement already satisfied: openmm==8.3.1 in /opt/conda/lib/python3.12/site-packages (from -r /tmp/requirements.txt (line 4)) (8.3.1)
|
|
296
|
+
#12 4.784 Requirement already satisfied: pdbfixer==1.12.0 in /opt/conda/lib/python3.12/site-packages (from -r /tmp/requirements.txt (line 5)) (1.12.0)
|
|
297
|
+
#12 4.784 Requirement already satisfied: numpy in /opt/conda/lib/python3.12/site-packages (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1)) (2.4.3)
|
|
298
|
+
#12 4.785 Requirement already satisfied: scipy>=1.6 in /opt/conda/lib/python3.12/site-packages (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1)) (1.17.1)
|
|
299
|
+
#12 4.854 Collecting einops>=0.3 (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
|
|
300
|
+
#12 4.857 Downloading einops-0.8.2-py3-none-any.whl.metadata (13 kB)
|
|
301
|
+
#12 4.970 Collecting requests (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
|
|
302
|
+
#12 4.973 Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
|
|
303
|
+
#12 5.074 Collecting filelock (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
|
|
304
|
+
#12 5.077 Downloading filelock-3.29.3-py3-none-any.whl.metadata (2.0 kB)
|
|
305
|
+
#12 5.142 Collecting typing-extensions>=4.10.0 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
|
|
306
|
+
#12 5.165 Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
|
|
307
|
+
#12 5.168 Requirement already satisfied: setuptools in /opt/conda/lib/python3.12/site-packages (from torch==2.7.0->-r /tmp/requirements.txt (line 2)) (82.0.1)
|
|
308
|
+
#12 5.231 Collecting sympy>=1.13.3 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
|
|
309
|
+
#12 5.234 Downloading sympy-1.14.0-py3-none-any.whl.metadata (12 kB)
|
|
310
|
+
#12 5.364 Collecting networkx (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
|
|
311
|
+
#12 5.367 Downloading networkx-3.6.1-py3-none-any.whl.metadata (6.8 kB)
|
|
312
|
+
#12 5.431 Collecting jinja2 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
|
|
313
|
+
#12 5.454 Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
|
|
314
|
+
#12 5.524 Collecting fsspec (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
|
|
315
|
+
#12 5.527 Downloading fsspec-2026.4.0-py3-none-any.whl.metadata (10 kB)
|
|
316
|
+
#12 5.604 Collecting mpmath<1.4,>=1.1.0 (from sympy>=1.13.3->torch==2.7.0->-r /tmp/requirements.txt (line 2))
|
|
317
|
+
#12 5.607 Downloading mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)
|
|
318
|
+
#12 5.701 Collecting MarkupSafe>=2.0 (from jinja2->torch==2.7.0->-r /tmp/requirements.txt (line 2))
|
|
319
|
+
#12 5.724 Downloading markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
|
|
320
|
+
#12 5.925 Collecting charset_normalizer<4,>=2 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
|
|
321
|
+
#12 5.929 Downloading charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (40 kB)
|
|
322
|
+
#12 6.008 Collecting idna<4,>=2.5 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
|
|
323
|
+
#12 6.011 Downloading idna-3.18-py3-none-any.whl.metadata (6.1 kB)
|
|
324
|
+
#12 6.077 Collecting urllib3<3,>=1.26 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
|
|
325
|
+
#12 6.080 Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
|
|
326
|
+
#12 6.193 Collecting certifi>=2023.5.7 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
|
|
327
|
+
#12 6.196 Downloading certifi-2026.5.20-py3-none-any.whl.metadata (2.5 kB)
|
|
328
|
+
#12 6.208 Downloading ImmuneBuilder-1.2-py3-none-any.whl (32 kB)
|
|
329
|
+
#12 6.218 Downloading torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl (175.8 MB)
|
|
330
|
+
#12 6.797 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 175.8/175.8 MB 307.3 MB/s 0:00:00
|
|
331
|
+
#12 6.800 Downloading einops-0.8.2-py3-none-any.whl (65 kB)
|
|
332
|
+
#12 6.803 Downloading sympy-1.14.0-py3-none-any.whl (6.3 MB)
|
|
333
|
+
#12 6.822 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.3/6.3 MB 432.9 MB/s 0:00:00
|
|
334
|
+
#12 6.826 Downloading mpmath-1.3.0-py3-none-any.whl (536 kB)
|
|
335
|
+
#12 6.828 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 736.8 MB/s 0:00:00
|
|
336
|
+
#12 6.851 Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
|
|
337
|
+
#12 6.855 Downloading filelock-3.29.3-py3-none-any.whl (42 kB)
|
|
338
|
+
#12 6.858 Downloading fsspec-2026.4.0-py3-none-any.whl (203 kB)
|
|
339
|
+
#12 6.881 Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
|
|
340
|
+
#12 6.909 Downloading markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
|
|
341
|
+
#12 6.913 Downloading networkx-3.6.1-py3-none-any.whl (2.1 MB)
|
|
342
|
+
#12 6.918 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 671.4 MB/s 0:00:00
|
|
343
|
+
#12 6.921 Downloading requests-2.34.2-py3-none-any.whl (73 kB)
|
|
344
|
+
#12 6.924 Downloading charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (216 kB)
|
|
345
|
+
#12 6.927 Downloading idna-3.18-py3-none-any.whl (65 kB)
|
|
346
|
+
#12 6.930 Downloading urllib3-2.7.0-py3-none-any.whl (131 kB)
|
|
347
|
+
#12 6.933 Downloading certifi-2026.5.20-py3-none-any.whl (134 kB)
|
|
348
|
+
#12 7.278 Installing collected packages: mpmath, urllib3, typing-extensions, sympy, networkx, MarkupSafe, idna, fsspec, filelock, einops, charset_normalizer, certifi, requests, jinja2, torch, ImmuneBuilder
|
|
349
|
+
#12 22.82
|
|
350
|
+
#12 22.83 Successfully installed ImmuneBuilder-1.2 MarkupSafe-3.0.3 certifi-2026.5.20 charset_normalizer-3.4.7 einops-0.8.2 filelock-3.29.3 fsspec-2026.4.0 idna-3.18 jinja2-3.1.6 mpmath-1.3.0 networkx-3.6.1 requests-2.34.2 sympy-1.14.0 torch-2.7.0+cpu typing-extensions-4.15.0 urllib3-2.7.0
|
|
351
|
+
#12 22.83 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
|
|
352
|
+
#12 DONE 24.6s
|
|
354
353
|
|
|
355
|
-
#13 [5/
|
|
356
|
-
#13
|
|
357
|
-
#13 37.49 Downloading weights for antibody_model_2...
|
|
358
|
-
#13 137.3 Downloading weights for antibody_model_3...
|
|
359
|
-
#13 299.1 Downloading weights for antibody_model_4...
|
|
360
|
-
#13 420.8 Downloading weights for nanobody_model_1...
|
|
361
|
-
#13 517.4 Downloading weights for nanobody_model_2...
|
|
362
|
-
#13 800.4 Downloading weights for nanobody_model_3...
|
|
363
|
-
#13 975.8 Downloading weights for nanobody_model_4...
|
|
364
|
-
#13 DONE 1050.9s
|
|
354
|
+
#13 [5/6] WORKDIR /app
|
|
355
|
+
#13 DONE 0.0s
|
|
365
356
|
|
|
366
|
-
#14 [6/
|
|
357
|
+
#14 [6/6] COPY . /app/
|
|
367
358
|
#14 DONE 0.0s
|
|
368
359
|
|
|
369
|
-
#15
|
|
370
|
-
#15
|
|
371
|
-
|
|
372
|
-
#
|
|
373
|
-
#
|
|
374
|
-
#
|
|
375
|
-
#16 writing image sha256:b5ab99a6233488f58b0700198b79ba9dcd503f27aadc54a2608ba6ee89b28f01 done
|
|
376
|
-
#16 naming to containers.pl-open.science/milaboratories/pl-containers:local-image.c4b9b9c11580 done
|
|
377
|
-
#16 DONE 6.8s
|
|
360
|
+
#15 exporting to image
|
|
361
|
+
#15 exporting layers
|
|
362
|
+
#15 exporting layers 6.2s done
|
|
363
|
+
#15 writing image sha256:c57294107f92d381df9e569c013f53251e5920ab9657b2555e7973d08e34a8b9 done
|
|
364
|
+
#15 naming to containers.pl-open.science/milaboratories/pl-containers:local-image.8cb8b0c9852b done
|
|
365
|
+
#15 DONE 6.2s
|
|
378
366
|
[32minfo[39m: Docker image is built:
|
|
379
|
-
tag: 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.
|
|
367
|
+
tag: 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.c57294107f92'
|
|
380
368
|
location file: '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/dist/artifacts/py-docker/docker_x64.json'
|
|
381
369
|
[32minfo[39m: Building package archives...
|
|
382
370
|
[32minfo[39m: Building software package 'py-archive' for platform 'linux-x64'...
|
|
383
371
|
[32minfo[39m: software archive is built:
|
|
384
|
-
archive: '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/pkg-platforma-open-milaboratories.3d-structure-prediction.software-py-archive-1.0.
|
|
372
|
+
archive: '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/pkg-platforma-open-milaboratories.3d-structure-prediction.software-py-archive-1.1.0.tgz'
|
|
385
373
|
location file: '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/dist/artifacts/py-archive/archive.json'
|
|
386
374
|
[32minfo[39m: Rendering entrypoint descriptors...
|
|
387
375
|
[32minfo[39m: Writing entrypoint descriptor to '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/dist/tengo/software/immunebuilder-predict.sw.json'
|
|
388
376
|
[32minfo[39m: Publishing docker images...
|
|
389
|
-
[32minfo[39m: Publishing docker image 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.
|
|
377
|
+
[32minfo[39m: Publishing docker image 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.c57294107f92' using alternative tag 'quay.io/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.c57294107f92'
|
|
390
378
|
The push refers to repository [quay.io/milaboratories/pl-containers]
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
8fc5584786d3: Preparing
|
|
379
|
+
6e93dcd8c21d: Preparing
|
|
380
|
+
e84cb5bbce29: Preparing
|
|
381
|
+
4f458db9022f: Preparing
|
|
382
|
+
84f86718aee1: Preparing
|
|
383
|
+
b1d4a736813b: Preparing
|
|
397
384
|
cc176b242a57: Preparing
|
|
398
385
|
0f6514ac2db1: Preparing
|
|
399
386
|
271be3d5c5cf: Preparing
|
|
@@ -406,9 +393,6 @@ f8663d674596: Preparing
|
|
|
406
393
|
c018a1aad765: Preparing
|
|
407
394
|
438ed031efcc: Preparing
|
|
408
395
|
8e2ab394fabf: Preparing
|
|
409
|
-
8fc5584786d3: Waiting
|
|
410
|
-
cc176b242a57: Waiting
|
|
411
|
-
0f6514ac2db1: Waiting
|
|
412
396
|
271be3d5c5cf: Waiting
|
|
413
397
|
f9926f359887: Waiting
|
|
414
398
|
5f70bf18a086: Waiting
|
|
@@ -418,21 +402,22 @@ f8663d674596: Waiting
|
|
|
418
402
|
c018a1aad765: Waiting
|
|
419
403
|
438ed031efcc: Waiting
|
|
420
404
|
8e2ab394fabf: Waiting
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
405
|
+
cc176b242a57: Waiting
|
|
406
|
+
0f6514ac2db1: Waiting
|
|
407
|
+
e84cb5bbce29: Pushed
|
|
408
|
+
6e93dcd8c21d: Pushed
|
|
409
|
+
84f86718aee1: Pushed
|
|
424
410
|
cc176b242a57: Layer already exists
|
|
425
411
|
0f6514ac2db1: Layer already exists
|
|
426
|
-
f9926f359887: Layer already exists
|
|
427
412
|
271be3d5c5cf: Layer already exists
|
|
413
|
+
f9926f359887: Layer already exists
|
|
428
414
|
5f70bf18a086: Layer already exists
|
|
429
415
|
e3b1db6d44c6: Layer already exists
|
|
430
|
-
f8663d674596: Layer already exists
|
|
431
416
|
a818d59f8c76: Layer already exists
|
|
417
|
+
f8663d674596: Layer already exists
|
|
432
418
|
c018a1aad765: Layer already exists
|
|
433
|
-
438ed031efcc: Layer already exists
|
|
434
419
|
8e2ab394fabf: Layer already exists
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
platforma-open.milaboratories.3d-structure-prediction.software.py-docker.
|
|
420
|
+
438ed031efcc: Layer already exists
|
|
421
|
+
4f458db9022f: Pushed
|
|
422
|
+
b1d4a736813b: Pushed
|
|
423
|
+
platforma-open.milaboratories.3d-structure-prediction.software.py-docker.c57294107f92: digest: sha256:6516e709cede5d5769159706ffc2a967bb6373238964c9ae0f717f05600c6c7a size: 3860
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @platforma-open/milaboratories.3d-structure-prediction.software
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 37da856: Export only confident structures. The PDB ResourceMap now contains only confident clonotypes — prediction succeeded AND the selected error metric is within threshold — and the `confident` / `predictionSuccessful` subset filter columns are no longer exported. Downstream blocks consume confident structures directly, with no all-vs-confident selection to make. The results table still shows every clonotype and every column (confidence values, failure reasons, warnings); failed and unconfident clonotypes simply have no downloadable PDB. Confident filtering is applied once, in the Python wrapper's manifest, so the PDB map is built by the existing stable path (no post-hoc rebuild).
|
|
8
|
+
|
|
9
|
+
Clonotypes whose prediction succeeded but whose error exceeds the confidence threshold now carry a failure reason — "Prediction confidence above threshold (<value> Å)" — so the table explains why they have no downloadable structure (their error values remain visible).
|
|
10
|
+
|
|
11
|
+
Output column traces are now rooted in the Lead Selection filter when present, so predictions off the same dataset with different filters carry distinguishable provenance (dataset → lead selection → prediction) in downstream labels.
|
|
12
|
+
|
|
13
|
+
The error-distribution histogram now shows the confidence threshold as a dashed vertical line (via a `pl7.app/graph/thresholds` annotation on the selected-metric column) — on the CDR-H3 page for the `cdrh3Mean` metric, or the Mean page for `overallMean`.
|
|
14
|
+
|
|
15
|
+
## 1.0.7
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 8aeaff0: Load ImmuneBuilder model weights from a published Platforma asset (`immunebuilder-weights-assets`) instead of downloading them from Zenodo at runtime. The matching per-mode asset is mounted into each batch workdir and passed to ImmuneBuilder via `--weights-dir`. Removes the pre-warmup step, the per-batch warmup sentinel wiring, and the Docker image weight bake.
|
|
20
|
+
|
|
3
21
|
## 1.0.6
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/Dockerfile
CHANGED
|
@@ -55,15 +55,6 @@ RUN pip install --no-cache-dir \
|
|
|
55
55
|
--extra-index-url https://download.pytorch.org/whl/cpu \
|
|
56
56
|
-r /tmp/requirements.txt
|
|
57
57
|
|
|
58
|
-
# Pre-download model weights into the image. ImmuneBuilder otherwise writes
|
|
59
|
-
# them into its own site-packages dir (/opt/conda/.../ImmuneBuilder/trained_model/)
|
|
60
|
-
# on first use. That works locally because we're root, but cloud runtimes
|
|
61
|
-
# run as a non-root user and hit PermissionError. Doing the download at
|
|
62
|
-
# build time bakes ~400 MB of weights into the image and the runtime is
|
|
63
|
-
# read-only there, which is what we want.
|
|
64
|
-
RUN python -c "from ImmuneBuilder import ABodyBuilder2, NanoBodyBuilder2; ABodyBuilder2(); NanoBodyBuilder2()" \
|
|
65
|
-
&& chmod -R a+rX /opt/conda/lib/python3.12/site-packages/ImmuneBuilder/trained_model
|
|
66
|
-
|
|
67
58
|
# Block sources (everything in src_python/).
|
|
68
59
|
WORKDIR /app
|
|
69
60
|
COPY . /app/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"python","platform":"linux-x64","registryURL":"https://bin.pl-open.science/","registryName":"platforma-open","remoteArtifactLocation":"software/platforma-open/milaboratories.3d-structure-prediction.software/py-archive/1.0.
|
|
1
|
+
{"type":"python","platform":"linux-x64","registryURL":"https://bin.pl-open.science/","registryName":"platforma-open","remoteArtifactLocation":"software/platforma-open/milaboratories.3d-structure-prediction.software/py-archive/1.1.0.tgz","uploadPath":"software/platforma-open/milaboratories.3d-structure-prediction.software/py-archive/1.1.0.tgz"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"docker","platform":"linux-x64","remoteArtifactLocation":"containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.
|
|
1
|
+
{"type":"docker","platform":"linux-x64","remoteArtifactLocation":"containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.c57294107f92","entrypoint":["/usr/local/bin/_entrypoint.sh"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@platforma-open/milaboratories.3d-structure-prediction.software:immunebuilder-predict","docker":{"tag":"containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.
|
|
1
|
+
{"name":"@platforma-open/milaboratories.3d-structure-prediction.software:immunebuilder-predict","docker":{"tag":"containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.c57294107f92","entrypoint":["/usr/local/bin/_entrypoint.sh"],"cmd":["python","/app/run_immunebuilder.py"],"pkg":"/app"},"binary":{"type":"python","registry":"platforma-open","package":"software/platforma-open/milaboratories.3d-structure-prediction.software/py-archive/1.1.0.tgz","cmd":["python","{pkg}/run_immunebuilder.py"],"envVars":[],"runEnv":{"name":"@platforma-open/milaboratories.runenv-python-3:3.12.10-atls","type":"python","registry":"platforma-open","package":"software/platforma-open/milaboratories.runenv-python-3.12.10-atls/main/1.2.7-{os}-{arch}.tgz","python-version":"3.12.10","envVars":[],"binDir":"bin"},"toolset":"pip","dependencies":{"requirements":"requirements.txt"}}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-open/milaboratories.3d-structure-prediction.software",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Block Software",
|
|
6
6
|
"block-software": {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@platforma-open/milaboratories.runenv-python-3": "1.8.6",
|
|
45
|
-
"@platforma-sdk/package-builder": "3.
|
|
45
|
+
"@platforma-sdk/package-builder": "3.13.0"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|
|
48
48
|
"do-pack": "shx rm -f *.tgz && pl-pkg build && pnpm pack && shx mv platforma-open*.tgz package.tgz",
|
package/pkg-platforma-open-milaboratories.3d-structure-prediction.software-py-archive-1.1.0.tgz
ADDED
|
Binary file
|
|
@@ -4,9 +4,12 @@ Reads a batch TSV of clonotypes and predicts structures via ABodyBuilder2 or
|
|
|
4
4
|
NanoBodyBuilder2 (spec R22). Emits:
|
|
5
5
|
|
|
6
6
|
- Per-clonotype PDB files named `<sha1(clonotypeKey)>.pdb` (R30).
|
|
7
|
-
- `manifest.tsv` : (clonotypeKey, pdb_filename)
|
|
7
|
+
- `manifest.tsv` : (clonotypeKey, pdb_filename) — confident clonotypes only
|
|
8
|
+
(success AND selected metric ≤ threshold); drives the
|
|
9
|
+
exported/UI PDB ResourceMap.
|
|
8
10
|
- `confidence.tsv`: aggregate + per-residue confidence (Å error, R32-R36)
|
|
9
|
-
plus failureReason (R40) and warning columns
|
|
11
|
+
plus failureReason (R40) and warning columns — every row,
|
|
12
|
+
confident or not.
|
|
10
13
|
|
|
11
14
|
Dependencies (ImmuneBuilder, torch) ride the venv that pl-pkg's install-deps
|
|
12
15
|
creates. ANARCI and pdbfixer are not on PyPI; the atls runenv builds them
|
|
@@ -138,6 +141,18 @@ def _failure_reason_label(code: str) -> str:
|
|
|
138
141
|
def _warning_label(code: str) -> str:
|
|
139
142
|
return WARNING_LABELS.get(code, code)
|
|
140
143
|
|
|
144
|
+
# Failure-reason code for a successful prediction whose selected error metric
|
|
145
|
+
# is above the confidence threshold (so it's excluded from the PDB map). The
|
|
146
|
+
# code is stable for grouping; the human text (with the threshold value) is set
|
|
147
|
+
# per-run via RowResult.failure_reason_text.
|
|
148
|
+
CONFIDENCE_ABOVE_THRESHOLD_REASON = "confidence_above_threshold"
|
|
149
|
+
|
|
150
|
+
# Failure-reason code for a successful prediction whose selected confidence
|
|
151
|
+
# metric could not be computed (so no threshold comparison was possible). Kept
|
|
152
|
+
# distinct from CONFIDENCE_ABOVE_THRESHOLD_REASON so the table doesn't imply a
|
|
153
|
+
# numeric comparison that never happened.
|
|
154
|
+
CONFIDENCE_METRIC_UNAVAILABLE_REASON = "confidence_metric_unavailable"
|
|
155
|
+
|
|
141
156
|
MANIFEST_FIELDS = [KEY_COLUMN_PLACEHOLDER, "pdb_filename"]
|
|
142
157
|
|
|
143
158
|
|
|
@@ -183,6 +198,10 @@ class RowResult:
|
|
|
183
198
|
per_residue_json: str = ""
|
|
184
199
|
cdrh3_len: str = ""
|
|
185
200
|
failure_reason: str = ""
|
|
201
|
+
# Optional human text override; when set, used verbatim instead of the
|
|
202
|
+
# static FAILURE_REASON_LABELS lookup (lets us embed runtime values such as
|
|
203
|
+
# the confidence threshold).
|
|
204
|
+
failure_reason_text: str = ""
|
|
186
205
|
warnings: list[str] = field(default_factory=list)
|
|
187
206
|
pdb_filename: str = ""
|
|
188
207
|
|
|
@@ -208,7 +227,7 @@ class RowResult:
|
|
|
208
227
|
"perResidueError": self.per_residue_json,
|
|
209
228
|
"cdrh3Length": self.cdrh3_len,
|
|
210
229
|
"failureReason": self.failure_reason,
|
|
211
|
-
"failureReasonText": _failure_reason_label(self.failure_reason),
|
|
230
|
+
"failureReasonText": self.failure_reason_text or _failure_reason_label(self.failure_reason),
|
|
212
231
|
"warning": self.warning_str,
|
|
213
232
|
"warningText": self.warning_text,
|
|
214
233
|
}
|
|
@@ -228,13 +247,18 @@ def _region_errors(per_residue, chain: str, cdr_name: str) -> list[float]:
|
|
|
228
247
|
]
|
|
229
248
|
|
|
230
249
|
|
|
231
|
-
def _load_predictor(mode: str):
|
|
250
|
+
def _load_predictor(mode: str, weights_dir: str | None = None):
|
|
251
|
+
# weights_dir points at the asset mounted into the workdir (see
|
|
252
|
+
# predict-batch.tpl.tengo). ImmuneBuilder loads `<weights_dir>/<model_file>`
|
|
253
|
+
# and only downloads from Zenodo when the file is missing — which, with the
|
|
254
|
+
# asset present, never happens. weights_dir=None preserves upstream
|
|
255
|
+
# download-to-site-packages behaviour for local/manual runs.
|
|
232
256
|
if mode == "ABodyBuilder2":
|
|
233
257
|
from ImmuneBuilder import ABodyBuilder2
|
|
234
|
-
return ABodyBuilder2()
|
|
258
|
+
return ABodyBuilder2(weights_dir=weights_dir)
|
|
235
259
|
if mode == "NanoBodyBuilder2":
|
|
236
260
|
from ImmuneBuilder import NanoBodyBuilder2
|
|
237
|
-
return NanoBodyBuilder2()
|
|
261
|
+
return NanoBodyBuilder2(weights_dir=weights_dir)
|
|
238
262
|
raise ValueError(f"unknown mode: {mode}")
|
|
239
263
|
|
|
240
264
|
|
|
@@ -381,6 +405,7 @@ def process_batch(
|
|
|
381
405
|
seed: int,
|
|
382
406
|
metric: str,
|
|
383
407
|
threshold: float,
|
|
408
|
+
weights_dir: str | None = None,
|
|
384
409
|
) -> None:
|
|
385
410
|
pdb_dir.mkdir(parents=True, exist_ok=True)
|
|
386
411
|
manifest_tsv.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -406,7 +431,7 @@ def process_batch(
|
|
|
406
431
|
_set_seed(seed)
|
|
407
432
|
if rows:
|
|
408
433
|
_log(f"loading {mode} ensemble (4 models)")
|
|
409
|
-
predictor = _load_predictor(mode)
|
|
434
|
+
predictor = _load_predictor(mode, weights_dir)
|
|
410
435
|
_log("predictor ready")
|
|
411
436
|
else:
|
|
412
437
|
predictor = None
|
|
@@ -537,13 +562,43 @@ def process_batch(
|
|
|
537
562
|
manifest_fields = [key_col if f == KEY_COLUMN_PLACEHOLDER else f for f in MANIFEST_FIELDS]
|
|
538
563
|
confidence_fields = build_confidence_fields(key_col)
|
|
539
564
|
|
|
565
|
+
# Build the summary BEFORE the confident-marking loop below, so its
|
|
566
|
+
# semantics stay stable: `succeeded` = a structure was produced (regardless
|
|
567
|
+
# of confidence) and `confidentCount` = the within-threshold subset. The
|
|
568
|
+
# loop then tags above-threshold / metric-unavailable rows with a failure
|
|
569
|
+
# reason for the per-row table; that must not retroactively inflate the
|
|
570
|
+
# summary's failure count or collapse `succeeded` onto `confidentCount`.
|
|
571
|
+
summary = _build_summary(results, metric, threshold)
|
|
572
|
+
|
|
573
|
+
# A structure was produced, but it isn't confident enough to export. Two
|
|
574
|
+
# distinct cases, surfaced as distinct failure reasons so the user (and any
|
|
575
|
+
# downstream tooling) can tell them apart — the confidence values still
|
|
576
|
+
# appear in the table either way. This is the single confident filter for
|
|
577
|
+
# the block.
|
|
578
|
+
for r in results:
|
|
579
|
+
if r.failure_reason or not r.pdb_filename:
|
|
580
|
+
continue
|
|
581
|
+
v = _metric_value(r, metric)
|
|
582
|
+
if v is None:
|
|
583
|
+
# The selected metric couldn't be computed (e.g. the CDR-H3 region
|
|
584
|
+
# produced no numbered residues) — no comparison was made.
|
|
585
|
+
r.failure_reason = CONFIDENCE_METRIC_UNAVAILABLE_REASON
|
|
586
|
+
r.failure_reason_text = "Confidence metric unavailable"
|
|
587
|
+
elif v > threshold:
|
|
588
|
+
r.failure_reason = CONFIDENCE_ABOVE_THRESHOLD_REASON
|
|
589
|
+
r.failure_reason_text = f"Prediction confidence above threshold ({threshold} Å)"
|
|
590
|
+
|
|
591
|
+
# The manifest selects which PDBs become the exported/UI ResourceMap: only
|
|
592
|
+
# clonotypes that have a structure and no failure reason. Failed and the
|
|
593
|
+
# low-confidence rows just marked are excluded, so the map is confident-only
|
|
594
|
+
# by construction.
|
|
540
595
|
with open(manifest_tsv, "w", newline="") as f:
|
|
541
596
|
writer = csv.DictWriter(
|
|
542
597
|
f, fieldnames=manifest_fields, delimiter="\t", lineterminator="\n"
|
|
543
598
|
)
|
|
544
599
|
writer.writeheader()
|
|
545
600
|
for r in results:
|
|
546
|
-
if r.pdb_filename:
|
|
601
|
+
if r.pdb_filename and not r.failure_reason:
|
|
547
602
|
writer.writerow({key_col: r.clonotype_key, "pdb_filename": r.pdb_filename})
|
|
548
603
|
|
|
549
604
|
with open(confidence_tsv, "w", newline="") as f:
|
|
@@ -552,7 +607,6 @@ def process_batch(
|
|
|
552
607
|
for r in results:
|
|
553
608
|
writer.writerow(r.to_tsv_row(key_col))
|
|
554
609
|
|
|
555
|
-
summary = _build_summary(results, metric, threshold)
|
|
556
610
|
if summary_json is not None:
|
|
557
611
|
summary_json.parent.mkdir(parents=True, exist_ok=True)
|
|
558
612
|
with open(summary_json, "w") as f:
|
|
@@ -575,29 +629,13 @@ def process_batch(
|
|
|
575
629
|
_log(f" warning: {n_warn} × {warning}")
|
|
576
630
|
|
|
577
631
|
|
|
578
|
-
def warmup(mode: str, sentinel: Path | None) -> None:
|
|
579
|
-
"""Force the ImmuneBuilder weight download into a known cache location.
|
|
580
|
-
|
|
581
|
-
Run as a single pre-step before the parallel batch fan-out. Avoids the
|
|
582
|
-
race where multiple batch containers download the same weight files into
|
|
583
|
-
a shared cache dir simultaneously, producing partial / corrupt files.
|
|
584
|
-
"""
|
|
585
|
-
_log(f"warmup mode={mode} loading predictor (this may download weights)")
|
|
586
|
-
_load_predictor(mode)
|
|
587
|
-
if sentinel is not None:
|
|
588
|
-
sentinel.write_text(
|
|
589
|
-
f"mode={mode}\nimmunebuilder_version={get_immunebuilder_version()}\n"
|
|
590
|
-
)
|
|
591
|
-
_log("warmup OK")
|
|
592
|
-
|
|
593
|
-
|
|
594
632
|
def main() -> None:
|
|
595
633
|
parser = argparse.ArgumentParser()
|
|
596
634
|
parser.add_argument("--mode", choices=["ABodyBuilder2", "NanoBodyBuilder2"], required=True)
|
|
597
|
-
parser.add_argument("--
|
|
598
|
-
help="
|
|
599
|
-
|
|
600
|
-
|
|
635
|
+
parser.add_argument("--weights-dir", default=None,
|
|
636
|
+
help="Directory holding the ImmuneBuilder model weights "
|
|
637
|
+
"(mounted from the weights asset). When omitted, "
|
|
638
|
+
"ImmuneBuilder downloads them on first use.")
|
|
601
639
|
parser.add_argument("--input", help="Batch TSV with clonotypeKey, heavyChain[, lightChain]")
|
|
602
640
|
parser.add_argument("--output-dir", help="Directory for per-clonotype PDB files")
|
|
603
641
|
parser.add_argument("--manifest", help="Path to manifest.tsv")
|
|
@@ -609,10 +647,6 @@ def main() -> None:
|
|
|
609
647
|
help="Confidence threshold (Å) used to derive confidentCount in summary.json")
|
|
610
648
|
args = parser.parse_args()
|
|
611
649
|
|
|
612
|
-
if args.warmup:
|
|
613
|
-
warmup(args.mode, Path(args.sentinel) if args.sentinel else None)
|
|
614
|
-
return
|
|
615
|
-
|
|
616
650
|
missing = [
|
|
617
651
|
name for name, value in [
|
|
618
652
|
("--input", args.input),
|
|
@@ -622,7 +656,7 @@ def main() -> None:
|
|
|
622
656
|
] if not value
|
|
623
657
|
]
|
|
624
658
|
if missing:
|
|
625
|
-
parser.error(f"the following arguments are required
|
|
659
|
+
parser.error(f"the following arguments are required: {', '.join(missing)}")
|
|
626
660
|
|
|
627
661
|
process_batch(
|
|
628
662
|
input_tsv=Path(args.input),
|
|
@@ -634,6 +668,7 @@ def main() -> None:
|
|
|
634
668
|
seed=args.seed,
|
|
635
669
|
metric=args.metric,
|
|
636
670
|
threshold=args.threshold,
|
|
671
|
+
weights_dir=args.weights_dir,
|
|
637
672
|
)
|
|
638
673
|
|
|
639
674
|
|