Skip to content

Commit f03676a

Browse files
committed
Logic fixes for user provided initial model
The initial model will need to be rescaled for each pipeline instance as the particles sizes will change
1 parent 97dc936 commit f03676a

File tree

1 file changed

+41
-16
lines changed

1 file changed

+41
-16
lines changed

src/murfey/server/__init__.py

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1676,24 +1676,49 @@ def _register_3d_batch(message: dict, _db=murfey_db, demo: bool = False):
16761676
)
16771677

16781678
provided_initial_model = _find_initial_model(visit_name, machine_config)
1679-
if provided_initial_model:
1679+
if provided_initial_model and not feedback_params.initial_model:
16801680
rescaled_initial_model_path = (
16811681
provided_initial_model.parent
1682-
/ f"{provided_initial_model.stem}_rescaled{provided_initial_model.suffix}"
1682+
/ f"{provided_initial_model.stem}_rescaled_{pj_id}{provided_initial_model.suffix}"
16831683
)
1684-
_resize_intial_model(
1685-
*_downscaled_box_size(
1686-
message["particle_diameter"],
1687-
relion_options["angpix"],
1688-
),
1689-
provided_initial_model,
1690-
rescaled_initial_model_path,
1691-
machine_config.external_executables,
1692-
machine_config.external_environment,
1693-
)
1694-
feedback_params.initial_model = str(rescaled_initial_model_path)
1695-
_db.add(feedback_params)
1696-
_db.commit()
1684+
if not rescaled_initial_model_path.is_file():
1685+
_resize_intial_model(
1686+
*_downscaled_box_size(
1687+
message["particle_diameter"],
1688+
relion_options["angpix"],
1689+
),
1690+
provided_initial_model,
1691+
rescaled_initial_model_path,
1692+
machine_config.external_executables,
1693+
machine_config.external_environment,
1694+
)
1695+
feedback_params.initial_model = str(rescaled_initial_model_path)
1696+
other_options["initial_model"] = str(rescaled_initial_model_path)
1697+
next_job = feedback_params.next_job
1698+
class3d_dir = (
1699+
f"{class3d_message['class3d_dir']}{(feedback_params.next_job+1):03}"
1700+
)
1701+
feedback_params.next_job += 1
1702+
_db.add(feedback_params)
1703+
_db.commit()
1704+
1705+
class3d_grp_uuid = _murfey_id(message["program_id"], _db)[0]
1706+
class_uuids = _murfey_id(message["program_id"], _db, number=4)
1707+
class3d_params = db.Class3DParameters(
1708+
pj_id=pj_id,
1709+
murfey_id=class3d_grp_uuid,
1710+
particles_file=class3d_message["particles_file"],
1711+
class3d_dir=class3d_dir,
1712+
batch_size=class3d_message["batch_size"],
1713+
)
1714+
_db.add(class3d_params)
1715+
_db.commit()
1716+
_murfey_class3ds(
1717+
class_uuids,
1718+
class3d_message["particles_file"],
1719+
message["program_id"],
1720+
_db,
1721+
)
16971722

16981723
if feedback_params.hold_class3d:
16991724
# If waiting then save the message
@@ -1801,7 +1826,7 @@ def _register_3d_batch(message: dict, _db=murfey_db, demo: bool = False):
18011826
_transport_object.send(
18021827
"processing_recipe", zocalo_message, new_connection=True
18031828
)
1804-
feedback_params.next_job += 1
1829+
feedback_params.hold_class3d = True
18051830
_db.add(feedback_params)
18061831
_db.commit()
18071832
_db.close()

0 commit comments

Comments
 (0)