cryosPARC 3.0 helical Symmetry search utility Error

Hi,

First, I wanted to thank you for releasing such a great update to cryoSPARC!

After the update, everything worked quite well, and I wanted to test the helical processing in cryoSPARC. Have to say that I am impressed with how well the C1 reconstruction on the cylinder works! I have downloaded EMPIAR 10019 (VipA/VipB), and everything works really well up to the point when I want to find the symmetry using the search tool. It seems like it has either some problem with parsing provided data or something I am doing wrong, but after testing different settings, it would need some help anyway.

I wanted to search for symmetry and provided a range of 5 to 150 degrees of a twist and 5 to 50 of a rise to find all possible settings. This might be the first issue, but changing the range did not change the errors, so there might be something else wrong with it. If I provide the ranges as is suggested in the description (5,150 and 5,50), I get this python related error:

Traceback (most recent call last):
  File "cryosparc_worker/cryosparc_compute/run.py", line 84, in cryosparc_compute.run.main
  File "cryosparc_worker/cryosparc_compute/jobs/helix/run_utils.py", line 516, in cryosparc_compute.jobs.helix.run_utils.run_search
  File "/home/cryosparc_user/software/cryosparc/cryosparc2_worker/cryosparc_compute/jobs/runcommon.py", line 1337, in log_plot
'flags' : flags + [flag],
TypeError: can only concatenate str (not "list") to str

So it has problems with the data provided that is a list [5, 150], not a string. If I change it literally as it is in cryosparc suggestion "5,150’ then:

Traceback (most recent call last):
  File "cryosparc_worker/cryosparc_compute/run.py", line 84, in cryosparc_compute.run.main
  File "cryosparc_worker/cryosparc_compute/jobs/helix/run_utils.py", line 489, in cryosparc_compute.jobs.helix.run_utils.run_search
ValueError: could not convert string to float: '"5'

So it cannot split the " from number. I also tried leaving those field empty:

Traceback (most recent call last):
  File "cryosparc_worker/cryosparc_compute/run.py", line 84, in cryosparc_compute.run.main
  File "cryosparc_worker/cryosparc_compute/jobs/helix/run_utils.py", line 489, in cryosparc_compute.jobs.helix.run_utils.run_search
AttributeError: 'NoneType' object has no attribute 'split'

I hope it helps and can be easily fixed!

Best,
Dawid

1 Like

Hi @dzyla,

Thank you for the feedback, and we’re glad to know that the workflow has been running well up until this point!

With regards to the error – unfortunately this is a bug specific to the “rise” mode (as opposed to the default “pitch” mode) and should be fixed in a patch to be released in the coming days; the error isn’t related to the grid parameters that you chose. For the search grid min/max parameters, you’re right that they should be passed as comma separated values like 5,150 and 5,50 (with no quotes) and this should be able to work in the upcoming patch for the “rise” search mode.

Currently, the only workaround would be to run the job in “pitch” mode, where you specify a grid of pitch values (in Angstroms) and also the number of subunits per full rotation. So for example, knowing that the correct rise and twist are 21.8 Å and 29.4º respectively, we can convert these to the pitch/number-of-subunit representation through the conversion equations that are detailed in the helical symmetry in cryoSPARC page:

n = 360º / 29.4 º = 12.2 # correct number of subunits per turn
p = 360º * (21.8 Å) / 29.4º = 267 Å # correct pitch

And if we wanted to define a search range that is roughly centered on these values, we could set the n search range to 2,30 and the pitch search range to 200,400 (for example).

The advantage of using this “pitch” mode is that it will search over both right and left handed helices by default, and will output plots for both left and right hands (i.e. helices with positive and negative twist values). If your initial C1 refinement happened to converge to the incorrect hand (which can frequently happen, for example see the symmetry search section of the EMPIAR-10031 case study), this will ensure that your search will check both hands. Once the search job is run, it will also output a table of all the candidate parameters in the range, and it will convert these into rise/twist values too so you can copy and paste them into the symmetry parameters for a Helical refinement.

The only other thing to keep in mind about this job is that with very large search ranges, the job may throw an error and request you to shrink them, which can happen if the maximum helical rise searched over exceeds around half the box size. However, for a box size of around 500 Å (just over twice the helical diameter of VipA/VipB), your initial search ranges for rise and twist of (5,150 degrees and 5,50 Angstroms) should work just fine. For this sample, I believe there is also C6 axial symmetry which can be applied in the symmetry-enforced helical refinement job.

Thank you again for the feedback :slight_smile: let me know if you have any other questions, and best regards,
Michael

2 Likes

Hi!

Thanks so much for the reply! I updated CS to 3.0.1, but the error with the rise mode is still there. I provided values as suggested and now it shows again the same errors:

Traceback (most recent call last):
  File "cryosparc_worker/cryosparc_compute/run.py", line 84, in cryosparc_compute.run.main
  File "cryosparc_worker/cryosparc_compute/jobs/helix/run_utils.py", line 516, in cryosparc_compute.jobs.helix.run_utils.run_search
  File "/home/cryosparc_user/software/cryosparc/cryosparc2_worker/cryosparc_compute/jobs/runcommon.py", line 1337, in log_plot
'flags' : flags + [flag],
TypeError: can only concatenate str (not "list") to str

Would be great to have this working!

Cheers,
Dawid

Hi @dzyla,

Thanks for pointing this out- something seems to have went wrong while we were building the v3.0.1 package. I’ve rebuilt and re-uploaded it. You can get the fixed version of cryoSPARC v3.0.1 by overriding the cryosparc update process:
https://guide.cryosparc.com/setup-configuration-and-management/software-updates#forced-update

Please let me know if you still encounter this error after completing these steps.

2 Likes

Hi @stephan,

Getting the error message even after forced update.

Hi @bcanax,

Just to confirm, are you currently seeing the TypeError traceback on v3.0.1 as below, or something else?

Traceback (most recent call last):
  File "cryosparc_worker/cryosparc_compute/run.py", line 84, in cryosparc_compute.run.main
  File "cryosparc_worker/cryosparc_compute/jobs/helix/run_utils.py", line 516, in cryosparc_compute.jobs.helix.run_utils.run_search
  File "/home/cryosparc_user/software/cryosparc/cryosparc2_worker/cryosparc_compute/jobs/runcommon.py", line 1337, in log_plot
'flags' : flags + [flag],
TypeError: can only concatenate str (not "list") to str

Best,
Michael

The TypeError traceback.

The AttributeError is an exception thrown when an object does not have the attribute you tried to access. ‘NoneType’ object has no attribute ‘split’ often indicates that the attribute you are trying to python split is Null, meaning there is no value in it to split. So, you need to check the attribute is not Null before splitting. Something like…

if val is not None:
    # ...