@platforma-open/milaboratories.3d-structure-prediction.software 1.0.3 → 1.0.5

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.3 build /home/runner/work/3d-structure-prediction/3d-structure-prediction/software
3
+ > @platforma-open/milaboratories.3d-structure-prediction.software@1.0.5 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,64 +8,79 @@
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: 2.53kB done
11
+ #1 transferring dockerfile: 3.16kB done
12
12
  #1 DONE 0.0s
13
13
 
14
- #2 [auth] docker/dockerfile:pull token for registry-1.docker.io
15
- #2 DONE 0.0s
14
+ #2 resolve image config for docker-image://docker.io/docker/dockerfile:1
15
+ #2 ...
16
16
 
17
- #3 resolve image config for docker-image://docker.io/docker/dockerfile:1
18
- #3 DONE 0.5s
17
+ #3 [auth] docker/dockerfile:pull token for registry-1.docker.io
18
+ #3 DONE 0.0s
19
+
20
+ #2 resolve image config for docker-image://docker.io/docker/dockerfile:1
21
+ #2 DONE 0.9s
19
22
 
20
23
  #4 docker-image://docker.io/docker/dockerfile:1@sha256:2780b5c3bab67f1f76c781860de469442999ed1a0d7992a5efdf2cffc0e3d769
21
24
  #4 resolve docker.io/docker/dockerfile:1@sha256:2780b5c3bab67f1f76c781860de469442999ed1a0d7992a5efdf2cffc0e3d769 done
22
- #4 extracting sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f
25
+ #4 sha256:2780b5c3bab67f1f76c781860de469442999ed1a0d7992a5efdf2cffc0e3d769 8.43kB / 8.43kB done
23
26
  #4 sha256:369c4e6584693f8e13d7a27755a6b10201798e229cdfad5eae04ea5f15a76412 1.13kB / 1.13kB done
24
27
  #4 sha256:14cdce40ae0e938cf7d2d7fe6aa3dec2beb66aa066d6a54356c64fd8af6323c2 1.33kB / 1.33kB done
28
+ #4 sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 0B / 14.11MB 0.1s
25
29
  #4 sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 14.11MB / 14.11MB 0.1s done
26
- #4 sha256:2780b5c3bab67f1f76c781860de469442999ed1a0d7992a5efdf2cffc0e3d769 8.43kB / 8.43kB done
27
- #4 extracting sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 0.1s done
28
- #4 DONE 0.2s
30
+ #4 extracting sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 0.1s
31
+ #4 extracting sha256:bcb5d2ab7af67a669c932851c8bb8a26895dda6258900edfd7429d57bfd3592f 0.2s done
32
+ #4 DONE 0.3s
33
+
34
+ #5 [internal] load metadata for docker.io/mambaorg/micromamba:1.5.10
35
+ #5 ...
29
36
 
30
- #5 [auth] mambaorg/micromamba:pull token for registry-1.docker.io
31
- #5 DONE 0.0s
37
+ #6 [auth] mambaorg/micromamba:pull token for registry-1.docker.io
38
+ #6 DONE 0.0s
32
39
 
33
- #6 [internal] load metadata for docker.io/mambaorg/micromamba:1.5.10
34
- #6 DONE 0.4s
40
+ #5 [internal] load metadata for docker.io/mambaorg/micromamba:1.5.10
41
+ #5 DONE 1.0s
35
42
 
36
43
  #7 [internal] load .dockerignore
37
44
  #7 transferring context: 2B done
38
45
  #7 DONE 0.0s
39
46
 
40
47
  #8 [internal] load build context
41
- #8 transferring context: 36.40kB done
48
+ #8 transferring context: 36.22kB done
42
49
  #8 DONE 0.0s
43
50
 
44
- #9 [1/6] FROM docker.io/mambaorg/micromamba:1.5.10@sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d
51
+ #9 [1/7] FROM docker.io/mambaorg/micromamba:1.5.10@sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d
45
52
  #9 resolve docker.io/mambaorg/micromamba:1.5.10@sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d done
46
- #9 sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d 2.36kB / 2.36kB done
47
- #9 sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 122.68kB / 122.68kB 0.0s done
48
53
  #9 sha256:008e06cd8432eb558faa4738a092f30b38dd8db3137a5dd3fca57374a790825b 2.56kB / 2.56kB done
49
- #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 0B / 29.13MB 0.1s
50
- #9 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 5.24MB / 6.20MB 0.1s
51
54
  #9 sha256:c5ef7ca066aec9ae6b5a07ceca914beded0754d74f2006b33ee80cb661688f74 6.28kB / 6.28kB done
52
- #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 25.17MB / 29.13MB 0.2s
53
- #9 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 6.20MB / 6.20MB 0.1s done
54
- #9 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.1s done
55
- #9 sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 282B / 282B 0.1s done
56
- #9 sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 215B / 215B 0.2s done
57
- #9 sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed 521B / 521B 0.1s done
58
- #9 sha256:9a782d6d1eace15aadfa1d16eb83ad2abdea075c6c9e200247950571a3719e10 3.77kB / 3.77kB 0.2s done
59
- #9 sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 0B / 683B 0.2s
60
- #9 sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 0B / 645B 0.2s
61
- #9 extracting sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b
62
- #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 29.13MB / 29.13MB 0.2s done
63
- #9 sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 683B / 683B 0.2s done
64
- #9 sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 645B / 645B 0.2s done
65
- #9 sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29 345B / 345B 0.3s done
66
- #9 extracting sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 1.0s done
55
+ #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 0B / 29.13MB 0.1s
56
+ #9 sha256:e3797091302382ea841498bc93a7b0a50f7c1448333d5e946d2d1608d0c5f43d 2.36kB / 2.36kB done
57
+ #9 sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 0B / 122.68kB 0.1s
58
+ #9 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 0B / 6.20MB 0.1s
59
+ #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 7.34MB / 29.13MB 0.3s
60
+ #9 sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 122.68kB / 122.68kB 0.2s done
61
+ #9 sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 6.20MB / 6.20MB 0.3s done
62
+ #9 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.3s done
63
+ #9 sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed 0B / 521B 0.3s
64
+ #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 16.78MB / 29.13MB 0.4s
65
+ #9 sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed 521B / 521B 0.4s done
66
+ #9 sha256:9a782d6d1eace15aadfa1d16eb83ad2abdea075c6c9e200247950571a3719e10 0B / 3.77kB 0.4s
67
+ #9 sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 282B / 282B 0.4s
68
+ #9 sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 29.13MB / 29.13MB 0.5s done
69
+ #9 sha256:9a782d6d1eace15aadfa1d16eb83ad2abdea075c6c9e200247950571a3719e10 3.77kB / 3.77kB 0.5s done
70
+ #9 sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 282B / 282B 0.4s done
71
+ #9 extracting sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 0.1s
72
+ #9 sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 0B / 215B 0.5s
73
+ #9 sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 0B / 645B 0.5s
74
+ #9 sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 0B / 683B 0.5s
75
+ #9 sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 215B / 215B 0.5s done
76
+ #9 sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 645B / 645B 0.7s done
77
+ #9 sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 683B / 683B 0.6s done
78
+ #9 sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29 345B / 345B 0.6s done
79
+ #9 extracting sha256:a2318d6c47ec9cac5acc500c47c79602bcf953cec711a18bc898911a0984365b 1.4s done
67
80
  #9 extracting sha256:0d56d98386a9a231fee4dcf145a261d9d12da39f1c5a5d3bbe09a1aa727febf8 done
81
+ #9 extracting sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880
68
82
  #9 extracting sha256:30fe8036db79bfbab0cdf8d102dcfd22ee410944fed17b23851977246235b880 0.1s done
83
+ #9 extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1
69
84
  #9 extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 done
70
85
  #9 extracting sha256:1b19c15ef8e221c4e8f2f5233ce6dcb27342ecf18997a0576cf301345df0b2ed done
71
86
  #9 extracting sha256:51b5951dad11c47781e0b67c512ab7f1b148983b42cb5b8cbfb3ea6e8d28a602 done
@@ -73,299 +88,312 @@
73
88
  #9 extracting sha256:8b456163e45ffc9e8274e77e02d1a5a166f27e760db7314ea9ee89f5578090d6 done
74
89
  #9 extracting sha256:e9e8562f12ed796758a0790bfccb45f2463190f4ba8696dac09a9f22b20e37e3 done
75
90
  #9 extracting sha256:c1d339bd3cdc8184904ef6ed4e4685a7551020e738a57e9b8c27edead08b3461 done
91
+ #9 extracting sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29
76
92
  #9 extracting sha256:db3fc724910ed98f15e8511e8024faf769a34901595e617bd4c7ebd8b8b8fd29 done
77
- #9 DONE 1.5s
93
+ #9 DONE 2.3s
78
94
 
79
- #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
80
- #10 15.40
81
- #10 15.40 Transaction
82
- #10 15.40
83
- #10 15.40 Prefix: /opt/conda
84
- #10 15.40
85
- #10 15.40 Updating specs:
86
- #10 15.40
87
- #10 15.40 - python=3.12.10
88
- #10 15.40 - anarci
89
- #10 15.40 - hmmer
90
- #10 15.40 - biopython=1.85
91
- #10 15.40 - openmm=8.3.1
92
- #10 15.40 - pdbfixer=1.12.0
93
- #10 15.40 - numpy=2.4.3
94
- #10 15.40 - scipy=1.17.1
95
- #10 15.40
96
- #10 15.40
97
- #10 15.41 Package Version Build Channel Size
98
- #10 15.41 ───────────────────────────────────────────────────────────────────────────────
99
- #10 15.41 Install:
100
- #10 15.41 ───────────────────────────────────────────────────────────────────────────────
101
- #10 15.41
102
- #10 15.41 + python_abi 3.12 8_cp312 conda-forge 7kB
103
- #10 15.41 + tzdata 2025c hc9c84f9_1 conda-forge 119kB
104
- #10 15.41 + ca-certificates 2026.4.22 hbd8a1cb_0 conda-forge 131kB
105
- #10 15.41 + cuda-version 12.9 h4f385c5_3 conda-forge 22kB
106
- #10 15.41 + libzlib 1.3.2 h25fd6f3_2 conda-forge 64kB
107
- #10 15.41 + libgomp 15.2.0 he0feb66_18 conda-forge 603kB
108
- #10 15.41 + mpi 1.0 openmpi conda-forge 4kB
109
- #10 15.41 + zlib 1.3.2 h25fd6f3_2 conda-forge 96kB
110
- #10 15.41 + zstd 1.5.7 hb78ec9c_6 conda-forge 601kB
111
- #10 15.41 + _openmp_mutex 4.5 20_gnu conda-forge 29kB
112
- #10 15.41 + ld_impl_linux-64 2.45.1 default_hbd61a6d_102 conda-forge 728kB
113
- #10 15.41 + libgcc 15.2.0 he0feb66_18 conda-forge 1MB
114
- #10 15.41 + tk 8.6.13 noxft_h366c992_103 conda-forge 3MB
115
- #10 15.41 + libsqlite 3.53.1 h0c1763c_0 conda-forge 955kB
116
- #10 15.41 + openssl 3.6.2 h35e630c_0 conda-forge 3MB
117
- #10 15.41 + ncurses 6.6 hdb14827_0 conda-forge 919kB
118
- #10 15.41 + libuuid 2.42 h5347b49_0 conda-forge 40kB
119
- #10 15.41 + libnsl 2.0.1 hb9d3cd8_1 conda-forge 34kB
120
- #10 15.41 + liblzma 5.8.3 hb03c661_0 conda-forge 113kB
121
- #10 15.41 + libffi 3.4.6 h2dba641_1 conda-forge 57kB
122
- #10 15.41 + libexpat 2.8.0 hecca717_0 conda-forge 77kB
123
- #10 15.41 + bzip2 1.0.8 hda65f42_9 conda-forge 260kB
124
- #10 15.41 + libstdcxx 15.2.0 h934c35e_18 conda-forge 6MB
125
- #10 15.41 + libgcc-ng 15.2.0 h69a702a_18 conda-forge 28kB
126
- #10 15.41 + libgfortran5 15.2.0 h68bc16d_18 conda-forge 2MB
127
- #10 15.41 + readline 8.3 h853b02a_0 conda-forge 345kB
128
- #10 15.41 + opencl-headers 2025.06.13 hecca717_0 conda-forge 56kB
129
- #10 15.41 + libstdcxx-ng 15.2.0 hdf11a46_18 conda-forge 28kB
130
- #10 15.41 + libcufft 11.4.1.4 hecca717_1 conda-forge 162MB
131
- #10 15.41 + cuda-nvrtc 12.9.86 hecca717_1 conda-forge 67MB
132
- #10 15.41 + libxcrypt 4.4.36 hd590300_1 conda-forge 100kB
133
- #10 15.41 + libgfortran 15.2.0 h69a702a_18 conda-forge 28kB
134
- #10 15.41 + ocl-icd 2.3.3 hb9d3cd8_0 conda-forge 107kB
135
- #10 15.41 + python 3.12.10 h9e4cc4f_0_cpython conda-forge 31MB
136
- #10 15.41 + libgfortran-ng 15.2.0 h69a702a_18 conda-forge 28kB
137
- #10 15.41 + libopenblas 0.3.32 pthreads_h94d23a6_0 conda-forge 6MB
138
- #10 15.41 + ocl-icd-system 1.0.0 1 conda-forge 4kB
139
- #10 15.41 + openmpi 4.1.6 hc5af2df_101 conda-forge 4MB
140
- #10 15.41 + libblas 3.11.0 6_h4a7cf45_openblas conda-forge 19kB
141
- #10 15.41 + libcblas 3.11.0 6_h0358290_openblas conda-forge 19kB
142
- #10 15.41 + liblapack 3.11.0 6_h47877c9_openblas conda-forge 19kB
143
- #10 15.41 + gsl 2.7 he838d99_0 conda-forge 3MB
144
- #10 15.41 + packaging 26.2 pyhc364b38_0 conda-forge 92kB
145
- #10 15.41 + setuptools 82.0.1 pyh332efcf_0 conda-forge 640kB
146
- #10 15.41 + wheel 0.47.0 pyhd8ed1ab_0 conda-forge 33kB
147
- #10 15.41 + pip 26.1.1 pyh8b19718_0 conda-forge 1MB
148
- #10 15.41 + legacy-cgi 2.6.4 pyhcf101f3_0 conda-forge 20kB
149
- #10 15.41 + hmmer 3.4 hb6cb901_4 bioconda 12MB
150
- #10 15.41 + numpy 2.4.3 py312h33ff503_0 conda-forge 9MB
151
- #10 15.41 + biopython 1.85 py312h4c3975b_2 conda-forge 3MB
152
- #10 15.41 + scipy 1.17.1 py312h54fa4ab_0 conda-forge 17MB
153
- #10 15.41 + openmm 8.3.1 py312h50c43f0_0 conda-forge 13MB
154
- #10 15.41 + anarci 2024.05.21 pyhdfd78af_0 bioconda 1MB
155
- #10 15.41 + pdbfixer 1.12 pyhd8ed1ab_1 conda-forge 546kB
156
- #10 15.41
157
- #10 15.41 Summary:
158
- #10 15.41
159
- #10 15.41 Install: 54 packages
160
- #10 15.41
161
- #10 15.41 Total download: 353MB
162
- #10 15.41
163
- #10 15.41 ───────────────────────────────────────────────────────────────────────────────
164
- #10 15.41
165
- #10 15.41
166
- #10 15.41
167
- #10 15.41 Transaction starting
168
- #10 21.24
169
- #10 21.39
170
- #10 21.39 For Linux 64, Open MPI is built with CUDA awareness but this support is disabled by default.
171
- #10 21.39 To enable it, please set the environment variable OMPI_MCA_opal_cuda_support=true before
172
- #10 21.39 launching your MPI processes. Equivalently, you can set the MCA parameter in the command line:
173
- #10 21.39 mpiexec --mca opal_cuda_support 1 ...
174
- #10 21.39
175
- #10 21.39 In addition, the UCX support is also built but disabled by default.
176
- #10 21.39 To enable it, first install UCX (conda install -c conda-forge ucx). Then, set the environment
177
- #10 21.39 variables OMPI_MCA_pml="ucx" OMPI_MCA_osc="ucx" before launching your MPI processes.
178
- #10 21.39 Equivalently, you can set the MCA parameters in the command line:
179
- #10 21.39 mpiexec --mca pml ucx --mca osc ucx ...
180
- #10 21.39 Note that you might also need to set UCX_MEMTYPE_CACHE=n for CUDA awareness via UCX.
181
- #10 21.39 Please consult UCX's documentation for detail.
182
- #10 21.39
183
- #10 21.39
184
- #10 22.51
185
- #10 22.51 Transaction finished
186
- #10 22.51
187
- #10 22.51 To activate this environment, use:
188
- #10 22.51
189
- #10 22.51 micromamba activate base
190
- #10 22.51
191
- #10 22.51 Or to execute a single command in this environment, use:
192
- #10 22.51
193
- #10 22.51 micromamba run -n base mycommand
194
- #10 22.51
195
- #10 22.54 Collect information..
196
- #10 22.54 Cleaning index cache..
197
- #10 22.70 Cleaning lock files..
198
- #10 22.70 Package file Size
199
- #10 22.70 ───────────────────────────────────────────────────────────────
200
- #10 22.70 /opt/conda/pkgs
201
- #10 22.70 ───────────────────────────────────────────────────────────────
202
- #10 22.70
203
- #10 22.70 _openmp_mutex-4.5-20_gnu.conda 29kB
204
- #10 22.70 anarci-2024.05.21-pyhdfd78af_0.tar.bz2 1MB
205
- #10 22.70 biopython-1.85-py312h4c3975b_2.conda 3MB
206
- #10 22.70 bzip2-1.0.8-hda65f42_9.conda 260kB
207
- #10 22.70 ca-certificates-2026.4.22-hbd8a1cb_0.conda 131kB
208
- #10 22.70 cuda-nvrtc-12.9.86-hecca717_1.conda 67MB
209
- #10 22.70 cuda-version-12.9-h4f385c5_3.conda 22kB
210
- #10 22.70 gsl-2.7-he838d99_0.tar.bz2 3MB
211
- #10 22.70 hmmer-3.4-hb6cb901_4.tar.bz2 12MB
212
- #10 22.70 ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda 728kB
213
- #10 22.70 legacy-cgi-2.6.4-pyhcf101f3_0.conda 20kB
214
- #10 22.70 libblas-3.11.0-6_h4a7cf45_openblas.conda 19kB
215
- #10 22.70 libcblas-3.11.0-6_h0358290_openblas.conda 19kB
216
- #10 22.70 libcufft-11.4.1.4-hecca717_1.conda 162MB
217
- #10 22.70 libexpat-2.8.0-hecca717_0.conda 77kB
218
- #10 22.70 libffi-3.4.6-h2dba641_1.conda 57kB
219
- #10 22.70 libgcc-15.2.0-he0feb66_18.conda 1MB
220
- #10 22.70 libgcc-ng-15.2.0-h69a702a_18.conda 28kB
221
- #10 22.70 libgfortran-15.2.0-h69a702a_18.conda 28kB
222
- #10 22.70 libgfortran-ng-15.2.0-h69a702a_18.conda 28kB
223
- #10 22.70 libgfortran5-15.2.0-h68bc16d_18.conda 2MB
224
- #10 22.70 libgomp-15.2.0-he0feb66_18.conda 603kB
225
- #10 22.70 liblapack-3.11.0-6_h47877c9_openblas.conda 19kB
226
- #10 22.70 liblzma-5.8.3-hb03c661_0.conda 113kB
227
- #10 22.70 libnsl-2.0.1-hb9d3cd8_1.conda 34kB
228
- #10 22.70 libopenblas-0.3.32-pthreads_h94d23a6_0.conda 6MB
229
- #10 22.70 libsqlite-3.53.1-h0c1763c_0.conda 955kB
230
- #10 22.70 libstdcxx-15.2.0-h934c35e_18.conda 6MB
231
- #10 22.70 libstdcxx-ng-15.2.0-hdf11a46_18.conda 28kB
232
- #10 22.70 libuuid-2.42-h5347b49_0.conda 40kB
233
- #10 22.70 libxcrypt-4.4.36-hd590300_1.conda 100kB
234
- #10 22.70 libzlib-1.3.2-h25fd6f3_2.conda 64kB
235
- #10 22.70 mpi-1.0-openmpi.tar.bz2 4kB
236
- #10 22.70 ncurses-6.6-hdb14827_0.conda 919kB
237
- #10 22.70 numpy-2.4.3-py312h33ff503_0.conda 9MB
238
- #10 22.70 ocl-icd-2.3.3-hb9d3cd8_0.conda 107kB
239
- #10 22.70 ocl-icd-system-1.0.0-1.tar.bz2 4kB
240
- #10 22.70 opencl-headers-2025.06.13-hecca717_0.conda 56kB
241
- #10 22.70 openmm-8.3.1-py312h50c43f0_0.conda 13MB
242
- #10 22.70 openmpi-4.1.6-hc5af2df_101.conda 4MB
243
- #10 22.70 openssl-3.6.2-h35e630c_0.conda 3MB
244
- #10 22.70 packaging-26.2-pyhc364b38_0.conda 92kB
245
- #10 22.70 pdbfixer-1.12-pyhd8ed1ab_1.conda 546kB
246
- #10 22.70 pip-26.1.1-pyh8b19718_0.conda 1MB
247
- #10 22.70 python-3.12.10-h9e4cc4f_0_cpython.conda 31MB
248
- #10 22.70 python_abi-3.12-8_cp312.conda 7kB
249
- #10 22.70 readline-8.3-h853b02a_0.conda 345kB
250
- #10 22.70 scipy-1.17.1-py312h54fa4ab_0.conda 17MB
251
- #10 22.70 setuptools-82.0.1-pyh332efcf_0.conda 640kB
252
- #10 22.70 tk-8.6.13-noxft_h366c992_103.conda 3MB
253
- #10 22.70 tzdata-2025c-hc9c84f9_1.conda 119kB
254
- #10 22.70 wheel-0.47.0-pyhd8ed1ab_0.conda 33kB
255
- #10 22.70 zlib-1.3.2-h25fd6f3_2.conda 96kB
256
- #10 22.70 zstd-1.5.7-hb78ec9c_6.conda 601kB
257
- #10 22.70
258
- #10 22.70 /root/.mamba/pkgs
259
- #10 22.70 ───────────────────────────────────────────────────────────────
260
- #10 22.70
261
- #10 22.70
262
- #10 22.70
263
- #10 22.70 ───────────────────────────────────────────────────────────────
264
- #10 22.70
265
- #10 22.70 Total size: 353MB
266
- #10 22.70 Cleaning tarballs..
267
- #10 22.75 Cleaning packages..
268
- #10 DONE 24.8s
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.93
97
+ #10 19.93 Transaction
98
+ #10 19.93
99
+ #10 19.93 Prefix: /opt/conda
100
+ #10 19.93
101
+ #10 19.93 Updating specs:
102
+ #10 19.93
103
+ #10 19.93 - python=3.12.10
104
+ #10 19.93 - anarci
105
+ #10 19.93 - hmmer
106
+ #10 19.93 - biopython=1.85
107
+ #10 19.93 - openmm=8.3.1
108
+ #10 19.93 - pdbfixer=1.12.0
109
+ #10 19.93 - numpy=2.4.3
110
+ #10 19.93 - scipy=1.17.1
111
+ #10 19.93
112
+ #10 19.93
113
+ #10 19.94 Package Version Build Channel Size
114
+ #10 19.94 ───────────────────────────────────────────────────────────────────────────────
115
+ #10 19.94 Install:
116
+ #10 19.94 ───────────────────────────────────────────────────────────────────────────────
117
+ #10 19.94
118
+ #10 19.94 + python_abi 3.12 8_cp312 conda-forge 7kB
119
+ #10 19.94 + tzdata 2025c hc9c84f9_1 conda-forge 119kB
120
+ #10 19.94 + ca-certificates 2026.4.22 hbd8a1cb_0 conda-forge 131kB
121
+ #10 19.94 + cuda-version 12.9 h4f385c5_3 conda-forge 22kB
122
+ #10 19.94 + libzlib 1.3.2 h25fd6f3_2 conda-forge 64kB
123
+ #10 19.94 + libgomp 15.2.0 he0feb66_19 conda-forge 604kB
124
+ #10 19.94 + mpi 1.0 openmpi conda-forge 4kB
125
+ #10 19.94 + zlib 1.3.2 h25fd6f3_2 conda-forge 96kB
126
+ #10 19.94 + zstd 1.5.7 hb78ec9c_6 conda-forge 601kB
127
+ #10 19.94 + _openmp_mutex 4.5 20_gnu conda-forge 29kB
128
+ #10 19.94 + ld_impl_linux-64 2.45.1 default_hbd61a6d_102 conda-forge 728kB
129
+ #10 19.94 + libgcc 15.2.0 he0feb66_19 conda-forge 1MB
130
+ #10 19.94 + tk 8.6.13 noxft_h366c992_103 conda-forge 3MB
131
+ #10 19.94 + libsqlite 3.53.1 h0c1763c_0 conda-forge 955kB
132
+ #10 19.94 + openssl 3.6.2 h35e630c_0 conda-forge 3MB
133
+ #10 19.94 + ncurses 6.6 hdb14827_0 conda-forge 919kB
134
+ #10 19.94 + libuuid 2.42 h5347b49_0 conda-forge 40kB
135
+ #10 19.94 + libnsl 2.0.1 hb9d3cd8_1 conda-forge 34kB
136
+ #10 19.94 + liblzma 5.8.3 hb03c661_0 conda-forge 113kB
137
+ #10 19.94 + libffi 3.4.6 h2dba641_1 conda-forge 57kB
138
+ #10 19.94 + libexpat 2.8.0 hecca717_0 conda-forge 77kB
139
+ #10 19.94 + bzip2 1.0.8 hda65f42_9 conda-forge 260kB
140
+ #10 19.94 + libstdcxx 15.2.0 h934c35e_19 conda-forge 6MB
141
+ #10 19.94 + libgcc-ng 15.2.0 h69a702a_19 conda-forge 28kB
142
+ #10 19.94 + libgfortran5 15.2.0 h68bc16d_19 conda-forge 2MB
143
+ #10 19.94 + readline 8.3 h853b02a_0 conda-forge 345kB
144
+ #10 19.94 + opencl-headers 2025.06.13 hecca717_0 conda-forge 56kB
145
+ #10 19.94 + libstdcxx-ng 15.2.0 hdf11a46_19 conda-forge 28kB
146
+ #10 19.94 + libcufft 11.4.1.4 hecca717_1 conda-forge 162MB
147
+ #10 19.94 + cuda-nvrtc 12.9.86 hecca717_1 conda-forge 67MB
148
+ #10 19.94 + libxcrypt 4.4.36 hd590300_1 conda-forge 100kB
149
+ #10 19.94 + libgfortran 15.2.0 h69a702a_19 conda-forge 28kB
150
+ #10 19.94 + ocl-icd 2.3.3 hb9d3cd8_0 conda-forge 107kB
151
+ #10 19.94 + python 3.12.10 h9e4cc4f_0_cpython conda-forge 31MB
152
+ #10 19.94 + libgfortran-ng 15.2.0 h69a702a_19 conda-forge 28kB
153
+ #10 19.94 + libopenblas 0.3.33 pthreads_h94d23a6_0 conda-forge 6MB
154
+ #10 19.94 + ocl-icd-system 1.0.0 1 conda-forge 4kB
155
+ #10 19.94 + openmpi 4.1.6 hc5af2df_101 conda-forge 4MB
156
+ #10 19.94 + libblas 3.11.0 7_h4a7cf45_openblas conda-forge 19kB
157
+ #10 19.94 + libcblas 3.11.0 7_h0358290_openblas conda-forge 19kB
158
+ #10 19.94 + liblapack 3.11.0 7_h47877c9_openblas conda-forge 19kB
159
+ #10 19.94 + gsl 2.7 he838d99_0 conda-forge 3MB
160
+ #10 19.94 + packaging 26.2 pyhc364b38_0 conda-forge 92kB
161
+ #10 19.94 + setuptools 82.0.1 pyh332efcf_0 conda-forge 640kB
162
+ #10 19.94 + wheel 0.47.0 pyhd8ed1ab_0 conda-forge 33kB
163
+ #10 19.94 + pip 26.1.1 pyh8b19718_0 conda-forge 1MB
164
+ #10 19.94 + legacy-cgi 2.6.4 pyhcf101f3_0 conda-forge 20kB
165
+ #10 19.94 + hmmer 3.4 hb6cb901_4 bioconda 12MB
166
+ #10 19.94 + numpy 2.4.3 py312h33ff503_0 conda-forge 9MB
167
+ #10 19.94 + biopython 1.85 py312h4c3975b_2 conda-forge 3MB
168
+ #10 19.94 + scipy 1.17.1 py312h54fa4ab_0 conda-forge 17MB
169
+ #10 19.94 + openmm 8.3.1 py312h50c43f0_0 conda-forge 13MB
170
+ #10 19.94 + anarci 2024.05.21 pyhdfd78af_0 bioconda 1MB
171
+ #10 19.94 + pdbfixer 1.12 pyhd8ed1ab_1 conda-forge 546kB
172
+ #10 19.94
173
+ #10 19.94 Summary:
174
+ #10 19.94
175
+ #10 19.94 Install: 54 packages
176
+ #10 19.94
177
+ #10 19.94 Total download: 353MB
178
+ #10 19.94
179
+ #10 19.94 ───────────────────────────────────────────────────────────────────────────────
180
+ #10 19.94
181
+ #10 19.94
182
+ #10 19.94
183
+ #10 19.94 Transaction starting
184
+ #10 25.31
185
+ #10 25.45
186
+ #10 25.45 For Linux 64, Open MPI is built with CUDA awareness but this support is disabled by default.
187
+ #10 25.45 To enable it, please set the environment variable OMPI_MCA_opal_cuda_support=true before
188
+ #10 25.45 launching your MPI processes. Equivalently, you can set the MCA parameter in the command line:
189
+ #10 25.45 mpiexec --mca opal_cuda_support 1 ...
190
+ #10 25.45
191
+ #10 25.45 In addition, the UCX support is also built but disabled by default.
192
+ #10 25.45 To enable it, first install UCX (conda install -c conda-forge ucx). Then, set the environment
193
+ #10 25.45 variables OMPI_MCA_pml="ucx" OMPI_MCA_osc="ucx" before launching your MPI processes.
194
+ #10 25.45 Equivalently, you can set the MCA parameters in the command line:
195
+ #10 25.45 mpiexec --mca pml ucx --mca osc ucx ...
196
+ #10 25.45 Note that you might also need to set UCX_MEMTYPE_CACHE=n for CUDA awareness via UCX.
197
+ #10 25.45 Please consult UCX's documentation for detail.
198
+ #10 25.45
199
+ #10 25.45
200
+ #10 26.52
201
+ #10 26.52 Transaction finished
202
+ #10 26.52
203
+ #10 26.52 To activate this environment, use:
204
+ #10 26.52
205
+ #10 26.52 micromamba activate base
206
+ #10 26.52
207
+ #10 26.52 Or to execute a single command in this environment, use:
208
+ #10 26.52
209
+ #10 26.52 micromamba run -n base mycommand
210
+ #10 26.52
211
+ #10 26.56 Collect information..
212
+ #10 26.56 Cleaning index cache..
213
+ #10 26.61 Cleaning lock files..
214
+ #10 26.61 Package file Size
215
+ #10 26.61 ───────────────────────────────────────────────────────────────
216
+ #10 26.61 /opt/conda/pkgs
217
+ #10 26.61 ───────────────────────────────────────────────────────────────
218
+ #10 26.61
219
+ #10 26.61 _openmp_mutex-4.5-20_gnu.conda 29kB
220
+ #10 26.61 anarci-2024.05.21-pyhdfd78af_0.tar.bz2 1MB
221
+ #10 26.61 biopython-1.85-py312h4c3975b_2.conda 3MB
222
+ #10 26.61 bzip2-1.0.8-hda65f42_9.conda 260kB
223
+ #10 26.61 ca-certificates-2026.4.22-hbd8a1cb_0.conda 131kB
224
+ #10 26.61 cuda-nvrtc-12.9.86-hecca717_1.conda 67MB
225
+ #10 26.61 cuda-version-12.9-h4f385c5_3.conda 22kB
226
+ #10 26.61 gsl-2.7-he838d99_0.tar.bz2 3MB
227
+ #10 26.61 hmmer-3.4-hb6cb901_4.tar.bz2 12MB
228
+ #10 26.61 ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda 728kB
229
+ #10 26.61 legacy-cgi-2.6.4-pyhcf101f3_0.conda 20kB
230
+ #10 26.61 libblas-3.11.0-7_h4a7cf45_openblas.conda 19kB
231
+ #10 26.61 libcblas-3.11.0-7_h0358290_openblas.conda 19kB
232
+ #10 26.61 libcufft-11.4.1.4-hecca717_1.conda 162MB
233
+ #10 26.61 libexpat-2.8.0-hecca717_0.conda 77kB
234
+ #10 26.61 libffi-3.4.6-h2dba641_1.conda 57kB
235
+ #10 26.61 libgcc-15.2.0-he0feb66_19.conda 1MB
236
+ #10 26.61 libgcc-ng-15.2.0-h69a702a_19.conda 28kB
237
+ #10 26.61 libgfortran-15.2.0-h69a702a_19.conda 28kB
238
+ #10 26.61 libgfortran-ng-15.2.0-h69a702a_19.conda 28kB
239
+ #10 26.61 libgfortran5-15.2.0-h68bc16d_19.conda 2MB
240
+ #10 26.61 libgomp-15.2.0-he0feb66_19.conda 604kB
241
+ #10 26.61 liblapack-3.11.0-7_h47877c9_openblas.conda 19kB
242
+ #10 26.61 liblzma-5.8.3-hb03c661_0.conda 113kB
243
+ #10 26.61 libnsl-2.0.1-hb9d3cd8_1.conda 34kB
244
+ #10 26.61 libopenblas-0.3.33-pthreads_h94d23a6_0.conda 6MB
245
+ #10 26.61 libsqlite-3.53.1-h0c1763c_0.conda 955kB
246
+ #10 26.61 libstdcxx-15.2.0-h934c35e_19.conda 6MB
247
+ #10 26.61 libstdcxx-ng-15.2.0-hdf11a46_19.conda 28kB
248
+ #10 26.61 libuuid-2.42-h5347b49_0.conda 40kB
249
+ #10 26.61 libxcrypt-4.4.36-hd590300_1.conda 100kB
250
+ #10 26.61 libzlib-1.3.2-h25fd6f3_2.conda 64kB
251
+ #10 26.61 mpi-1.0-openmpi.tar.bz2 4kB
252
+ #10 26.61 ncurses-6.6-hdb14827_0.conda 919kB
253
+ #10 26.61 numpy-2.4.3-py312h33ff503_0.conda 9MB
254
+ #10 26.61 ocl-icd-2.3.3-hb9d3cd8_0.conda 107kB
255
+ #10 26.61 ocl-icd-system-1.0.0-1.tar.bz2 4kB
256
+ #10 26.61 opencl-headers-2025.06.13-hecca717_0.conda 56kB
257
+ #10 26.61 openmm-8.3.1-py312h50c43f0_0.conda 13MB
258
+ #10 26.61 openmpi-4.1.6-hc5af2df_101.conda 4MB
259
+ #10 26.61 openssl-3.6.2-h35e630c_0.conda 3MB
260
+ #10 26.61 packaging-26.2-pyhc364b38_0.conda 92kB
261
+ #10 26.61 pdbfixer-1.12-pyhd8ed1ab_1.conda 546kB
262
+ #10 26.61 pip-26.1.1-pyh8b19718_0.conda 1MB
263
+ #10 26.61 python-3.12.10-h9e4cc4f_0_cpython.conda 31MB
264
+ #10 26.61 python_abi-3.12-8_cp312.conda 7kB
265
+ #10 26.61 readline-8.3-h853b02a_0.conda 345kB
266
+ #10 26.61 scipy-1.17.1-py312h54fa4ab_0.conda 17MB
267
+ #10 26.61 setuptools-82.0.1-pyh332efcf_0.conda 640kB
268
+ #10 26.61 tk-8.6.13-noxft_h366c992_103.conda 3MB
269
+ #10 26.61 tzdata-2025c-hc9c84f9_1.conda 119kB
270
+ #10 26.61 wheel-0.47.0-pyhd8ed1ab_0.conda 33kB
271
+ #10 26.61 zlib-1.3.2-h25fd6f3_2.conda 96kB
272
+ #10 26.61 zstd-1.5.7-hb78ec9c_6.conda 601kB
273
+ #10 26.61
274
+ #10 26.61 /root/.mamba/pkgs
275
+ #10 26.61 ───────────────────────────────────────────────────────────────
276
+ #10 26.61
277
+ #10 26.61
278
+ #10 26.61
279
+ #10 26.61 ───────────────────────────────────────────────────────────────
280
+ #10 26.61
281
+ #10 26.61 Total size: 353MB
282
+ #10 26.61 Cleaning tarballs..
283
+ #10 26.66 Cleaning packages..
284
+ #10 DONE 29.3s
269
285
 
270
- #11 [3/6] COPY requirements.txt /tmp/requirements.txt
286
+ #11 [3/7] COPY requirements.txt /tmp/requirements.txt
271
287
  #11 DONE 0.0s
272
288
 
273
- #12 [4/6] RUN pip install --no-cache-dir --extra-index-url https://download.pytorch.org/whl/cpu -r /tmp/requirements.txt
274
- #12 0.550 Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cpu
275
- #12 0.691 Collecting ImmuneBuilder==1.2 (from -r /tmp/requirements.txt (line 1))
276
- #12 0.715 Downloading ImmuneBuilder-1.2-py3-none-any.whl.metadata (7.7 kB)
277
- #12 0.850 Collecting torch==2.7.0 (from -r /tmp/requirements.txt (line 2))
278
- #12 0.898 Downloading torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (27 kB)
279
- #12 0.902 Requirement already satisfied: biopython==1.85 in /opt/conda/lib/python3.12/site-packages (from -r /tmp/requirements.txt (line 3)) (1.85)
280
- #12 0.903 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)
281
- #12 0.903 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)
282
- #12 0.904 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)
283
- #12 0.904 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)
284
- #12 0.940 Collecting einops>=0.3 (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
285
- #12 0.944 Downloading einops-0.8.2-py3-none-any.whl.metadata (13 kB)
286
- #12 1.015 Collecting requests (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
287
- #12 1.018 Downloading requests-2.33.1-py3-none-any.whl.metadata (4.8 kB)
288
- #12 1.088 Collecting filelock (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
289
- #12 1.092 Downloading filelock-3.29.0-py3-none-any.whl.metadata (2.0 kB)
290
- #12 1.150 Collecting typing-extensions>=4.10.0 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
291
- #12 1.155 Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
292
- #12 1.157 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)
293
- #12 1.213 Collecting sympy>=1.13.3 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
294
- #12 1.216 Downloading sympy-1.14.0-py3-none-any.whl.metadata (12 kB)
295
- #12 1.308 Collecting networkx (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
296
- #12 1.312 Downloading networkx-3.6.1-py3-none-any.whl.metadata (6.8 kB)
297
- #12 1.376 Collecting jinja2 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
298
- #12 1.381 Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
299
- #12 1.469 Collecting fsspec (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
300
- #12 1.472 Downloading fsspec-2026.4.0-py3-none-any.whl.metadata (10 kB)
301
- #12 1.557 Collecting mpmath<1.4,>=1.1.0 (from sympy>=1.13.3->torch==2.7.0->-r /tmp/requirements.txt (line 2))
302
- #12 1.560 Downloading mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)
303
- #12 1.674 Collecting MarkupSafe>=2.0 (from jinja2->torch==2.7.0->-r /tmp/requirements.txt (line 2))
304
- #12 1.679 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)
305
- #12 1.791 Collecting charset_normalizer<4,>=2 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
306
- #12 1.795 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)
307
- #12 1.859 Collecting idna<4,>=2.5 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
308
- #12 1.863 Downloading idna-3.13-py3-none-any.whl.metadata (8.0 kB)
309
- #12 1.922 Collecting urllib3<3,>=1.26 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
310
- #12 1.926 Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
311
- #12 1.987 Collecting certifi>=2023.5.7 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
312
- #12 1.991 Downloading certifi-2026.4.22-py3-none-any.whl.metadata (2.5 kB)
313
- #12 2.001 Downloading ImmuneBuilder-1.2-py3-none-any.whl (32 kB)
314
- #12 2.013 Downloading torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl (175.8 MB)
315
- #12 2.552 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 175.8/175.8 MB 329.9 MB/s 0:00:00
316
- #12 2.556 Downloading einops-0.8.2-py3-none-any.whl (65 kB)
317
- #12 2.559 Downloading sympy-1.14.0-py3-none-any.whl (6.3 MB)
318
- #12 2.581 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.3/6.3 MB 357.6 MB/s 0:00:00
319
- #12 2.585 Downloading mpmath-1.3.0-py3-none-any.whl (536 kB)
320
- #12 2.587 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 762.5 MB/s 0:00:00
321
- #12 2.591 Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
322
- #12 2.594 Downloading filelock-3.29.0-py3-none-any.whl (39 kB)
323
- #12 2.597 Downloading fsspec-2026.4.0-py3-none-any.whl (203 kB)
324
- #12 2.602 Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
325
- #12 2.607 Downloading markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
326
- #12 2.611 Downloading networkx-3.6.1-py3-none-any.whl (2.1 MB)
327
- #12 2.616 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 578.6 MB/s 0:00:00
328
- #12 2.620 Downloading requests-2.33.1-py3-none-any.whl (64 kB)
329
- #12 2.624 Downloading charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (216 kB)
330
- #12 2.628 Downloading idna-3.13-py3-none-any.whl (68 kB)
331
- #12 2.631 Downloading urllib3-2.7.0-py3-none-any.whl (131 kB)
332
- #12 2.635 Downloading certifi-2026.4.22-py3-none-any.whl (135 kB)
333
- #12 2.969 Installing collected packages: mpmath, urllib3, typing-extensions, sympy, networkx, MarkupSafe, idna, fsspec, filelock, einops, charset_normalizer, certifi, requests, jinja2, torch, ImmuneBuilder
334
- #12 18.30
335
- #12 18.30 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.13 jinja2-3.1.6 mpmath-1.3.0 networkx-3.6.1 requests-2.33.1 sympy-1.14.0 torch-2.7.0+cpu typing-extensions-4.15.0 urllib3-2.7.0
336
- #12 18.30 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.
337
- #12 DONE 19.8s
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.575 Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cpu
291
+ #12 0.931 Collecting ImmuneBuilder==1.2 (from -r /tmp/requirements.txt (line 1))
292
+ #12 0.954 Downloading ImmuneBuilder-1.2-py3-none-any.whl.metadata (7.7 kB)
293
+ #12 1.303 Collecting torch==2.7.0 (from -r /tmp/requirements.txt (line 2))
294
+ #12 1.359 Downloading torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (27 kB)
295
+ #12 1.362 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.363 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.363 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.364 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.365 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.441 Collecting einops>=0.3 (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
301
+ #12 1.445 Downloading einops-0.8.2-py3-none-any.whl.metadata (13 kB)
302
+ #12 1.677 Collecting requests (from ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
303
+ #12 1.680 Downloading requests-2.34.0-py3-none-any.whl.metadata (4.8 kB)
304
+ #12 1.972 Collecting filelock (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
305
+ #12 1.974 Downloading filelock-3.29.0-py3-none-any.whl.metadata (2.0 kB)
306
+ #12 2.070 Collecting typing-extensions>=4.10.0 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
307
+ #12 2.074 Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
308
+ #12 2.077 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.238 Collecting sympy>=1.13.3 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
310
+ #12 2.241 Downloading sympy-1.14.0-py3-none-any.whl.metadata (12 kB)
311
+ #12 2.354 Collecting networkx (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
312
+ #12 2.356 Downloading networkx-3.6.1-py3-none-any.whl.metadata (6.8 kB)
313
+ #12 2.462 Collecting jinja2 (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
314
+ #12 2.467 Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
315
+ #12 2.636 Collecting fsspec (from torch==2.7.0->-r /tmp/requirements.txt (line 2))
316
+ #12 2.639 Downloading fsspec-2026.4.0-py3-none-any.whl.metadata (10 kB)
317
+ #12 2.758 Collecting mpmath<1.4,>=1.1.0 (from sympy>=1.13.3->torch==2.7.0->-r /tmp/requirements.txt (line 2))
318
+ #12 2.760 Downloading mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)
319
+ #12 2.956 Collecting MarkupSafe>=2.0 (from jinja2->torch==2.7.0->-r /tmp/requirements.txt (line 2))
320
+ #12 2.960 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.117 Collecting charset_normalizer<4,>=2 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
322
+ #12 3.119 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.220 Collecting idna<4,>=2.5 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
324
+ #12 3.222 Downloading idna-3.14-py3-none-any.whl.metadata (8.0 kB)
325
+ #12 3.325 Collecting urllib3<3,>=1.26 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
326
+ #12 3.327 Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
327
+ #12 3.424 Collecting certifi>=2023.5.7 (from requests->ImmuneBuilder==1.2->-r /tmp/requirements.txt (line 1))
328
+ #12 3.426 Downloading certifi-2026.4.22-py3-none-any.whl.metadata (2.5 kB)
329
+ #12 3.497 Downloading ImmuneBuilder-1.2-py3-none-any.whl (32 kB)
330
+ #12 3.509 Downloading torch-2.7.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl (175.8 MB)
331
+ #12 4.006 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 175.8/175.8 MB 358.9 MB/s 0:00:00
332
+ #12 4.009 Downloading einops-0.8.2-py3-none-any.whl (65 kB)
333
+ #12 4.014 Downloading sympy-1.14.0-py3-none-any.whl (6.3 MB)
334
+ #12 4.030 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.3/6.3 MB 470.5 MB/s 0:00:00
335
+ #12 4.035 Downloading mpmath-1.3.0-py3-none-any.whl (536 kB)
336
+ #12 4.037 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 787.2 MB/s 0:00:00
337
+ #12 4.041 Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
338
+ #12 4.043 Downloading filelock-3.29.0-py3-none-any.whl (39 kB)
339
+ #12 4.046 Downloading fsspec-2026.4.0-py3-none-any.whl (203 kB)
340
+ #12 4.050 Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
341
+ #12 4.053 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.056 Downloading networkx-3.6.1-py3-none-any.whl (2.1 MB)
343
+ #12 4.063 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 461.0 MB/s 0:00:00
344
+ #12 4.066 Downloading requests-2.34.0-py3-none-any.whl (73 kB)
345
+ #12 4.069 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.072 Downloading idna-3.14-py3-none-any.whl (72 kB)
347
+ #12 4.074 Downloading urllib3-2.7.0-py3-none-any.whl (131 kB)
348
+ #12 4.077 Downloading certifi-2026.4.22-py3-none-any.whl (135 kB)
349
+ #12 4.389 Installing collected packages: mpmath, urllib3, typing-extensions, sympy, networkx, MarkupSafe, idna, fsspec, filelock, einops, charset_normalizer, certifi, requests, jinja2, torch, ImmuneBuilder
350
+ #12 19.52
351
+ #12 19.53 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.14 jinja2-3.1.6 mpmath-1.3.0 networkx-3.6.1 requests-2.34.0 sympy-1.14.0 torch-2.7.0+cpu typing-extensions-4.15.0 urllib3-2.7.0
352
+ #12 19.53 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.1s
338
354
 
339
- #13 [5/6] WORKDIR /app
340
- #13 DONE 0.0s
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.741 Downloading weights for antibody_model_1...
357
+ #13 12.95 Downloading weights for antibody_model_2...
358
+ #13 29.78 Downloading weights for antibody_model_3...
359
+ #13 54.06 Downloading weights for antibody_model_4...
360
+ #13 67.82 Downloading weights for nanobody_model_1...
361
+ #13 152.5 Downloading weights for nanobody_model_2...
362
+ #13 169.8 Downloading weights for nanobody_model_3...
363
+ #13 470.3 Downloading weights for nanobody_model_4...
364
+ #13 DONE 491.9s
341
365
 
342
- #14 [6/6] COPY . /app/
366
+ #14 [6/7] WORKDIR /app
343
367
  #14 DONE 0.0s
344
368
 
345
- #15 exporting to image
346
- #15 exporting layers
347
- #15 exporting layers 6.0s done
348
- #15 writing image sha256:e8cc067379a9a4d1f7e21fb2cb47919bc95bab818babdb99704d9254f7c1f419 done
349
- #15 naming to containers.pl-open.science/milaboratories/pl-containers:local-image.16de90f5b211 done
350
- #15 DONE 6.0s
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 7.1s done
375
+ #16 writing image sha256:7dca6668fe43b6f6c7c51cba07313f53f493aad839e1b10c668044ab5ff8019e done
376
+ #16 naming to containers.pl-open.science/milaboratories/pl-containers:local-image.642e9e110544 done
377
+ #16 DONE 7.1s
351
378
  info: Docker image is built:
352
- tag: 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.e8cc067379a9'
379
+ tag: 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.7dca6668fe43'
353
380
  location file: '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/dist/artifacts/py-docker/docker_x64.json'
354
381
  info: Building package archives...
355
382
  info: Building software package 'py-archive' for platform 'linux-x64'...
356
383
  info: software archive is built:
357
- archive: '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/pkg-platforma-open-milaboratories.3d-structure-prediction.software-py-archive-1.0.3.tgz'
384
+ archive: '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/pkg-platforma-open-milaboratories.3d-structure-prediction.software-py-archive-1.0.5.tgz'
358
385
  location file: '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/dist/artifacts/py-archive/archive.json'
359
386
  info: Rendering entrypoint descriptors...
360
387
  info: Writing entrypoint descriptor to '/home/runner/work/3d-structure-prediction/3d-structure-prediction/software/dist/tengo/software/immunebuilder-predict.sw.json'
361
388
  info: Publishing docker images...
362
- info: Publishing docker image 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.e8cc067379a9' using alternative tag 'quay.io/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.e8cc067379a9'
389
+ info: Publishing docker image 'containers.pl-open.science/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.7dca6668fe43' using alternative tag 'quay.io/milaboratories/pl-containers:platforma-open.milaboratories.3d-structure-prediction.software.py-docker.7dca6668fe43'
363
390
  The push refers to repository [quay.io/milaboratories/pl-containers]
364
- 4a2b58c02798: Preparing
365
- 03dafdbaf1a4: Preparing
366
- 340650e43082: Preparing
367
- cedf2394a923: Preparing
368
- 913bde32ee38: Preparing
391
+ 1d8bceb8fbfe: Preparing
392
+ 06948691c35f: Preparing
393
+ 5883446e31bd: Preparing
394
+ 83eef4ba5f2f: Preparing
395
+ 227169a6ac10: Preparing
396
+ 2c940d4e6f50: Preparing
369
397
  cc176b242a57: Preparing
370
398
  0f6514ac2db1: Preparing
371
399
  271be3d5c5cf: Preparing
@@ -378,6 +406,7 @@ f8663d674596: Preparing
378
406
  c018a1aad765: Preparing
379
407
  438ed031efcc: Preparing
380
408
  8e2ab394fabf: Preparing
409
+ 2c940d4e6f50: Waiting
381
410
  cc176b242a57: Waiting
382
411
  0f6514ac2db1: Waiting
383
412
  271be3d5c5cf: Waiting
@@ -387,22 +416,23 @@ e3b1db6d44c6: Waiting
387
416
  a818d59f8c76: Waiting
388
417
  f8663d674596: Waiting
389
418
  c018a1aad765: Waiting
390
- 438ed031efcc: Waiting
391
419
  8e2ab394fabf: Waiting
392
- 4a2b58c02798: Pushed
393
- cc176b242a57: Layer already exists
394
- cedf2394a923: Pushed
395
- 03dafdbaf1a4: Pushed
420
+ 438ed031efcc: Waiting
421
+ 06948691c35f: Pushed
422
+ 1d8bceb8fbfe: Pushed
423
+ 227169a6ac10: Pushed
396
424
  0f6514ac2db1: Layer already exists
425
+ cc176b242a57: Layer already exists
397
426
  271be3d5c5cf: Layer already exists
398
- 5f70bf18a086: Layer already exists
399
427
  f9926f359887: Layer already exists
428
+ 5f70bf18a086: Layer already exists
400
429
  e3b1db6d44c6: Layer already exists
401
430
  a818d59f8c76: Layer already exists
402
431
  f8663d674596: Layer already exists
403
432
  c018a1aad765: Layer already exists
404
433
  438ed031efcc: Layer already exists
405
434
  8e2ab394fabf: Layer already exists
406
- 340650e43082: Pushed
407
- 913bde32ee38: Pushed
408
- platforma-open.milaboratories.3d-structure-prediction.software.py-docker.e8cc067379a9: digest: sha256:f69985f8638c8bbd1e9a6aee8d3e2b1f9854bcb273dc06a63daf3882fb3252c6 size: 3860
435
+ 83eef4ba5f2f: Pushed
436
+ 2c940d4e6f50: Pushed
437
+ 5883446e31bd: Pushed
438
+ platforma-open.milaboratories.3d-structure-prediction.software.py-docker.7dca6668fe43: digest: sha256:4f2d5b7ba3a999e4d5fecccbc7f5e4aea1fb632f780b61ae50275645a1c63280 size: 4073
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @platforma-open/milaboratories.3d-structure-prediction.software
2
2
 
3
+ ## 1.0.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 4438d9d: Clarify NanoBodyBuilder2 usage in the settings panel: relabel the light chain dropdown as optional with a tooltip, and expand the mode-info alert to note that NanoBodyBuilder2 is camelid-VHH-trained, so for conventional heavy-only inputs (e.g. human bulk IGH-only) the produced structure has VHH-biased framework geometry.
8
+
9
+ Drop the user-facing CPU and memory inputs (per-batch resources are fixed). Each prediction batch now requests 4 CPU cores and 4 GiB of memory.
10
+
11
+ Stop writing a wall-clock `prediction-date` REMARK into emitted PDBs. The timestamp made every PDB byte-different on every run, breaking the platforma backend's content-addressed caching — downstream nodes that consumed merged PDB ResourceMaps hit `CIDConflictError`. The other provenance REMARKs (immunebuilder version, torch seed, block version, numbering scheme) plus the seeded ensemble fully determine the prediction.
12
+
13
+ Make the saved Python wrapper log byte-stable for identical inputs: drop the per-line UTC timestamp prefix and remove every wall-clock duration printed by `_log` (`predictor ready in Xs`, `predicted in Xs`, `elapsed=Xs`). The exec template saves stdout via `saveStdoutStream()` into the regular file output set, so its content hash flows into the resource CID; timestamped logs would re-introduce the same `CIDConflictError` failure mode as the PDB date.
14
+
15
+ Set `stepCache: 30 * times.minute` on the `processColumn` call so per-batch outputs stay reachable for the dedup/recovery path across project re-renders, matching the convention used by mixcr-clonotyping and miltenyi-tcr-bcr-clonotyping.
16
+
17
+ Add the species selector (spec R44): `human | mouse | camelid | rat | rabbit | other`, default `human`. Species is included in the block subtitle (R56) alongside the engine. The mode-info banner now splits into two cases: when the species is `camelid` and the light chain is unset we treat it as a true VHH input (informational); for any other species combined with heavy-only input we surface a warning that NanoBodyBuilder2's framework geometry is biased away from conventional VH. A separate warning fires for ABodyBuilder2 runs on species outside the training distribution (anything other than human or mouse). Species is held in `BlockData` only — the workflow does not consume it yet, so switching species does not invalidate cached predictions. Upstream clonotyping blocks do not propagate species through PColumn specs today, so the selector is user-supplied; once upstream wires `pl7.app/species` onto the clonotype-axis domain, this block can pre-fill the default.
18
+
19
+ ## 1.0.4
20
+
21
+ ### Patch Changes
22
+
23
+ - 7a0fedd: Fix docker permissions
24
+
3
25
  ## 1.0.3
4
26
 
5
27
  ### Patch Changes
package/Dockerfile CHANGED
@@ -55,6 +55,15 @@ 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
+
58
67
  # Block sources (everything in src_python/).
59
68
  WORKDIR /app
60
69
  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.3.tgz","uploadPath":"software/platforma-open/milaboratories.3d-structure-prediction.software/py-archive/1.0.3.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.0.5.tgz","uploadPath":"software/platforma-open/milaboratories.3d-structure-prediction.software/py-archive/1.0.5.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.e8cc067379a9","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.7dca6668fe43","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.e8cc067379a9","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.3.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.7dca6668fe43","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.5.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",
3
+ "version": "1.0.5",
4
4
  "type": "module",
5
5
  "description": "Block Software",
6
6
  "block-software": {
@@ -3,9 +3,14 @@
3
3
  ImmuneBuilder writes a standard PDB. Per spec R26/R28/R29 we need to:
4
4
  - Clamp per-atom B-factor to [0.00, 99.99] to fit PDB `%6.2f` precision.
5
5
  - Inject a TITLE line identifying the predictor.
6
- - Inject REMARK 99 PROVENANCE block (version, seed, block version, ISO date).
6
+ - Inject REMARK 99 PROVENANCE block (version, seed, block version).
7
7
  - Inject REMARK 99 CDR* records with IMGT CDR ranges.
8
8
 
9
+ PDB content must be byte-stable for identical inputs so the platforma
10
+ backend can cache and reuse downstream results — a wall-clock prediction
11
+ timestamp would break every run's CID, so we omit it. The seed + version
12
+ fields plus the input sequences are sufficient to reproduce the prediction.
13
+
9
14
  The cleanest approach is: let ImmuneBuilder write a temp PDB, then post-
10
15
  process the lines — injecting REMARKs after TITLE and clamping B-factors on
11
16
  ATOM/HETATM lines in one pass.
@@ -13,7 +18,6 @@ ATOM/HETATM lines in one pass.
13
18
 
14
19
  from __future__ import annotations
15
20
 
16
- from datetime import datetime, timezone
17
21
  from pathlib import Path
18
22
 
19
23
  from numbering import IMGT_CDR_RANGES, cdr_ranges_in_pdb_notation
@@ -22,10 +26,6 @@ B_FACTOR_MIN = 0.00
22
26
  B_FACTOR_MAX = 99.99
23
27
 
24
28
 
25
- def _iso_now() -> str:
26
- return datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
27
-
28
-
29
29
  def _clamp_b_factor(line: str) -> tuple[str, bool]:
30
30
  """Clamp B-factor column on ATOM/HETATM lines. Returns (new_line, clamped)."""
31
31
  if not (line.startswith("ATOM") or line.startswith("HETATM")):
@@ -67,7 +67,6 @@ def _provenance_remark_lines(
67
67
  f"REMARK 99 PROVENANCE immunebuilder-version={immunebuilder_version}",
68
68
  f"REMARK 99 PROVENANCE torch-seed={torch_seed}",
69
69
  f"REMARK 99 PROVENANCE block-version={block_version}",
70
- f"REMARK 99 PROVENANCE prediction-date={_iso_now()}",
71
70
  f"REMARK 99 PROVENANCE numbering-scheme={numbering_scheme}",
72
71
  ]
73
72
 
@@ -51,22 +51,21 @@ import hashlib
51
51
  import json
52
52
  import os
53
53
  import sys
54
- import time
55
54
  import traceback
56
55
  from dataclasses import asdict, dataclass, field
57
- from datetime import datetime, timezone
58
56
  from pathlib import Path
59
57
 
60
58
 
61
59
  def _log(message: str) -> None:
62
60
  """Line-buffered log entry to stderr.
63
61
 
64
- Workflow uses `printErrStreamToStdout` + `saveStdoutStream`; the resulting
65
- log handle is consumed by `PlLogView` in the UI. Every line is timestamped
66
- so users can track progress across long-running batches.
62
+ The exec template saves the stdout stream as a regular file output, so
63
+ the saved-file blob's content hash flows into the resource CID. Wall
64
+ clock timestamps and elapsed-time durations would make the saved log
65
+ byte-different on every run and break the platforma backend's
66
+ content-addressed caching. Keep log lines fully determined by inputs.
67
67
  """
68
- ts = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
69
- print(f"[{ts}] {message}", file=sys.stderr, flush=True)
68
+ print(message, file=sys.stderr, flush=True)
70
69
 
71
70
  from numbering import cdrh3_length as imgt_cdrh3_length
72
71
  from numbering import extract_numbered_residues, vhh_hallmarks_present
@@ -407,9 +406,8 @@ def process_batch(
407
406
  _set_seed(seed)
408
407
  if rows:
409
408
  _log(f"loading {mode} ensemble (4 models)")
410
- predictor_t0 = time.time()
411
409
  predictor = _load_predictor(mode)
412
- _log(f"predictor ready in {time.time() - predictor_t0:.1f}s")
410
+ _log("predictor ready")
413
411
  else:
414
412
  predictor = None
415
413
 
@@ -422,7 +420,6 @@ def process_batch(
422
420
  fail_count = 0
423
421
  success_count = 0
424
422
  cache_hits = 0
425
- run_t0 = time.time()
426
423
 
427
424
  for row_idx, row in enumerate(rows):
428
425
  key = row.get(key_col, "")
@@ -455,12 +452,10 @@ def process_batch(
455
452
  antibody = prediction_cache.get(cache_key)
456
453
  if antibody is None:
457
454
  try:
458
- pred_t0 = time.time()
459
455
  antibody = _predict_one(predictor, mode, sanitized.vh, sanitized.vl)
460
- pred_dt = time.time() - pred_t0
461
456
  prediction_cache[cache_key] = antibody
462
457
  if (row_idx + 1) % log_every == 0 or row_idx == 0:
463
- _log(f"{prefix} predicted in {pred_dt:.1f}s")
458
+ _log(f"{prefix} predicted")
464
459
  except Exception as exc: # noqa: BLE001
465
460
  fail_count += 1
466
461
  _log(f"{prefix} FAIL ImmuneBuilder {type(exc).__name__}: {exc}")
@@ -563,11 +558,10 @@ def process_batch(
563
558
  with open(summary_json, "w") as f:
564
559
  json.dump(summary, f)
565
560
 
566
- elapsed = time.time() - run_t0 if rows else 0.0
567
561
  _log(
568
562
  f"done total={summary['totalRows']} succeeded={summary['succeeded']} "
569
563
  f"failed={summary['failed']} confident={summary['confidentCount']} "
570
- f"cache_hits={cache_hits} elapsed={elapsed:.1f}s"
564
+ f"cache_hits={cache_hits}"
571
565
  )
572
566
  if summary["byFailureReason"]:
573
567
  for reason, n_fail in sorted(