  A spin system is a framework in which the vertices of a graph are assigned
spins from a finite set. The interactions between neighbouring spins give rise
to weights, so a spin assignment can also be viewed as a weighted graph
homomorphism. The problem of approximating the partition function (the
aggregate weight of spin assignments) or of sampling from the resulting
probability distribution is typically intractable for general graphs.
  In this work, we consider arbitrary spin systems on bipartite expander
$\Delta$-regular graphs, including the canonical class of bipartite random
$\Delta$-regular graphs. We develop fast approximate sampling and counting
algorithms for general spin systems whenever the degree and the spectral gap of
the graph are sufficiently large. Our approach generalises the techniques of
Jenseen et al. and Chen et al. by showing that typical configurations on
bipartite expanders correspond to "bicliques" of the spin system; then, using
suitable polymer models, we show how to sample such configurations and
approximate the partition function in $\tilde{O}(n^2)$ time, where $n$ is the
size of the graph.
