def z_link_func(x, data=mydata): stim = (np.asarray(dmatrix('0 + C(s, [[0], [1]])', {'s': data.stimulus.loc[x.index]})) ) # Apply z = (1 - x) to flip them along 0.5 z_flip = stim - x # The above inverts those values we do not want to flip, # so invert them back z_flip[stim == 0] *= -1 return z_flip