ABO-veriryhmä -alleelien maximum likelihood -estimaatit. Ohjelman ns. lähdekoodi on tässä. En millään saa ohjelmaa toimimaan itsenäisesti verkossa, mutta normaalisti riittää viisi kierrosta, joten voit laskea sen käsinkin.

CLS
 
INPUT "A "; FA
INPUT "B "; FB
INPUT "AB "; FAB
INPUT "O  "; FO
 
s2 = FO + FA + FB + FAB
 
r1 = SQR(FO / s2)
PRINT "R1  "; r1
p1 = 1 - SQR((FB + FO) / s2)
q1 = 1 - SQR((FA + FO) / s2)
PRINT "P1  "; p1
PRINT "Q1  "; q1
PRINT
 
s1 = r1 + p1 + q1
 
r2 = r1 / s1
p2 = p1 / s1
q2 = q1 / s1
 
FOR i = 1 TO 50
'E-syklin alku
p3 = p2
r3 = r2
q3 = q2
 
x1 = FA * ((p2 * p2) / (p2 * p2 + p2 * r2 * 2))
x2 = FA * ((p2 * r2 * 2) / (p2 * p2 + p2 * r2 * 2))
x3 = FB * ((q2 * q2) / (q2 * q2 + q2 * r2 * 2))
x4 = FB * ((q2 * r2 * 2) / (q2 * q2 + q2 * r2 * 2))
x5 = FO
x6 = FAB
 
p2 = (x1 * 2 + x2 + x6) / (s2 * 2)
q2 = (x3 * 2 + x4 + x6) / (s2 * 2)
r2 = (x5 * 2 + x2 + x4) / (s2 * 2)
 
er = (ABS(p3 - p2) + ABS(r3 - r2) + ABS(q3 - q2))
 
IF i = 1 THEN GOTO 100 ELSE GOTO 200
 
100 PRINT "alleelifrekvenssin muutos iteroitaessa"
 
200 PRINT "Kierros "; i; "   ";
    PRINT USING "#.#######"; er
 
IF er < .000001 THEN GOTO 300
NEXT i
300
PRINT
PRINT "F i  "; r2
PRINT "F Ia "; p2
PRINT "F Ib "; q2
 
END