Robert Warmbier: No promises this is any use for you, but since it sounds like you are going in a similar direction with something, this was my solution for it. Admittedly it is not well thought out, but it worked for me.
I met a issue about structural relaxation. If i FixedPlane, and I need ExpCellFilter also, it will be wrong with this
"RuntimeError: VASP requires that the direction of FixedPlane constraints is parallel with one of the cell axis" when I output this structure by atoms.atoms.write(filename='./out.vasp')