Object is not subscriptable in 3DFlex reconstruction

Hi -

I’ve been trying to run 3D Flex reconstruction and get the message below:

Traceback (most recent call last):
  File "cryosparc_master/cryosparc_compute/run.py", line 96, in cryosparc_compute.run.main
  File "/gpfs/data/bhabhaekiertlabs/local_software/CryoSparc/cryosparc2_worker/cryosparc_compute/jobs/flex_refine/run_highres.py", line 49, in run
    len_A = n.sum(particles_dset['alignments3D/split']==0)
TypeError: 'NoneType' object is not subscriptable

Any idea what could have gone wrong? (run with “Override scheduler” option ON for the moment; CSparc v 4.1.2).


Please can you post a screenshot of the job’s Inputs and Parameters tab.

Sure, here is it:

Hi @ncoudray, was the upstream job’s particles output empty when the 3D Flex Reconstruct job started? Although the override scheduler option lets you use outputs from running 3D Flex Train jobs, that upstream job has to have reached at least one model checkpoint to output the processed particles.

I am not sure in terms of epochs/checkpoints, but there were about 3,000 out of about 10,0000 iterations done in one of my runs.
I ended up waiting until the training stops, and the reconstruction worked that way though.

After looking into it a bit more, I think the issue is actually that 3D Flex Reconstruct uses passthrough outputs from the particles output group of the 3D Flex Train job (i.e. alignments3D), but the metadata for passthroughs isn’t compiled until the job completes.

For now, to run reconstruct with override scheduler you can connect the particles output from the upstream 3D Flex Data Prep job (since all the output slots you need for reconstruct are originally from there)

ok, thanks a lot for having looks in to this