I used to create many volumes in ChimeraX using the shape and onesmask commands, and then manually import them into CryoSPARC v4.7. After import, I converted them to masks using Volume Tools without any issues.
However, after upgrading to CryoSPARC 5.0.1/5.0.2, I keep getting the following error message when importing volumes. As a workaround, I have to manually change the mrcfile data type every single time.
Traceback (most recent call last):
File “cli/run.py”, line 106, in cli.run.run_job
File “cli/run.py”, line 211, in cli.run.run_job_function
File “/home/user/cryosparc/cryosparc_master/compute/jobs/imports/run_import_volumes.py”, line 191, in run_import_volumes
rc.save_volume(
File “/home/user/cryosparc/cryosparc_master/core/run_context.py”, line 454, in save_volume
return jobs.save_volume(
File “/home/user/cryosparc/cryosparc_master/core/jobs.py”, line 2819, in save_volume
dset = create_volume_dataset(
File “/home/user/cryosparc/cryosparc_master/core/jobs.py”, line 2773, in create_volume_dataset
ioengine.write_mrc(mrc_path_abs, n.ascontiguousarray(map_r), x, y, z, psize, output_f16)
ValueError: Invalid array data type for argument ‘data’ (expected float )
When saving the map/mask from ChimeraX, use the command line rather than the GUI, and explicitly set the valueType option to either float16 or float32. After doing this, the file can be imported successfully in CryoSPARC 5.0.x.
One important point is that this option was not required before CryoSPARC 5.0. The same integer-type MRC files could be imported successfully in CryoSPARC 4.7, but after upgrading to 5.0.x, CryoSPARC appears to have lost the ability to import integer-valued MRC volumes/masks in this workflow.
Hi @V3eneno , Yesterday we released CryoSPARC v5.0.5, in which this regression was fixed. Please try out the new version and let us know if you have any continued difficulty
Thanks for bringing this to our attention. It appears that this issue persists among a few other areas. For now, it would be best to ensure that the masks being created are done using a float option in ChimeraX as you mentioned in your previous reply.