Hi,
I’m trying to get my head around cryosparc-tools
. A simple use case might be to take a particle set (e.g. from a refinement job) and edit one parameter (e.g. Cs or amplitude contrast for example) and output a modified particle set. How would I go about doing that?
Cheers
Oli
Hi @olibclarke, you can use a combination of CryoSPARC.find_job
, Job.load_output
, CryoSPARC.save_external_result
and dataset operations to achieve this. Here’s some partial code:
from cryosparc.tools import CryoSPARC
cs = CryoSPARC(...) # fill in credentials and instance info here
puid = "PX" # substitute with project UID
wuid = "WY" # substitute with workspace UID
juid = "JZ" # substitute with job UID
output = "particles" # substitute with job output name
job = cs.find_job(puid, juid)
particles = job.load_output(output, slots=["ctf"])
# == Modify output dataset here ==
particles["ctf/cs_mm"] = ...
particles["ctf/amp_contrast"] = ...
cs.save_external_result(puid, wuid, "particle", particles,
name=output
slots=["ctf"],
passthrough=(juid, output),
title="Modified particles",
desc="set cs to ... and amplitude contrast to ...",
)
This creates a new External job in the target workspace with a modified particles.ctf
output group that inherits other output groups from the given refinement job.
I used the Re-center Particles example as a template for this code, I recommend reading that and the other examples to learn more about cryosparc-tools’s capabilities.
Hope that helps!
3 Likes
That is exceptionally helpful, thanks @nfrasser!
1 Like