@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.
@@ -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.6 build /home/runner/work/3d-structure-prediction/3d-structure-prediction/software
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
  info: 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: 3.16kB 0.0s done
11
+ #1 transferring dockerfile: 2.53kB done
12
12
  #1 DONE 0.0s
13
13
 
14
- #2 resolve image config for docker-image://docker.io/docker/dockerfile:1
15
- #2 ...
14
+ #2 [auth] docker/dockerfile:pull token for registry-1.docker.io
15
+ #2 DONE 0.0s
16
16
 
17
- #3 [auth] docker/dockerfile:pull token for registry-1.docker.io
18
- #3 DONE 0.0s
17
+ #3 resolve image config for docker-image://docker.io/docker/dockerfile:1
18
+ #3 DONE 0.5s
19
19
 
20
- #2 resolve image config for docker-image://docker.io/docker/dockerfile:1
21
- #2 DONE 0.9s
22
-
23
- #4 docker-image://docker.io/docker/dockerfile:1@sha256:2780b5c3bab67f1f76c781860de469442999ed1a0d7992a5efdf2cffc0e3d769
24
- #4 resolve docker.io/docker/dockerfile:1@sha256:2780b5c3bab67f1f76c781860de469442999ed1a0d7992a5efdf2cffc0e3d769 done
25
- #4 sha256:14cdce40ae0e938cf7d2d7fe6aa3dec2beb66aa066d6a54356c64fd8af6323c2 1.33kB / 1.33kB done
26
- #4 sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 2.10MB / 14.11MB 0.1s
27
- #4 sha256:2780b5c3bab67f1f76c781860de469442999ed1a0d7992a5efdf2cffc0e3d769 8.43kB / 8.43kB done
28
- #4 sha256:369c4e6584693f8e13d7a27755a6b10201798e229cdfad5eae04ea5f15a76412 1.13kB / 1.13kB done
29
- #4 sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 14.11MB / 14.11MB 0.1s done
30
- #4 extracting sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 0.1s
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.8s
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 [internal] load build context
48
- #8 transferring context: 36.22kB done
49
- #8 DONE 0.0s
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
- #9 [1/7] FROM docker.io/mambaorg/micromamba:1.5.10@sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d
52
- #9 resolve docker.io/mambaorg/micromamba:1.5.10@sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d done
53
- #9 sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d 2.36kB / 2.36kB done
54
- #9 sha256:008e06cd8432eb558faa4738a092f30b38dd8db3137a5dd3fca57374a790825b 2.56kB / 2.56kB done
55
- #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 0B / 29.13MB 0.1s
56
- #9 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 0B / 6.20MB 0.1s
57
- #9 sha256:c5ef7ca066aec9ae6b5a07ceca914beded0754d74f2006b33ee80cb661688f74 6.28kB / 6.28kB done
58
- #9 sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 0B / 122.68kB 0.1s
59
- #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 6.29MB / 29.13MB 0.2s
60
- #9 sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 122.68kB / 122.68kB 0.1s done
61
- #9 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0B / 32B 0.2s
62
- #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 29.13MB / 29.13MB 0.3s done
63
- #9 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 6.20MB / 6.20MB 0.3s done
64
- #9 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.3s done
65
- #9 sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 0B / 282B 0.3s
66
- #9 sha256:9a782d6d1eace15aadfa1d16eb83ad2abdea075c6c9e200247950571a3719e10 0B / 3.77kB 0.3s
67
- #9 sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed 0B / 521B 0.3s
68
- #9 extracting sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b
69
- #9 sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 282B / 282B 0.4s done
70
- #9 sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed 521B / 521B 0.4s done
71
- #9 sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 0B / 683B 0.4s
72
- #9 sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 0B / 215B 0.4s
73
- #9 sha256:9a782d6d1eace15aadfa1d16eb83ad2abdea075c6c9e200247950571a3719e10 3.77kB / 3.77kB 0.4s done
74
- #9 sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 683B / 683B 0.5s done
75
- #9 sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 215B / 215B 0.4s done
76
- #9 sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 0B / 645B 0.5s
77
- #9 sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29 0B / 345B 0.5s
78
- #9 sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 645B / 645B 0.5s done
79
- #9 sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29 345B / 345B 0.5s done
80
- #9 extracting sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 1.4s done
81
- #9 extracting sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 done
82
- #9 extracting sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880
83
- #9 extracting sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 0.1s done
84
- #9 extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 done
85
- #9 extracting sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed
86
- #9 extracting sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed done
87
- #9 extracting sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 done
88
- #9 extracting sha256:9a782d6d1eace15aadfa1d16eb83ad2abdea075c6c9e200247950571a3719e10 done
89
- #9 extracting sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 done
90
- #9 extracting sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 done
91
- #9 extracting sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 done
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/7] 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
96
- #10 19.46
97
- #10 19.46 Transaction
98
- #10 19.46
99
- #10 19.46 Prefix: /opt/conda
100
- #10 19.46
101
- #10 19.46 Updating specs:
102
- #10 19.46
103
- #10 19.46 - python=3.12.10
104
- #10 19.46 - anarci
105
- #10 19.46 - hmmer
106
- #10 19.46 - biopython=1.85
107
- #10 19.46 - openmm=8.3.1
108
- #10 19.46 - pdbfixer=1.12.0
109
- #10 19.46 - numpy=2.4.3
110
- #10 19.46 - scipy=1.17.1
111
- #10 19.46
112
- #10 19.46
113
- #10 19.47 Package Version Build Channel Size
114
- #10 19.47 ───────────────────────────────────────────────────────────────────────────────
115
- #10 19.47 Install:
116
- #10 19.47 ───────────────────────────────────────────────────────────────────────────────
117
- #10 19.47
118
- #10 19.47 + python_abi 3.12 8_cp312 conda-forge 7kB
119
- #10 19.47 + tzdata 2025c hc9c84f9_1 conda-forge 119kB
120
- #10 19.47 + ca-certificates 2026.4.22 hbd8a1cb_0 conda-forge 131kB
121
- #10 19.47 + cuda-version 12.9 h4f385c5_3 conda-forge 22kB
122
- #10 19.47 + libzlib 1.3.2 h25fd6f3_2 conda-forge 64kB
123
- #10 19.47 + libgomp 15.2.0 he0feb66_19 conda-forge 604kB
124
- #10 19.47 + mpi 1.0 openmpi conda-forge 4kB
125
- #10 19.47 + zlib 1.3.2 h25fd6f3_2 conda-forge 96kB
126
- #10 19.47 + zstd 1.5.7 hb78ec9c_6 conda-forge 601kB
127
- #10 19.47 + _openmp_mutex 4.5 20_gnu conda-forge 29kB
128
- #10 19.47 + ld_impl_linux-64 2.45.1 default_hbd61a6d_102 conda-forge 728kB
129
- #10 19.47 + libgcc 15.2.0 he0feb66_19 conda-forge 1MB
130
- #10 19.47 + tk 8.6.13 noxft_h366c992_103 conda-forge 3MB
131
- #10 19.47 + libsqlite 3.53.1 h0c1763c_0 conda-forge 955kB
132
- #10 19.47 + openssl 3.6.2 h35e630c_0 conda-forge 3MB
133
- #10 19.47 + ncurses 6.6 hdb14827_0 conda-forge 919kB
134
- #10 19.47 + libuuid 2.42.1 h5347b49_0 conda-forge 40kB
135
- #10 19.47 + libnsl 2.0.1 hb9d3cd8_1 conda-forge 34kB
136
- #10 19.47 + liblzma 5.8.3 hb03c661_0 conda-forge 113kB
137
- #10 19.47 + libffi 3.4.6 h2dba641_1 conda-forge 57kB
138
- #10 19.47 + libexpat 2.8.0 hecca717_0 conda-forge 77kB
139
- #10 19.47 + bzip2 1.0.8 hda65f42_9 conda-forge 260kB
140
- #10 19.47 + libstdcxx 15.2.0 h934c35e_19 conda-forge 6MB
141
- #10 19.47 + libgcc-ng 15.2.0 h69a702a_19 conda-forge 28kB
142
- #10 19.47 + libgfortran5 15.2.0 h68bc16d_19 conda-forge 2MB
143
- #10 19.47 + readline 8.3 h853b02a_0 conda-forge 345kB
144
- #10 19.47 + opencl-headers 2025.06.13 hecca717_0 conda-forge 56kB
145
- #10 19.47 + libstdcxx-ng 15.2.0 hdf11a46_19 conda-forge 28kB
146
- #10 19.47 + libcufft 11.4.1.4 hecca717_1 conda-forge 162MB
147
- #10 19.47 + cuda-nvrtc 12.9.86 hecca717_1 conda-forge 67MB
148
- #10 19.47 + libxcrypt 4.4.36 hd590300_1 conda-forge 100kB
149
- #10 19.47 + libgfortran 15.2.0 h69a702a_19 conda-forge 28kB
150
- #10 19.47 + ocl-icd 2.3.3 hb9d3cd8_0 conda-forge 107kB
151
- #10 19.47 + python 3.12.10 h9e4cc4f_0_cpython conda-forge 31MB
152
- #10 19.47 + libgfortran-ng 15.2.0 h69a702a_19 conda-forge 28kB
153
- #10 19.47 + libopenblas 0.3.33 pthreads_h94d23a6_0 conda-forge 6MB
154
- #10 19.47 + ocl-icd-system 1.0.0 1 conda-forge 4kB
155
- #10 19.47 + openmpi 4.1.6 hc5af2df_101 conda-forge 4MB
156
- #10 19.47 + libblas 3.11.0 7_h4a7cf45_openblas conda-forge 19kB
157
- #10 19.47 + libcblas 3.11.0 7_h0358290_openblas conda-forge 19kB
158
- #10 19.47 + liblapack 3.11.0 7_h47877c9_openblas conda-forge 19kB
159
- #10 19.47 + gsl 2.7 he838d99_0 conda-forge 3MB
160
- #10 19.47 + packaging 26.2 pyhc364b38_0 conda-forge 92kB
161
- #10 19.47 + setuptools 82.0.1 pyh332efcf_0 conda-forge 640kB
162
- #10 19.47 + wheel 0.47.0 pyhd8ed1ab_0 conda-forge 33kB
163
- #10 19.47 + pip 26.1.1 pyh8b19718_0 conda-forge 1MB
164
- #10 19.47 + legacy-cgi 2.6.4 pyhcf101f3_0 conda-forge 20kB
165
- #10 19.47 + hmmer 3.4 hb6cb901_4 bioconda 12MB
166
- #10 19.47 + numpy 2.4.3 py312h33ff503_0 conda-forge 9MB
167
- #10 19.47 + biopython 1.85 py312h4c3975b_2 conda-forge 3MB
168
- #10 19.47 + scipy 1.17.1 py312h54fa4ab_0 conda-forge 17MB
169
- #10 19.47 + openmm 8.3.1 py312h50c43f0_0 conda-forge 13MB
170
- #10 19.47 + anarci 2024.05.21 pyhdfd78af_0 bioconda 1MB
171
- #10 19.47 + pdbfixer 1.12 pyhd8ed1ab_1 conda-forge 546kB
172
- #10 19.47
173
- #10 19.47 Summary:
174
- #10 19.47
175
- #10 19.47 Install: 54 packages
176
- #10 19.47
177
- #10 19.47 Total download: 353MB
178
- #10 19.47
179
- #10 19.47 ───────────────────────────────────────────────────────────────────────────────
180
- #10 19.47
181
- #10 19.47
182
- #10 19.47
183
- #10 19.47 Transaction starting
184
- #10 24.63
185
- #10 24.77
186
- #10 24.77 For Linux 64, Open MPI is built with CUDA awareness but this support is disabled by default.
187
- #10 24.77 To enable it, please set the environment variable OMPI_MCA_opal_cuda_support=true before
188
- #10 24.77 launching your MPI processes. Equivalently, you can set the MCA parameter in the command line:
189
- #10 24.77 mpiexec --mca opal_cuda_support 1 ...
190
- #10 24.77
191
- #10 24.77 In addition, the UCX support is also built but disabled by default.
192
- #10 24.77 To enable it, first install UCX (conda install -c conda-forge ucx). Then, set the environment
193
- #10 24.77 variables OMPI_MCA_pml="ucx" OMPI_MCA_osc="ucx" before launching your MPI processes.
194
- #10 24.77 Equivalently, you can set the MCA parameters in the command line:
195
- #10 24.77 mpiexec --mca pml ucx --mca osc ucx ...
196
- #10 24.77 Note that you might also need to set UCX_MEMTYPE_CACHE=n for CUDA awareness via UCX.
197
- #10 24.77 Please consult UCX's documentation for detail.
198
- #10 24.77
199
- #10 24.77
200
- #10 25.83
201
- #10 25.83 Transaction finished
202
- #10 25.83
203
- #10 25.83 To activate this environment, use:
204
- #10 25.83
205
- #10 25.83 micromamba activate base
206
- #10 25.83
207
- #10 25.83 Or to execute a single command in this environment, use:
208
- #10 25.83
209
- #10 25.83 micromamba run -n base mycommand
210
- #10 25.83
211
- #10 25.87 Collect information..
212
- #10 25.87 Cleaning index cache..
213
- #10 25.92 Cleaning lock files..
214
- #10 25.92 Package file Size
215
- #10 25.92 ───────────────────────────────────────────────────────────────
216
- #10 25.92 /opt/conda/pkgs
217
- #10 25.92 ───────────────────────────────────────────────────────────────
218
- #10 25.92
219
- #10 25.92 _openmp_mutex-4.5-20_gnu.conda 29kB
220
- #10 25.92 anarci-2024.05.21-pyhdfd78af_0.tar.bz2 1MB
221
- #10 25.92 biopython-1.85-py312h4c3975b_2.conda 3MB
222
- #10 25.92 bzip2-1.0.8-hda65f42_9.conda 260kB
223
- #10 25.92 ca-certificates-2026.4.22-hbd8a1cb_0.conda 131kB
224
- #10 25.92 cuda-nvrtc-12.9.86-hecca717_1.conda 67MB
225
- #10 25.92 cuda-version-12.9-h4f385c5_3.conda 22kB
226
- #10 25.92 gsl-2.7-he838d99_0.tar.bz2 3MB
227
- #10 25.92 hmmer-3.4-hb6cb901_4.tar.bz2 12MB
228
- #10 25.92 ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda 728kB
229
- #10 25.92 legacy-cgi-2.6.4-pyhcf101f3_0.conda 20kB
230
- #10 25.92 libblas-3.11.0-7_h4a7cf45_openblas.conda 19kB
231
- #10 25.92 libcblas-3.11.0-7_h0358290_openblas.conda 19kB
232
- #10 25.92 libcufft-11.4.1.4-hecca717_1.conda 162MB
233
- #10 25.92 libexpat-2.8.0-hecca717_0.conda 77kB
234
- #10 25.92 libffi-3.4.6-h2dba641_1.conda 57kB
235
- #10 25.92 libgcc-15.2.0-he0feb66_19.conda 1MB
236
- #10 25.92 libgcc-ng-15.2.0-h69a702a_19.conda 28kB
237
- #10 25.92 libgfortran-15.2.0-h69a702a_19.conda 28kB
238
- #10 25.92 libgfortran-ng-15.2.0-h69a702a_19.conda 28kB
239
- #10 25.92 libgfortran5-15.2.0-h68bc16d_19.conda 2MB
240
- #10 25.92 libgomp-15.2.0-he0feb66_19.conda 604kB
241
- #10 25.92 liblapack-3.11.0-7_h47877c9_openblas.conda 19kB
242
- #10 25.92 liblzma-5.8.3-hb03c661_0.conda 113kB
243
- #10 25.92 libnsl-2.0.1-hb9d3cd8_1.conda 34kB
244
- #10 25.92 libopenblas-0.3.33-pthreads_h94d23a6_0.conda 6MB
245
- #10 25.92 libsqlite-3.53.1-h0c1763c_0.conda 955kB
246
- #10 25.92 libstdcxx-15.2.0-h934c35e_19.conda 6MB
247
- #10 25.92 libstdcxx-ng-15.2.0-hdf11a46_19.conda 28kB
248
- #10 25.92 libuuid-2.42.1-h5347b49_0.conda 40kB
249
- #10 25.92 libxcrypt-4.4.36-hd590300_1.conda 100kB
250
- #10 25.92 libzlib-1.3.2-h25fd6f3_2.conda 64kB
251
- #10 25.92 mpi-1.0-openmpi.tar.bz2 4kB
252
- #10 25.92 ncurses-6.6-hdb14827_0.conda 919kB
253
- #10 25.92 numpy-2.4.3-py312h33ff503_0.conda 9MB
254
- #10 25.92 ocl-icd-2.3.3-hb9d3cd8_0.conda 107kB
255
- #10 25.92 ocl-icd-system-1.0.0-1.tar.bz2 4kB
256
- #10 25.92 opencl-headers-2025.06.13-hecca717_0.conda 56kB
257
- #10 25.92 openmm-8.3.1-py312h50c43f0_0.conda 13MB
258
- #10 25.92 openmpi-4.1.6-hc5af2df_101.conda 4MB
259
- #10 25.92 openssl-3.6.2-h35e630c_0.conda 3MB
260
- #10 25.92 packaging-26.2-pyhc364b38_0.conda 92kB
261
- #10 25.92 pdbfixer-1.12-pyhd8ed1ab_1.conda 546kB
262
- #10 25.92 pip-26.1.1-pyh8b19718_0.conda 1MB
263
- #10 25.92 python-3.12.10-h9e4cc4f_0_cpython.conda 31MB
264
- #10 25.92 python_abi-3.12-8_cp312.conda 7kB
265
- #10 25.92 readline-8.3-h853b02a_0.conda 345kB
266
- #10 25.92 scipy-1.17.1-py312h54fa4ab_0.conda 17MB
267
- #10 25.92 setuptools-82.0.1-pyh332efcf_0.conda 640kB
268
- #10 25.92 tk-8.6.13-noxft_h366c992_103.conda 3MB
269
- #10 25.92 tzdata-2025c-hc9c84f9_1.conda 119kB
270
- #10 25.92 wheel-0.47.0-pyhd8ed1ab_0.conda 33kB
271
- #10 25.92 zlib-1.3.2-h25fd6f3_2.conda 96kB
272
- #10 25.92 zstd-1.5.7-hb78ec9c_6.conda 601kB
273
- #10 25.92
274
- #10 25.92 /root/.mamba/pkgs
275
- #10 25.92 ───────────────────────────────────────────────────────────────
276
- #10 25.92
277
- #10 25.92
278
- #10 25.92
279
- #10 25.92 ───────────────────────────────────────────────────────────────
280
- #10 25.92
281
- #10 25.92 Total size: 353MB
282
- #10 25.92 Cleaning tarballs..
283
- #10 25.97 Cleaning packages..
284
- #10 DONE 28.5s
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/7] COPY requirements.txt /tmp/requirements.txt
285
+ #11 [3/6] COPY requirements.txt /tmp/requirements.txt
287
286
  #11 DONE 0.0s
288
287
 
289
- #12 [4/7] RUN pip install --no-cache-dir --extra-index-url https://download.pytorch.org/whl/cpu -r /tmp/requirements.txt
290
- #12 0.736 Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cpu
291
- #12 1.082 Collecting ImmuneBuilder==1.2 (from -r /tmp/requirements.txt (line 1))
292
- #12 1.105 Downloading ImmuneBuilder-1.2-py3-none-any.whl.metadata (7.7 kB)
293
- #12 1.378 Collecting torch==2.7.0 (from -r /tmp/requirements.txt (line 2))
294
- #12 1.435 Downloading torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (27 kB)
295
- #12 1.439 Requirement already satisfied: biopython==1.85 in /opt/conda/lib/python3.12/site-packages (from -r /tmp/requirements.txt (line 3)) (1.85)
296
- #12 1.439 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)
297
- #12 1.440 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)
298
- #12 1.441 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)
299
- #12 1.441 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)
300
- #12 1.531 Collecting einops>=0.3 (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
301
- #12 1.533 Downloading einops-0.8.2-py3-none-any.whl.metadata (13 kB)
302
- #12 1.669 Collecting requests (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
303
- #12 1.672 Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
304
- #12 1.866 Collecting filelock (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
305
- #12 1.869 Downloading filelock-3.29.0-py3-none-any.whl.metadata (2.0 kB)
306
- #12 1.992 Collecting typing-extensions>=4.10.0 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
307
- #12 1.996 Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
308
- #12 1.999 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)
309
- #12 2.339 Collecting sympy>=1.13.3 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
310
- #12 2.342 Downloading sympy-1.14.0-py3-none-any.whl.metadata (12 kB)
311
- #12 2.468 Collecting networkx (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
312
- #12 2.471 Downloading networkx-3.6.1-py3-none-any.whl.metadata (6.8 kB)
313
- #12 2.587 Collecting jinja2 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
314
- #12 2.591 Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
315
- #12 2.940 Collecting fsspec (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
316
- #12 2.943 Downloading fsspec-2026.4.0-py3-none-any.whl.metadata (10 kB)
317
- #12 3.309 Collecting mpmath<1.4,>=1.1.0 (from sympy>=1.13.3->torch==2.7.0->-r /tmp/requirements.txt (line 2))
318
- #12 3.312 Downloading mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)
319
- #12 3.526 Collecting MarkupSafe>=2.0 (from jinja2->torch==2.7.0->-r /tmp/requirements.txt (line 2))
320
- #12 3.530 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)
321
- #12 3.709 Collecting charset_normalizer<4,>=2 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
322
- #12 3.712 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)
323
- #12 3.968 Collecting idna<4,>=2.5 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
324
- #12 3.971 Downloading idna-3.15-py3-none-any.whl.metadata (7.7 kB)
325
- #12 4.095 Collecting urllib3<3,>=1.26 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
326
- #12 4.098 Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
327
- #12 4.212 Collecting certifi>=2023.5.7 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
328
- #12 4.214 Downloading certifi-2026.4.22-py3-none-any.whl.metadata (2.5 kB)
329
- #12 4.224 Downloading ImmuneBuilder-1.2-py3-none-any.whl (32 kB)
330
- #12 4.233 Downloading torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl (175.8 MB)
331
- #12 4.825 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 175.8/175.8 MB 299.7 MB/s 0:00:00
332
- #12 4.827 Downloading einops-0.8.2-py3-none-any.whl (65 kB)
333
- #12 4.830 Downloading sympy-1.14.0-py3-none-any.whl (6.3 MB)
334
- #12 4.843 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.3/6.3 MB 577.8 MB/s 0:00:00
335
- #12 4.846 Downloading mpmath-1.3.0-py3-none-any.whl (536 kB)
336
- #12 4.848 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 741.9 MB/s 0:00:00
337
- #12 4.852 Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
338
- #12 4.855 Downloading filelock-3.29.0-py3-none-any.whl (39 kB)
339
- #12 4.857 Downloading fsspec-2026.4.0-py3-none-any.whl (203 kB)
340
- #12 4.861 Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
341
- #12 4.866 Downloading markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
342
- #12 4.869 Downloading networkx-3.6.1-py3-none-any.whl (2.1 MB)
343
- #12 4.873 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 713.3 MB/s 0:00:00
344
- #12 4.876 Downloading requests-2.34.2-py3-none-any.whl (73 kB)
345
- #12 4.878 Downloading charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (216 kB)
346
- #12 4.881 Downloading idna-3.15-py3-none-any.whl (72 kB)
347
- #12 4.883 Downloading urllib3-2.7.0-py3-none-any.whl (131 kB)
348
- #12 4.885 Downloading certifi-2026.4.22-py3-none-any.whl (135 kB)
349
- #12 5.195 Installing collected packages: mpmath, urllib3, typing-extensions, sympy, networkx, MarkupSafe, idna, fsspec, filelock, einops, charset_normalizer, certifi, requests, jinja2, torch, ImmuneBuilder
350
- #12 20.17
351
- #12 20.17 Successfully installed ImmuneBuilder-1.2 MarkupSafe-3.0.3 certifi-2026.4.22 charset_normalizer-3.4.7 einops-0.8.2 filelock-3.29.0 fsspec-2026.4.0 idna-3.15 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
352
- #12 20.17 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.
353
- #12 DONE 21.8s
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/7] RUN python -c "from ImmuneBuilder import ABodyBuilder2, NanoBodyBuilder2; ABodyBuilder2(); NanoBodyBuilder2()" && chmod -R a+rX /opt/conda/lib/python3.12/site-packages/ImmuneBuilder/trained_model
356
- #13 1.784 Downloading weights for antibody_model_1...
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/7] WORKDIR /app
357
+ #14 [6/6] COPY . /app/
367
358
  #14 DONE 0.0s
368
359
 
369
- #15 [7/7] COPY . /app/
370
- #15 DONE 0.0s
371
-
372
- #16 exporting to image
373
- #16 exporting layers
374
- #16 exporting layers 6.8s done
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
  info: Docker image is built:
379
- tag: 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.b5ab99a62334'
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
  info: Building package archives...
382
370
  info: Building software package 'py-archive' for platform 'linux-x64'...
383
371
  info: 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.6.tgz'
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
  info: Rendering entrypoint descriptors...
387
375
  info: Writing entrypoint descriptor to '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/dist/tengo/software/immunebuilder-predict.sw.json'
388
376
  info: Publishing docker images...
389
- info: Publishing docker image 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.b5ab99a62334' using alternative tag 'quay.io/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.b5ab99a62334'
377
+ info: 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
- d46418c456c6: Preparing
392
- 6e624e7b02d8: Preparing
393
- 666493f784b4: Preparing
394
- 4afd30e83b88: Preparing
395
- 3e3c56cad837: Preparing
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
- d46418c456c6: Pushed
422
- 3e3c56cad837: Pushed
423
- 6e624e7b02d8: Pushed
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
- 4afd30e83b88: Pushed
436
- 8fc5584786d3: Pushed
437
- 666493f784b4: Pushed
438
- platforma-open.milaboratories.3d-structure-prediction.software.py-docker.b5ab99a62334: digest: sha256:91be83929f6853320cefc38f5491e18b30bef25730e73006990e1496520efb46 size: 4073
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.6.tgz","uploadPath":"software/platforma-open/milaboratories.3d-structure-prediction.software/py-archive/1.0.6.tgz"}
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.b5ab99a62334","entrypoint":["/usr/local/bin/_entrypoint.sh"]}
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.b5ab99a62334","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.0.6.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"}}}
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.6",
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.12.0"
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",
@@ -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("--warmup", action="store_true",
598
- help="Pre-download model weights and exit. --input/--output-dir/--manifest/--confidence are not used.")
599
- parser.add_argument("--sentinel", default=None,
600
- help="In --warmup mode, path to a sentinel file written on success.")
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 when not in --warmup mode: {', '.join(missing)}")
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