Clarification on unpaired data smoothing during MultiVI `training_step()`?

@Tal_Ashuach, thanks providing your fascinating MultiVI preprint! I just have a few questions related to the method described and the current implementation in scvi-tools.

From the last paragraph of 4.1 in the preprint, it looks like the sample Z_c is a smoothing over samples from Z_c^A and Z_c^R. Similarly, the joint in eq. 3 of the preprint seems to be defined over independent z^R and z^A.

Can you please explain why qz_m and qz_v appear to already be mixed values returned by MULTIVAE.mix_modalities() which is called during module.training_step()module.inference()?

Thanks again for creating such an awesome package!