We discussed this before, and I still don't know exactly what PCompositeModel does.  The explanation in email was:

- PCompositeModel applies each model to the input data, takes the difference between the result and the input and adds the sum of all deltas to the input. This is a common operation with distortion corrections and the above equation is meant to represent these operations, not to be mathematically elegant. 

Would it be possible to write down a mathematically (or programmatically) correct statement of what PCompositeModel does?  When you write `y = x + (g1(x) - x) ...` my parser just shuts down because `y` and `x` may have entirely different units so the subtraction / addition operation is not meaningful.  So what I want to know is what is the model output `y` as a function of `x` given the two functions `g1` and `p1`.  Assume that the data being fit with the model is called `y_data`.