sh.pp.cell_weights should get a batch_key parameter to perform deconvolution per dataset rather than all cells together.
By patient would also be thinkable, but not every single-cell patient necessarily is a good representation of the available cell-types, therefore, I think by dataset would be better.