1
- # Thomas Hoffmann, EMBL Heidelberg, [email protected] , 2023/07
1
+ # Thomas Hoffmann, EMBL Heidelberg, [email protected] , 2024/03
2
2
easyblock = 'PythonBundle'
3
3
4
4
name = 'RFdiffusion'
@@ -10,97 +10,11 @@ description = """RFdiffusion is an open source method for structure generation,
10
10
conditional information (a motif, target etc). It can perform a whole range of
11
11
protein design challenges as we have outlined in the RFdiffusion paper
12
12
https://www.biorxiv.org/content/10.1101/2022.12.09.519842v1
13
-
14
- Model files are available in $RFDIFFUSION_MODELS"""
13
+ """
15
14
16
15
toolchain = {'name' : 'foss' , 'version' : '2022a' }
17
- toolchainopts = {}
18
-
19
- _data_dir = '%(installdir)s' # place schedules and models in installation directory
20
- # _data_dir = '/data/%(name)s/%(version)s/' # or place them in separate location.
21
-
22
- # _models contains download_filenames F and the unique download url part X. The unique url for each file is:
23
- # _models_url + / + X + / + F
24
- # X is not a checksum. According checksums are found in _model_checksums.
25
- _models = [
26
- ("Base_ckpt.pt" , "6f5902ac237024bdd0c176cb93063dc4" ),
27
- ("Complex_base_ckpt.pt" , "e29311f6f1bf1af907f9ef9f44b8328b" ),
28
- ("Complex_Fold_base_ckpt.pt" , "60f09a193fb5e5ccdc4980417708dbab" ),
29
- ("InpaintSeq_ckpt.pt" , "74f51cfb8b440f50d70878e05361d8f0" ),
30
- ("InpaintSeq_Fold_ckpt.pt" , "76d00716416567174cdb7ca96e208296" ),
31
- ("ActiveSite_ckpt.pt" , "5532d2e1f3a4738decd58b19d633b3c3" ),
32
- ("Base_epoch8_ckpt.pt" , "12fc204edeae5b57713c5ad7dcb97d39" ),
33
- ("Complex_beta_ckpt.pt" , "f572d396fae9206628714fb2ce00f72e" ),
34
- ("RF_structure_prediction_weights.pt" , "1befcb9b28e2f778f53d47f18b7597fa" ),
35
- ]
36
- _models_url = 'http://files.ipd.uw.edu/pub/RFdiffusion'
37
- _schedules_url = 'https://files.ipd.uw.edu/krypton/'
38
- _schedules_fn = 'schedules.zip'
39
-
40
- _model_checksums = [
41
- # Base_ckpt.pt
42
- '0fcf7d7c32b4848030aca3a051e6768de194616f96ba6c38186351a33bfc6eca' ,
43
- # Complex_base_ckpt.pt
44
- '76e4e260aefee3b582bd76b77ab95d2592e64f00c51bf344968ab9239f3250bc' ,
45
- # Complex_Fold_base_ckpt.pt
46
- '0ac3b4024aea811078cec41482528291d6d7d7084bf8190ec118f54642fb81a1' ,
47
- # InpaintSeq_ckpt.pt
48
- '3b71b2b954e87d46b75a88ba64e0420fbf27f592604b10b6c3561b8c8ab70ab6' ,
49
- # InpaintSeq_Fold_ckpt.pt
50
- '51849c9fe64c16a38fe41c75db76abe044e4d3493926f6cfd29a5bde0331b7cc' ,
51
- # ActiveSite_ckpt.pt
52
- 'beca1f672049161df0bc6a2d2523828f19fd9c8a2b449988e246dde42e7ea986' ,
53
- # Base_epoch8_ckpt.pt
54
- 'b8e5d57f0b8a8f8cb30779c106b75210b46a914a4d19fb180676ae647f5ae23d' ,
55
- # Complex_beta_ckpt.pt
56
- '5a0b1cafc23c60b1aabcec1e49391986ac4fd02cc1b6b4cc41714ca9fe882e9e' ,
57
- # RF_structure_prediction_weights.pt
58
- '6414e9e60b0b01011e5a182def40b4e6de4e137554c887b2916d43566733ed95' ,
59
- ]
60
- _schedules_checksum = '9fbb47ddb92f1c0cf234bec39ba6ba64d179501fbff53a4d10b4e55afd75e44a'
61
16
62
17
_pysp = '%(installdir)s/lib/python%(pyshortver)s/site-packages'
63
- _models_dst = '%s/models/' % _data_dir
64
- _schedules_dst = '%s/schedules/' % _data_dir
65
- _get_models = '&&' .join (["cd %s && wget -nc %s/%s/%s" % (_models_dst , _models_url , _lv , _ln ) for _ln , _lv in _models ])
66
- # wget: do not overwrite
67
- _get_models += '&&'
68
- _get_models += '&&' .join (["[ $(shasum -a 256 %s/%s |awk '{print $1}') == %s ]||{echo wrong checksum for %s;exit 1;}" %
69
- (_models_dst , _ln , _lcs , _ln ) for (_ln , _ ), _lcs in zip (_models , _model_checksums )])
70
- _get_schedules = 'cd %s && wget %s/%s ' % (_schedules_dst , _schedules_url , _schedules_fn )
71
- _get_schedules += "&& [ $(shasum -a 256 %s |awk '{print $1}') == %s ]" % (_schedules_fn , _schedules_checksum )
72
- _get_schedules += '&& unzip -n %s' % _schedules_fn # unzip: do not overwrite
73
- _get_schedules += '&& mv RFdiffusion/schedules/* . && rm RFdiffusion %s -rf' % _schedules_fn
74
-
75
-
76
- # uncomment for installing models and schedules as components.
77
- # Then comment out _get_schedules and _get_models in postinstallcmds
78
- #
79
- # checksums = [_schedules_checksum] + _model_checksums
80
- # components = [('schedules', version, {
81
- # 'easyblock': 'CmdCp',
82
- # 'source_urls': [_schedules_url],
83
- # 'sources': [{
84
- # 'filename': '%(name)s_v%(version)s.zip',
85
- # 'download_filename': '%(name)s.zip',
86
- # 'extract_cmd': 'unzip -j %s'
87
- # }],
88
- # 'cmds_map': [('.*', '')],
89
- # 'files_to_copy': [(['*.pkl'], _schedules_dst)],
90
- # })]
91
- # components += [
92
- # (_lname, _lver, {
93
- # 'easyblock': 'CmdCp',
94
- # 'source_urls': ['%s/%%(version)s/' % _models_url],
95
- # 'sources': [{
96
- # 'filename': '%(name)s_v%(version)s',
97
- # 'download_filename': '%(name)s',
98
- # 'extract_cmd': 'cp %s ' + _lname}],
99
- # 'cmds_map': [('.*', '')],
100
- # 'files_to_copy': [(['*.pt'], _models_dst)],
101
- # }) for _lname, _lver in _models]
102
-
103
- builddependencies = [('wget' , '1.21.3' )]
104
18
105
19
dependencies = [
106
20
('Python' , '3.10.4' ),
@@ -110,6 +24,8 @@ dependencies = [
110
24
('e3nn' , '0.3.3' , versionsuffix ),
111
25
('Hydra' , '1.3.2' ),
112
26
('DGL' , '1.1.1' , versionsuffix ),
27
+ ('RFdiffusion-models' , '1.1.0' ,'' , SYSTEM ),
28
+ ('RFdiffusion-schedules' , '1.1.0' , '' , SYSTEM ),
113
29
]
114
30
115
31
use_pip = True
@@ -122,7 +38,7 @@ exts_list = [
122
38
('executing' , '1.2.0' , {
123
39
'checksums' : ['19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107' ],
124
40
}),
125
- ('icecream' , '2.1.3' , { # not req. in RFdiffusion > 1.1.0 (removed with commit 06ae1cb)
41
+ ('icecream' , '2.1.3' , {
126
42
'checksums' : ['0aa4a7c3374ec36153a1d08f81e3080e83d8ac1eefd97d2f4fe9544e8f9b49de' ],
127
43
}),
128
44
('dllogger' , '1.0.0' , {
@@ -143,33 +59,23 @@ exts_list = [
143
59
(name , version , {
144
60
'patches' : [
145
61
'RFdiffusion-1.1.0_setup.patch' ,
62
+ # change default paths of models and schedules to $RFDIFFUSION_MODELS and RFDIFFUSION_SCHEDULES
63
+ # to be set by dependencies RFDiffusion-models and RFDiffusion-schedules.
64
+ # Expect default config in _pysp/rfdiffusion/config/inference:
146
65
'RFdiffusion-1.1.0_data_paths.patch' ,
147
66
],
148
67
'source_urls' : ['https://github.com/RosettaCommons/RFdiffusion/archive/refs/tags/' ],
149
68
'sources' : [{'filename' : '%(name)s-%(version)s.tar.gz' , 'download_filename' : 'v%(version)s.tar.gz' }],
150
69
'checksums' : [
151
70
{'RFdiffusion-1.1.0.tar.gz' : '57d82f0d43540c2912eda3f1d34ad90b13db14966ee069c427e217fe78f0297f' },
152
71
{'RFdiffusion-1.1.0_setup.patch' : '1d17fae9d4d3716814f0d9bb6587658590dc07772c87e92fb9ad81cda6a2539d' },
153
- {'RFdiffusion-1.1.0_data_paths.patch' : 'e4987c73e12deb08f22aad1b7928f891e7a9cb6289dff59a2f22e0d77745cd20 ' },
72
+ {'RFdiffusion-1.1.0_data_paths.patch' : '3d1ddd1684004b4757958ef3d07b96a0f8976091fe670381fc723ad4eb6d65a5 ' },
154
73
],
155
74
}),
156
75
]
157
76
158
-
159
- modextravars = {
160
- 'RFDIFFUSION_MODELS' : _models_dst ,
161
- 'RFDIFFUSION_SCHEDULES' : _schedules_dst
162
- }
163
77
postinstallcmds = [
164
78
'cp -rpP config examples %s/%%(namelower)s' % _pysp ,
165
- 'cd %s/%%(namelower)s/ && ln --relative -s %s %s .' % (_pysp , _models_dst , _schedules_dst ),
166
- 'mkdir -p %s %s' % (_models_dst , _schedules_dst ),
167
- #
168
- # comment out two following lines if you prefer to download models
169
- # (https://github.com/RosettaCommons/RFdiffusion/blob/main/scripts/download_models.sh) and schedules
170
- # (https://files.ipd.uw.edu/krypton/schedules.zip) manually or if you prefer to install them as a component:
171
- _get_schedules ,
172
- _get_models
173
79
]
174
80
175
81
sanity_check_commands = [
@@ -179,12 +85,10 @@ sanity_check_commands = [
179
85
]
180
86
181
87
sanity_check_paths = {
182
- 'files' : ['%s/%s' % ( _models_dst , x ) for ( x , _ ) in _models ],
88
+ 'files' : [],
183
89
'dirs' : [
184
90
'%s/%%(namelower)s/inference' % _pysp ,
185
91
'%s/%%(namelower)s/examples' % _pysp ,
186
- _models_dst ,
187
- _schedules_dst ,
188
92
'%s/%%(namelower)s/config/inference' % _pysp ]
189
93
}
190
94
0 commit comments