Hi all,
Recently I’ve processed a dataset of an icosahedral virus, and reached an overall resolution of 3A with I symmetry applied for the capsid. Then I tried to go on processing with the portal reconstruction. I know the next thing is to define the coordinates of the 12 vertices then re-extract those sub-particles and do the localized classification to find the class showing portal density. Does anyone have any experience or detailed steps to do this in cryoSPARC?
Thanks for your patience, I had to spend some time exploring how to do this effectively within CS. I was able to make a workflow to find the portal on the Calicivirus VP2 dataset, EMPIAR-10193.
After Homogeneous Refinement of your virus you can do the following.
Symmetry expand the final particle stack with I symmetry.
Use ChimeraX to locate the vertex of which the particles and volume will be shifted to the center of the box. I am unsure if this will apply to your dataset, but for EMPIAR-10193 there were two possible vertices where the particle could be shifted too (red and yellow), of which the the red vertex was the correct one.
To find the coordinates of this position, place a marker on the surface, reposition the marker if needed using the “Move” mode in the “Markers” panel, and use measure center #{marker} to obtain coordinates in Å.
Back in cryosparc, connect the volume and symmetry expanded particles to a Volume Alignment Tools (VAT) job.
Use the 3D-coordinates output by the measure command in chimeraX as input for the VAT parameter “3D-coordinates of new center” and use ‘A’ for Angstroms. In my case, this was “366.67,419.19,559.45 A”.
Download your shifted volume, and find the right location for a mask using the same protocol from step 3.
I did not gaussian filter the volume, I lowpass filtered it in CS.
Import the mask into your workspace using the Import Volumes job.
Use a Volume Tools job to lowpass filter the mask to 15 Å and pad with 30 pixels. Although these are the values that worked for me, I didn’t test many – others will probably work well!
Next, re-extract the shifted particles using Extract From Micrographs.
For the dataset that I tested this workflow on, I re-extracted at a box size of 384 px and Fourier cropped to 300 px.
I then did a Homogeneous Reconstruction to ensure the putative viral portal was in the center of the box and that the mask I created fit over that region as well.
Connect the particle output of the homogeneous reconstruction to a 3D-classification job and the cylindrical mask as the focus mask. For parameter choices, I set the following:
Number of classes: 80
Filter resolution: 6
Initial structure lowpass: 15
This job then had one class which has the portal density clearly visible:
I’ve successfully screened out one class containing the portal density with your step-by-step instruction. After a further round of local refinement focused on the portal density, those structural details can be clearly distinguished. I’ll try to do further symmetry expansion and apply Cn symmetry to improve the resolution.
@liz I’m glad those instructions were able to get you to that result. As @rbs_sci mentioned, once you symmetry expand, you should not symmetry expand that particle set again. After getting the portal density, I used Volume alignment tools with Do symmetry alignment enabled and then I specified C3 since this portal was C3 symmetric. I then removed duplicates and performed a local refinement with a more specific mask for the portal and applied C3 symmetry within the local refinement job.
Thanks @kstachowski ! After using Volume alignment tools and removing duplicated particles, the additional local refinement gave me a high resolution map with portal density which has a C12 symmetry. And I found the mask to include the portal was deserved to try in the earlier step. Thanks again!
I’ve recently tried doing some virus processing, and it seems yours is the only protocol I’ve found for isolating the penton - and hence the neck/tail complex - huge thanks!
I am following your protocol and I have issues with the generated mask. When I run ‘Volume Tools’ to lowpass filter and pad, I’m getting this error:
Traceback (most recent call last):
File “cryosparc_master/cryosparc_compute/run.py”, line 129, in >cryosparc_master.cryosparc_compute.run.main
File “/cryosparc_worker/cryosparc_compute/jobs/utilities/run_volume_tools.py”, line 146, in run >assert n.isclose(maxval, 1.0, atol=1e-4), “Output mask maximum value is not 1! Are you sure >the output type is intended to be a mask, not a map?”
AssertionError: Output mask maximum value is not 1! Are you sure the output type is intended >to be a mask, not a map?
Do you know how to overcome this? I have generated the cylindrical mask as per the mentioned guide (eg. onesmask … onGrid … fullmap true) and then directly import it into cryosparc (without gaussian, as you mentioned).
@kstachowski, Thanks for your info. I followed your workflow to process my data set. It works well until 3D classification, but it shows this error in the 3D classification job:
“Traceback (most recent call last):
File “cryosparc_master/cryosparc_compute/run.py”, line 129, in cryosparc_master.cryosparc_compute.run.main
File “cryosparc_master/cryosparc_compute/jobs/class3D/run.py”, line 997, in cryosparc_master.cryosparc_compute.jobs.class3D.run.run_class_3D
File “/spshared/apps/cryosparc4/cryosparc_worker/cryosparc_compute/jobs/runcommon.py”, line 2840, in overwrite_splits
dset[key + ‘/split’] = splits
File “/spshared/apps/cryosparc4/cryosparc_worker/cryosparc_tools/cryosparc/dataset.py”, line 945, in setitem
assert self._data.has(key), f"Cannot set non-existing dataset key {key}; use add_fields() first"
AssertionError: Cannot set non-existing dataset key alignments_class3D_0/split; use add_fields() first”
Do you have any suggestions about this error? Thanks!
Here is the workflow and details for 3D classification. I noticed that when I use a small subset of particles, the 3D classification works well. I’m not sure if this is because there are too many particles. We are using the latest version of CryoSPARC v4.7.1+250814. Thank you for your assistance!
Do any of the symbols indicate an issue with the particles missing any of the slots on these jobs?
Additionally for the outputs of J447 and inputs for J450, can you include a screenshot showing the slots associated with the particles (example below)?
I think we’ve tried up o 160 successfully, but haven’t had any results that required going above 80 yet. 80 runs fine even at relatively large boxes with no memory issues
It seems is from the transparent hugepage(as below). We have this issue across most jobs, but it hasn’t affected job running. Do you have any suggestions for resolving this?
Thanks for your suggestion! To expedite testing, I used a subset of particles and Fourier cropped the box size to 260 px. I plan to re-extract the full particle set in later processing.
Thanks for sending all of this plus the logs over. From the logs, there was an OOM error in the 3D-classification. We would recommend reducing the number of particles, this can be dont by using the particles sets tool, supplying # of batches and the batch size, and using the option split randomize Ultimately if you need to run multiple 3D-classification jobs, you can combine the classes that have the portal present.