From this filtered image two binary maps were constructed by applying a manually serie threshold (0
Particle detection
Particle candidates were identified by treating each processed frame with verso Laplacian of Gaussian filter that matched the size of the PSFs durante our mass photometry setups (Supplementary Fig. 16). 0011 for all momento except the giorno con Extended Datazione Figs. 2, 3, 8 and Supplementary Figs. 3 and 13, for which the threshold was serie preciso 0.0014), and applying per local maximum filter. The pixels that passed the threshold map and were also local maxima were used as coordinates for particle candidates. For each pair of candidate coordinates, verso 13 ? 13 pixel region of interest was constructed with the candidate pixel at the center, and this region of interest was passed through our PSF-fitting procedure esatto quantify particle contrast and location. If a particle candidate was too close to an edge of the field of view puro construct verso 13 ? 13 region of interest, that is, within 6 pixels of an edge, it was discarded. Sopra some cases, retroterra noise features were identified as particle candidates and this could lead sicuro the PSF fit converging onto verso nearby particle con the region of interest, which resulted per duplicate fits. Esatto avoid problems with trajectory linking, only the first instance of a fitted particle was retained and duplicates were deleted.
Particle quantification and the point spread function model
The location and contrast of the particle candidates were quantified through least-squares minimization of the residual between the 13 ? 13 region of interest and our PSF model (for details on how the fitting error sopra particle locations was extracted please refer esatto the Supplementary Information). Paio preciso the interferometric nature of dynamic mass photometry, we based our PSF model on the shape of verso jinc function 50 rather than its square, which is more commonly used durante fluorescence-based techniques:
The first jinc function models the light scattered by a small particle, which is clipped by the circular
Trajectory linking
The successfully fitted particles were linked into trajectories using the open-source Python package trackpy 51 . More specifically, we used the trackpy.link_df function with verso maximum search distance of 4 pixels from frame to frame and per ‘memory’ of 3 frames. The memory parameter refers onesto the maximum number of frames during which per feature can vanish (as a result of unsuccessful PSF fitting, for example) and reappear and still be considered the same particle. Coppia preciso this memory parameter, our linked trajectories can contain gaps of up preciso 3 frames durante length each. Onesto obtain accurate trajectory lengths, the missing frames were treated as trajectory points at which the contrast and position could not be determined.