import numpy as np
import xarray as xr
from javelin.structure import Structure
from javelin.energies import IsingEnergy
from javelin.modifier import SwapOccupancy
from javelin.fourier import Fourier
from javelin.mc import MC
# >>>
n=100
structure = Structure(symbols=np.random.choice(['Na','Cl'],n**2), positions=[(0., 0., 0.)]*n**2, unitcell=5)
structure.reindex([n,n,1,1])
e1 = IsingEnergy(11,17,J=-0.5)
nl = structure.get_neighbors()[0,-1]
mc = MC()
mc.add_modifier(SwapOccupancy(0))
mc.temperature = 1
mc.cycles = 50
mc.add_target(nl, e1)
out = mc.run(structure)  # doctest: +SKIP
f=Fourier()
f.grid.bins = 121,121,1
f.grid.r1 = -3,3
f.grid.r2 = -3,3
f.average = True
results=f.calc(out)  # doctest: +SKIP
# plot
fig, axs = plt.subplots(2, 1, figsize=(6.4,9.6))  # doctest: +SKIP
xr.DataArray.from_series(out.atoms.Z).plot(ax=axs[0])  # doctest: +SKIP
results.plot(ax=axs[1])  # doctest: +SKIP
