I implemented the original version in Biojava but I don't know if it is still the same one being used. The original just used the pKa's of the amino acids and computed the pI by assuming that each AA ionised independently of the others. The pI was the pH at which the next charge was zero. The pKa's used were the same as those used in GCG.