Once you've looked into that code, you'll realize that you get data "as if it's coming from the disk drive". That's only half the IPF information. I'd need at least one more information, and that's "where does the track start" (that's not necessarily at the index pulse).
Another thing is that IPF data contains the info "there are weak bits on the track". I'd have to take the data and read it multiple times from the IPF decoder in order to compare the sets of data. Why isnt there some bit in a data structure that says "stable or weak track"? The info is there, just pass it on.