pyjuice.queries.sample

pyjuice.queries.sample(pc: TensorCircuit, num_samples: int | None = None, conditional: bool = False, _sample_input_ns: bool = True, _do_calibration: bool = False, **kwargs)

Draw samples from a PC by performing a top-down ancestral sampling pass.

For unconditional sampling, num_samples must be specified. For conditional sampling (conditional = True), run a forward pass on the evidence first (e.g., via marginal()); the sampler then reuses the cached pc.node_mars and draws one sample per example in that batch, so num_samples is ignored.

Parameters:
  • pc (TensorCircuit) – the input PC

  • num_samples (Optional[int]) – number of samples to draw; required for unconditional sampling, ignored when conditional = True

  • conditional (bool) – whether to sample conditioned on the evidence cached by a preceding forward pass

Returns:

a tensor of samples of size [num_samples, num_vars]

Return type:

torch.Tensor