Idiot me!!! GP ObsOp requires input vector in transformed coordinates. The neat way to do this is to have an additional attribute on the ObsOp class that tells state.cost whether to use transformed or untransformed units
Some minor bugfixes to do with where vector elements go. Note that the create_emulators method now does the training in transformed units