53
53
# everything else
54
54
METADATA_FILE = "meta_aligner.yaml"
55
55
56
+ # transformation matrices
57
+ TRANS_NEIGHBOURHOOD = "neighbourhood_transforms.yaml"
58
+ TRANS_CONF_SITE = "conformer_site_transforms.yaml"
59
+ TRANS_REF_STRUCT = "reference_structure_transforms.yaml"
60
+
56
61
57
62
class UploadState (str , Enum ):
58
63
"""Target loader progress state.
@@ -67,6 +72,7 @@ class UploadState(str, Enum):
67
72
REPORTING = "REPORTING"
68
73
SUCCESS = "SUCCESS"
69
74
FAILED = "FAILED"
75
+ CANCELED = "CANCELED"
70
76
71
77
72
78
class Level (str , Enum ):
@@ -145,13 +151,14 @@ def log(self, level: Level, message: str) -> None:
145
151
self .stack .append (UploadReportEntry (level = level , message = message ))
146
152
self ._update_task (message )
147
153
148
- def final (self , archive_name ):
149
- if self .upload_state == UploadState .PROCESSING :
150
- self .upload_state = UploadState .SUCCESS
151
- message = f"{ archive_name } uploaded successfully."
154
+ def final (self , message , upload_state = None ):
155
+ if upload_state :
156
+ self .upload_state = upload_state
152
157
else :
153
- self .upload_state = UploadState .FAILED
154
- message = f"Uploading { archive_name } failed."
158
+ if self .upload_state == UploadState .PROCESSING :
159
+ self .upload_state = UploadState .SUCCESS
160
+ else :
161
+ self .upload_state = UploadState .FAILED
155
162
156
163
self .stack .append (UploadReportEntry (message = message ))
157
164
self ._update_task (self .json ())
@@ -162,6 +169,7 @@ def json(self):
162
169
def _update_task (self , message : str | list ) -> None :
163
170
if self .task :
164
171
try :
172
+ logger .debug ("taskstuff %s" , dir (self .task ))
165
173
self .task .update_state (
166
174
state = self .upload_state ,
167
175
meta = {
@@ -671,10 +679,12 @@ def process_compound(
671
679
fields = {
672
680
"smiles" : smiles ,
673
681
}
682
+ defaults = {"compound_code" : data .get ("compound_code" , None )}
674
683
675
684
return ProcessedObject (
676
685
model_class = Compound ,
677
686
fields = fields ,
687
+ defaults = defaults ,
678
688
key = protein_name ,
679
689
)
680
690
@@ -1127,7 +1137,9 @@ def process_metadata(
1127
1137
# moved this bit from init
1128
1138
self .target , target_created = Target .objects .get_or_create (
1129
1139
title = self .target_name ,
1130
- display_name = self .target_name ,
1140
+ defaults = {
1141
+ "display_name" : self .target_name ,
1142
+ },
1131
1143
)
1132
1144
1133
1145
# TODO: original target loader's function get_create_projects
@@ -1146,7 +1158,7 @@ def process_metadata(
1146
1158
# remove uploaded file
1147
1159
Path (self .bundle_path ).unlink ()
1148
1160
msg = f"{ self .bundle_name } already uploaded, skipping."
1149
- self .report .log ( Level . INFO , msg )
1161
+ self .report .final ( msg , upload_state = UploadState . CANCELED )
1150
1162
raise FileExistsError (msg )
1151
1163
1152
1164
if project_created and committer .pk == settings .ANONYMOUS_USER :
@@ -1158,9 +1170,42 @@ def process_metadata(
1158
1170
assert self .target
1159
1171
self .target .project_id .add (self .project )
1160
1172
1173
+ meta = self ._load_yaml (Path (upload_root ).joinpath (METADATA_FILE ))
1174
+
1175
+ # collect top level info
1176
+ self .version_number = meta ["version_number" ]
1177
+ self .version_dir = meta ["version_dir" ]
1178
+ self .previous_version_dirs = meta ["previous_version_dirs" ]
1179
+
1180
+ # check tranformation matrix files
1181
+ ( # pylint: disable=unbalanced-tuple-unpacking
1182
+ trans_neighbourhood ,
1183
+ trans_conf_site ,
1184
+ trans_ref_struct ,
1185
+ ) = self .validate_files (
1186
+ obj_identifier = "trans_matrices" ,
1187
+ # since the paths are given if file as strings, I think I
1188
+ # can get away with compiling them as strings here
1189
+ file_struct = {
1190
+ TRANS_NEIGHBOURHOOD : f"{ self .version_dir } /{ TRANS_NEIGHBOURHOOD } " ,
1191
+ TRANS_CONF_SITE : f"{ self .version_dir } /{ TRANS_CONF_SITE } " ,
1192
+ TRANS_REF_STRUCT : f"{ self .version_dir } /{ TRANS_REF_STRUCT } " ,
1193
+ },
1194
+ required = (TRANS_NEIGHBOURHOOD , TRANS_CONF_SITE , TRANS_REF_STRUCT ),
1195
+ )
1196
+
1161
1197
self .experiment_upload .project = self .project
1162
1198
self .experiment_upload .target = self .target
1163
1199
self .experiment_upload .committer = committer
1200
+ self .experiment_upload .neighbourhood_transforms = str (
1201
+ self ._get_final_path (trans_neighbourhood )
1202
+ )
1203
+ self .experiment_upload .conformer_site_transforms = str (
1204
+ self ._get_final_path (trans_conf_site )
1205
+ )
1206
+ self .experiment_upload .reference_structure_transforms = str (
1207
+ self ._get_final_path (trans_ref_struct )
1208
+ )
1164
1209
self .experiment_upload .save ()
1165
1210
1166
1211
( # pylint: disable=unbalanced-tuple-unpacking
@@ -1171,13 +1216,6 @@ def process_metadata(
1171
1216
blocks = ("assemblies" , "xtalforms" ),
1172
1217
)
1173
1218
1174
- meta = self ._load_yaml (Path (upload_root ).joinpath (METADATA_FILE ))
1175
-
1176
- # collect top level info
1177
- self .version_number = meta ["version_number" ]
1178
- self .version_dir = meta ["version_dir" ]
1179
- self .previous_version_dirs = meta ["previous_version_dirs" ]
1180
-
1181
1219
( # pylint: disable=unbalanced-tuple-unpacking
1182
1220
crystals ,
1183
1221
xtalforms ,
@@ -1563,7 +1601,7 @@ def load_target(
1563
1601
)
1564
1602
except IntegrityError as exc :
1565
1603
logger .error (exc , exc_info = True )
1566
- target_loader .report .final (target_loader .data_bundle )
1604
+ target_loader .report .final (f"Uploading { target_loader .data_bundle } failed" )
1567
1605
target_loader .experiment_upload .message = target_loader .report .json ()
1568
1606
raise IntegrityError from exc
1569
1607
@@ -1585,7 +1623,7 @@ def load_target(
1585
1623
1586
1624
set_directory_permissions (target_loader .abs_final_path , 0o755 )
1587
1625
1588
- target_loader .report .final (target_loader .data_bundle )
1626
+ target_loader .report .final (f" { target_loader .data_bundle } uploaded successfully" )
1589
1627
target_loader .experiment_upload .message = target_loader .report .json ()
1590
1628
1591
1629
# logger.debug("%s", upload_report)
0 commit comments