Good questions - the number of modes in general can be set as high as possible before running into memory errors or “artefacts” (explained below). The algorithm will construct the top-K eigenvectors in terms of their eigenvalues, so theoretically the results of asking for K or K+1 modes will be the same for the first K modes. In practice often multiple modes have very similar eigenvalues and so the order is not always the same (depends on initialization and number of iterations - default 15).
Right now we don’t print out the eigenvalues (which are the actual variance along the direction of each eigenvector) but you can see the “spread” of particles along each direction in the “reaction coordinate” plots. There is an actual quantification possible of the eigenvalues to determine their significance, and that quantification essentially involves comparing the eigenvalues to the estimated noise spectrum of the images, and if the eigenvalue is significantly larger than noise, it is significant. However right now in the first version, we don’t use/compute the noise model so this will be upcoming.
The lambda parameter you mention is a regularizer that theoretically should not be necessary but in practice there seems to sometimes be a numerical stability/precision issue which causes the algorithm to diverge and create artefacts (very obvious streaking - see image) if lambda is not large enough. If you do see this streaking, then lambda should be increased by a fator of 10,100,1000 etc until the streaking is gone. We’re hoping to sort out the root cause of this so that lambda will no longer be needed.
Other parameters I would suggest trying to change are the filtering options - depending on the amount of variability/motion, it’s helpful to filter to around the same resolution as the size of motion. Eg. 5A motion means filter to ~5A. The number of iterations should typically not need to be higher than 15, but may be worth playing with. Masking is by far the most important choice, as the presence/absence of a variable domain within the mask will completely change what the top-K eigenvectors are.
Hope this helps!